Index: trunk/globals.php =================================================================== diff -u -N --- trunk/globals.php (revision 6093) +++ trunk/globals.php (revision 0) @@ -1,2096 +0,0 @@ -\n") { - $resave = true; - } - $ln++; - $line = trim($line); - $line = eregi_replace(';[.]*','',$line); - if(strlen($line) > 0) { - //echo $line . " - "; - if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) { - //echo 'section'; - $section = substr($line,1,(strlen($line)-2)); - if ($parse_section) { - $retval[$section] = array(); - } - continue; - } elseif(eregi('=',$line)) { - //echo 'main element'; - list($key,$val) = explode(' = ',$line); - if (!$parse_section) { - $retval[trim($key)] = str_replace('"', '', $val); - } - else { - $retval[$section][trim($key)] = str_replace('"', '', $val); - } - } //end if - //echo '
'; - } //end if - } //end foreach - if ($resave) { - $fp = fopen($file, "w"); - reset($contents); - fwrite($fp,'<'.'?'.'php die() ?'.">\n\n"); - foreach($contents as $line) fwrite($fp,"$line"); - fclose($fp); - } - - return $retval; - } -} - - $vars = parse_portal_ini(FULL_PATH.'/config.php'); - if ($vars) { - foreach ($vars as $config_key => $config_value) { - $GLOBALS['g_'.$config_key] = $config_value; - } - unset($config_key, $config_value); - } - -/*list the tables which contain item data */ -$ItemTables = array(); - -$KeywordIgnore = array(); -global $debuglevel; - -$debuglevel = 0; -//$GLOBALS['debuglevel'] = 0; - -/*New, Hot, Pop field values */ -define('NEVER', 0); -define('ALWAYS', 1); -define('AUTO', 2); - -/*Status Values */ -if( !defined('STATUS_DISABLED') ) define('STATUS_DISABLED', 0); -if( !defined('STATUS_ACTIVE') ) define('STATUS_ACTIVE', 1); -if( !defined('STATUS_PENDING') ) define('STATUS_PENDING', 2); - -$LogLevel = 0; -$LogFile = NULL; - -/** - * Returns reference to database connection - * - * @param bool $new_type Return Kernel4 or in-portal connection object - * @return kDBConnection - */ -function &GetADODBConnection($new_type = false) -{ - static $DB = null; - - global $g_DBType, $g_DBHost, $g_DBUser, $g_DBUserPassword, $g_DBName, $g_DebugMode; - global $ADODB_FETCH_MODE, $ADODB_COUNTRECS, $ADODB_CACHE_DIR, $pathtoroot; - - if ($new_type) { - $application =& kApplication::Instance(); - return $application->GetADODBConnection(); - } - - if( !isset($DB) && strlen($g_DBType) > 0 ) - { - $DB = ADONewConnection($g_DBType); - $connected = $DB->Connect($g_DBHost, $g_DBUser, $g_DBUserPassword, $g_DBName); - if(!$connected) die("Error connecting to database $g_DBHost
\n"); - - $ADODB_CACHE_DIR = $pathtoroot."cache"; - $ADODB_FETCH_MODE = 2; - $ADODB_COUNTRECS = false; - $DB->debug = defined('ADODB_OUTP') ? 1 : 0; - $DB->cacheSecs = 3600; - $DB->Execute('SET SQL_BIG_SELECTS = 1'); - } - elseif( !strlen($g_DBType) ) - { - global $rootURL; - echo 'In-Portal is probably not installed, or configuration file is missing.
'; - echo 'Please use the installation script to fix the problem.

'; - if ( !preg_match('/admin/', __FILE__) ) $ins = 'admin/'; - - echo 'Go to installation script

'; - flush(); - exit; - } - return $DB; -} - -function GetNextResourceId($Increment=1) -{ - global $objModules, $pathtoroot; - $table_name = GetTablePrefix().'IdGenerator'; - - $db = &GetADODBConnection(); - - // dummy protection: get maximal resource id used actually and fix last_id used - $max_resourceid = 0; - - $m = GetModuleArray(); - foreach($m as $key=>$value) - { - $path = $pathtoroot. $value."admin/include/parser.php"; - if(file_exists($path)) - { - include_once($path); - } - } - - $table_info = $objModules->ExecuteFunction('GetModuleInfo', 'dupe_resourceids'); - $sql_template = 'SELECT MAX(ResourceId) FROM '.GetTablePrefix().'%s'; - - foreach($table_info as $module_name => $module_info) - { - foreach($module_info as $module_sub_info) - { - $sql = sprintf($sql_template,$module_sub_info['Table']); - $tmp_resourceid = $db->GetOne($sql); - if($tmp_resourceid > $max_resourceid) $max_resourceid = $tmp_resourceid; - } - } - - // update lastid to be next resourceid available - $db->Execute('LOCK TABLES '.$table_name.' WRITE'); - - $last_id = $db->GetOne('SELECT lastid FROM '.$table_name); - if ($last_id - 1 > $max_resourceid) $max_resourceid = $last_id - 1; - - $id_diff = $db->GetOne('SELECT '.$max_resourceid.' + 1 - lastid FROM '.$table_name); - if($id_diff) $Increment += $id_diff; - - $sql = 'UPDATE '.$table_name.' SET lastid = lastid + '.$Increment; // set new id in db - $db->Execute($sql); - - $val = $db->GetOne('SELECT lastid FROM '.$table_name); - if($val === false) - { - $db->Execute('INSERT INTO '.$table_name.' (lastid) VALUES ('.$Increment.')'); - $val = $Increment; - } - $db->Execute('UNLOCK TABLES'); - - return $val - $Increment + $id_diff; // return previous free id (-1) ? -} - -function AddSlash($s) -{ - if(substr($s,-1) != "/") - { - return $s."/"; - } - else - return $s; -} - -function StripNewline($s) -{ - $bfound = false; - while (strlen($s)>0 && !$bfound) - { - if(ord(substr($s,-1))<32) - { - $s = substr($s,0,-1); - } - else - $bfound = true; - } - return $s; -} - -function DeleteElement($array, $indice) -{ - for($i=$indice;$i -1) - unset($haystack[$gotcha]); -} - -function TableCount($TableName, $where="",$JoinCats=1) -{ - $db = &GetADODBConnection(); - if(!$JoinCats) - { - $sql = "SELECT count(*) as TableCount FROM $TableName"; - } - else - $sql = "SELECT count(*) as TableCount FROM $TableName INNER JOIN ".GetTablePrefix()."CategoryItems ON ".GetTablePrefix()."CategoryItems.ItemResourceId=$TableName.ResourceId"; - if(strlen($where)>0) - $sql .= " WHERE ".$where; - - $rs = $db->Execute($sql); - -// echo "SQL TABLE COUNT: ".$sql."
\n"; - - $res = $rs->fields["TableCount"]; - return $res; -} - -Function QueryCount($sql) -{ - $sql = preg_replace('/SELECT(.*)FROM[ \n\r](.*)/is','SELECT COUNT(*) AS TableCount FROM $2', $sql); - $sql = preg_replace('/(.*)[ \n\r]LIMIT[ \n\r](.*)/is','$1', $sql); - $sql = preg_replace('/(.*)ORDER BY(.*)/is','$1', $sql); - - //echo $sql; - - $db =& GetADODBConnection(); - return $db->GetOne($sql); -} - -function GetPageCount($ItemsPerPage,$NumItems) -{ - if($ItemsPerPage==0 || $NumItems==0) - { - return 1; - } - $value = $NumItems/$ItemsPerPage; - return ceil($value); -} - - -/** - * @return string - * @desc Returns database table prefix entered while installation -*/ -function GetTablePrefix() -{ - global $g_TablePrefix; - - return $g_TablePrefix; -} - -function TableHasPrefix($t) -{ - $pre = GetTablePrefix(); - - if(strlen($pre)>0) - { - if(substr($t,0,strlen($pre))==$pre) - { - return TRUE; - } - else - return FALSE; - } - else - return TRUE; -} - -function AddTablePrefix($t) -{ - if(!TableHasPrefix($t)) - $t = GetTablePrefix().$t; - - return $t; -} - -function ThisDomain() -{ - global $objConfig, $g_Domain; - - if($objConfig->Get("DomainDetect")) - { - $d = $_SERVER['HTTP_HOST']; - } - else - $d = $g_Domain; - - return $d; -} - -function GetIndexUrl($secure=0) -{ - global $indexURL, $rootURL, $secureURL; - - if ( class_exists('kApplication') ) - { - $application =& kApplication::Instance(); - return $application->BaseURL().'index.php'; - } - - switch($secure) - { - case 0: - $ret = $indexURL; - break; - - case 1: - $ret = $secureURL."index.php"; - break; - - case 2: - $ret = $rootURL."index.php"; - break; - - default: - $ret = $i; - break; - } - return $ret; -} - -function GetLimitSQL($Page,$PerPage) -{ - if($Page<1) - $Page=1; - - if(is_numeric($PerPage)) - { - if($PerPage==0) - $PerPage = 20; - $Start = ($Page-1)*$PerPage; - $limit = "LIMIT ".$Start.",".$PerPage; - } - else - $limit = NULL; - return $limit; -} - -function filelist ($currentdir, $startdir=NULL,$ext=NULL) -{ - global $pathchar; - - //chdir ($currentdir); - - // remember where we started from - if (!$startdir) - { - $startdir = $currentdir; - } - - $d = @opendir($currentdir); - - $files = array(); - if(!$d) - return $files; - //list the files in the dir - while (false !== ($file = readdir($d))) - { - if ($file != ".." && $file != ".") - { - if (is_dir($currentdir."/".$file)) - { - // If $file is a directory take a look inside - $a = filelist ($currentdir."/".$file, $startdir,$ext); - if(is_array($a)) - $files = array_merge($files,$a); - } - else - { - if($ext!=NULL) - { - $extstr = stristr($file,".".$ext); - if(strlen($extstr)) - $files[] = $currentdir."/".$file; - } - else - $files[] = $currentdir.'/'.$file; - } - } - } - - closedir ($d); - - return $files; -} - -function DecimalToBin($dec,$WordLength=8) -{ - $bits = array(); - - $str = str_pad(decbin($dec),$WordLength,"0",STR_PAD_LEFT); - for($i=$WordLength;$i>0;$i--) - { - $bits[$i-1] = (int)substr($str,$i-1,1); - } - return $bits; -} -/* -function inp_escape($in, $html_enable=0) -{ - $out = stripslashes($in); - $out = str_replace("\n", "\n^br^", $out); - if($html_enable==0) - { - $out=ereg_replace("<","<",$out); - $out=ereg_replace(">",">",$out); - $out=ereg_replace("\"",""",$out); - $out = str_replace("\n^br^", "\n
", $out); - } - else - $out = str_replace("\n^br^", "\n", $out); - $out=addslashes($out); - - return $out; -} -*/ -function inp_escape($var,$html=0) -{ - if($html)return $var; - if(is_array($var)) - foreach($var as $k=>$v) - $var[$k]=inp_escape($v); - else -// $var=htmlspecialchars($var,ENT_NOQUOTES); - $var=strtr($var,Array('<'=>'<','>'=>'>',)); - return $var; -} -function inp_striptags($var,$html=0) -{ - if($html)return $var; - if(is_array($var)) - foreach($var as $k=>$v) - $var[$k]=inp_striptags($v); - else - $var=strip_tags($var); - return $var; -} - -function inp_unescape($in) -{ -// if (get_magic_quotes_gpc()) - return $in; - $out=stripslashes($in); - return $out; -} - -function inp_textarea_unescape($in) -{ -// if (get_magic_quotes_gpc()) - return $in; - $out=stripslashes($in); - $out = str_replace("\n
", "\n", $out); - return $out; -} - -function HighlightKeywords($Keywords, $html, $OpenTag="", $CloseTag="") -{ - global $objConfig; - - if(!strlen($OpenTag)) - $OpenTag = ""; - if(!strlen($CloseTag)) - $CloseTag = ""; - - $r = preg_split('((>)|(<))', $html, -1, PREG_SPLIT_DELIM_CAPTURE); - - foreach ($Keywords as $k) { - for ($i = 0; $i < count($r); $i++) { - if ($r[$i] == "<") { - $i++; continue; - } - $r[$i] = preg_replace('/('.preg_quote($k, '/').')/i', "$OpenTag\\1$CloseTag", $r[$i]); - } - } - return join("", $r); -} - -/* -function HighlightKeywords($Keywords,$html, $OpenTag="", $CloseTag="") -{ - global $objConfig; - - if(!strlen($OpenTag)) - $OpenTag = ""; - if(!strlen($CloseTag)) - $CloseTag = ""; - $ret = strip_tags($html); - - foreach ($Keywords as $k) - { - if(strlen($k)) - { - //$html = str_replace("<$k>", ":#:", $html); - //$html = str_replace("", ":##:", $html); - //$html = strip_tags($html); - if ($html = preg_replace("/($k)/Ui","$OpenTag\\1$CloseTag", $html)) - //if ($html = preg_replace("/(>[^<]*)($k)([^<]*< )/Ui","$OpenTag\\1$CloseTag", $html)) - $ret = $html; - //$ret = str_replace(":#:", "<$k>", $ret); - //$ret = str_replace(":##:", "", $ret); - } - } - return $ret; -} -*/ -function ExtractDatePart($part, $datestamp) -{ - if ($datestamp <= 0) return ''; - - $formats = Array( 'month' => 'm', 'day' => 'd', 'year' => 'Y', - 'time_24hr' => 'H:i', 'time_12hr' => 'g:i a', 'time' => GetTimeFormat(), 'date' => GetDateFormat() ); - - $format = isset($formats[$part]) ? $formats[$part] : $part; - return adodb_date($format, $datestamp); -} - -function GetLocalTime($TimeStamp, $TargetZone = null) -{ - global $objConfig; - - if ($TargetZone == null) { - $TargetZone = $objConfig->Get('Config_Site_Time'); - } - - $server = $objConfig->Get('Config_Server_Time'); - if ($TargetZone != $server) { - $offset = ($server - $TargetZone) * -1; - $TimeStamp = $TimeStamp + (3600 * $offset); - } - - return $TimeStamp; -} - -function _unhtmlentities ($string) -{ - $trans_tbl = get_html_translation_table (HTML_ENTITIES); - $trans_tbl = array_flip ($trans_tbl); - return strtr ($string, $trans_tbl); -} - -function getLastStr($hay, $need){ - $getLastStr = 0; - $pos = strpos($hay, $need); - if (is_int ($pos)){ //this is to decide whether it is "false" or "0" - while($pos) { - $getLastStr = $getLastStr + $pos + strlen($need); - $hay = substr ($hay , $pos + strlen($need)); - $pos = strpos($hay, $need); - } - return $getLastStr - strlen($need); - } else { - return -1; //if $need wasn´t found it returns "-1" , because it could return "0" if it´s found on position "0". - } -} - -// --- bbcode processing function: begin ---- -function PreformatBBCodes($text) -{ - // convert phpbb url bbcode to valid in-bulletin's format - // 1. urls - $text = preg_replace('/\[url=(.*)\](.*)\[\/url\]/Ui','[url href="$1"]$2[/url]',$text); - $text = preg_replace('/\[url\](.*)\[\/url\]/Ui','[url href="$1"]$1[/url]',$text); - // 2. images - $text = preg_replace('/\[img\](.*)\[\/img\]/Ui','[img src="$1" border="0"][/img]',$text); - // 3. color - $text = preg_replace('/\[color=(.*)\](.*)\[\/color\]/Ui','[font color="$1"]$2[/font]',$text); - // 4. size - $text = preg_replace('/\[size=(.*)\](.*)\[\/size\]/Ui','[font size="$1"]$2[/font]',$text); - // 5. lists - $text = preg_replace('/\[list(.*)\](.*)\[\/list\]/Uis','[ul]$2[/ul]',$text); - // 6. email to link - $text = preg_replace('/\[email\](.*)\[\/email\]/Ui','[url href="mailto:$1"]$1[/url]',$text); - //7. b tag - $text = preg_replace('/\[(b|i|u):(.*)\](.*)\[\/(b|i|u):(.*)\]/Ui','[$1]$3[/$4]',$text); - //8. code tag - $text = preg_replace('/\[code:(.*)\](.*)\[\/code:(.*)\]/Uis','[code]$2[/code]',$text); - return $text; -} - -/** - * @return string - * @param string $BBCode - * @param string $TagParams - * @param string $TextInside - * @param string $ParamsAllowed - * @desc Removes not allowed params from tag and returns result -*/ -function CheckBBCodeAttribs($BBCode, $TagParams, $TextInside, $ParamsAllowed) -{ - // $BBCode - bbcode to check, $TagParams - params string entered by user - // $TextInside - text between opening and closing bbcode tag - // $ParamsAllowed - list of allowed parameter names ("|" separated) - $TagParams=str_replace('\"','"',$TagParams); - $TextInside=str_replace('\"','"',$TextInside); - if( $ParamsAllowed && preg_match_all('/ +([^=]*)=["\']?([^ "\']*)["\']?/is',$TagParams,$params,PREG_SET_ORDER) ) - { - $ret = Array(); - foreach($params as $param) - { - // remove spaces in both parameter name & value & lowercase parameter name - $param[1] = strtolower(trim($param[1])); // name lowercased - if(($BBCode=='url')&&($param[1]=='href')) - if(false!==strpos(strtolower($param[2]),'script:')) - return $TextInside; -// $param[2]='about:blank'; - if( isset($ParamsAllowed[ $param[1] ]) ) - $ret[] = $param[1].'="'.$param[2].'"'; - } - $ret = count($ret) ? ' '.implode(' ',$ret) : ''; - return '<'.$BBCode.$ret.'>'.$TextInside.''; - } - else - return '<'.$BBCode.'>'.$TextInside.''; - return false; -} -function ReplaceBBCode($text) -{ - global $objConfig; - // convert phpbb bbcodes to in-bulletin bbcodes - $text = PreformatBBCodes($text); - -// $tag_defs = 'b:;i:;u:;ul:type|align;font:color|face|size;url:href;img:src|border'; - - $tags_defs = $objConfig->Get('BBTags'); - foreach(explode(';',$tags_defs) as $tag) - { - $tag = explode(':',$tag); - $tag_name = $tag[0]; - $tag_params = $tag[1]?array_flip(explode('|',$tag[1])):0; - $text = preg_replace('/\['.$tag_name.'(.*)\](.*)\[\/'.$tag_name.' *\]/Uise','CheckBBCodeAttribs("'.$tag_name.'",\'$1\',\'$2\',$tag_params);', $text); - } - - // additional processing for [url], [*], [img] bbcode - $text = preg_replace('/(.*)<\/url>/Usi','$1',$text); - $text = preg_replace('/(.*)<\/font>/Usi','$1',$text); // skip empty fonts - $text = str_replace( Array('','[*]'), - Array('','
  • '), - $text); - - // bbcode [code]xxx[/code] processing - $text = preg_replace('/\[code\](.*)\[\/code\]/Uise', "ReplaceCodeBBCode('$1')", $text); - return $text; -} -function leadSpace2nbsp($x) -{ - return "\n".str_repeat(' ',strlen($x)); -} -function ReplaceCodeBBCode($input_string) -{ - $input_string=str_replace('\"','"',$input_string); - $input_string=$GLOBALS['objSmileys']->UndoSmileys(_unhtmlentities($input_string)); - $input_string=trim($input_string); - $input_string=inp_htmlize($input_string); - $input_string=str_replace("\r",'',$input_string); - $input_string = str_replace("\t", " ", $input_string); - $input_string = preg_replace('/\n( +)/se',"leadSpace2nbsp('$1')",$input_string); - $input_string='
    '.$input_string.'
    '; -// $input_string=''; - return $input_string; - - if(false!==strpos($input_string,'<'.'?')) - { - $input_string=str_replace('<'.'?','<'.'?php',$input_string); - $input_string=str_replace('<'.'?phpphp','<'.'?php',$input_string); - $input_string=@highlight_string($input_string,1); - } - else - { - $input_string = @highlight_string('<'.'?php'.$input_string.'?'.'>',1); - $input_string = str_replace('<?php', '', str_replace('?>', '', $input_string)); - } - return str_replace('
    ','',$input_string); - -} - - -// --- bbcode processing function: end ---- - -function GetMinValue($Table,$Field, $Where=NULL) -{ - $ret = 0; - $sql = "SELECT min($Field) as val FROM $Table "; - if(strlen($where)) - $sql .= "WHERE $Where"; - $ado = &GetADODBConnection(); - $rs = $ado->execute($sql); - if($rs) - $ret = (int)$rs->fields["val"]; - return $ret; -} - - -if (!function_exists( 'getmicrotime' ) ) { - function getmicrotime() - { - list($usec, $sec) = explode(" ",microtime()); - return ((float)$usec + (float)$sec); - } -} - -function SetMissingDataErrors($f) -{ - global $FormError; - - $count = 0; - if(is_array($_POST)) - { - if(is_array($_POST["required"])) - { - foreach($_POST["required"] as $r) - { - $found = FALSE; - if(is_array($_FILES)) - { - if( isset($_FILES[$r]) && $_FILES[$r]['size'] > 0 ) $found = TRUE; - } - - if(!strlen(trim($_POST[$r])) && !$found) - { - $count++; - - if (($r == "dob_day") || ($r == "dob_month") || ($r == "dob_year")) - $r = "dob"; - - $tag = isset($_POST["errors"]) ? $_POST["errors"][$r] : ''; - if(!strlen($tag)) - $tag = "lu_ferror_".$f."_".$r; - $FormError[$f][$r] = language($tag); - } - } - } - } - return $count; -} - -function makepassword($length=10) -{ - $pass_length=$length; - - $p1=array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'); - $p2=array('a','e','i','o','u'); - $p3=array('1','2','3','4','5','6','7','8','9'); - $p4=array('(','&',')',';','%'); // if you need real strong stuff - - // how much elements in the array - // can be done with a array count but counting once here is faster - - $s1=21;// this is the count of $p1 - $s2=5; // this is the count of $p2 - $s3=9; // this is the count of $p3 - $s4=5; // this is the count of $p4 - - // possible readable combinations - - $c1='121'; // will be like 'bab' - $c2='212'; // will be like 'aba' - $c3='12'; // will be like 'ab' - $c4='3'; // will be just a number '1 to 9' if you dont like number delete the 3 -// $c5='4'; // uncomment to active the strong stuff - - $comb='4'; // the amount of combinations you made above (and did not comment out) - - - - for ($p=0;$p<$pass_length;) - { - mt_srand((double)microtime()*1000000); - $strpart=mt_rand(1,$comb); - // checking if the stringpart is not the same as the previous one - if($strpart<>$previous) - { - $pass_structure.=${'c'.$strpart}; - - // shortcutting the loop a bit - $p=$p+strlen(${'c'.$strpart}); - } - $previous=$strpart; - } - - - // generating the password from the structure defined in $pass_structure - for ($g=0;$g0) - $elapsed = getmicrotime() - $last; - - if(strlen($el)>10) - $el = substr($el,0,10); - $indent = str_repeat(" ",$LogLevel); - $text = str_pad($text,$LogLevel,"==",STR_PAD_LEFT); - $LogData .= "$el:". round($elapsed,6).":$indent $text"; - $last = getmicrotime(); - if($writefile==TRUE && is_writable($g_LogFile)) - { - if(!$LogFile) - { - if(file_exists($g_LogFile)) - unlink($g_LogFile); - $LogFile=@fopen($g_LogFile,"w"); - } - if($LogFile) - { - fputs($LogFile,$LogData); - } - } - } -} - -function ValidEmail($email) -{ - if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email)) - { - return TRUE; - } - else - { - return FALSE; - } -} - -function language($phrase,$LangId=0) -{ - global $objSession, $objLanguageCache, $objLanguages; - - if ($LangId == 0) { - $LangId = $objSession->Get('Language'); - } - - if ($LangId == 0) { - $LangId = $objLanguages->GetPrimary(); - } - - return $objLanguageCache->GetTranslation($phrase,$LangId); -} - -function admin_language($phrase,$lang=0,$LinkMissing=FALSE) -{ - global $objSession, $objLanguageCache, $objLanguages; - - //echo "Language passed: $lang
    "; - - if($lang==0) - $lang = $objSession->Get("Language"); - - //echo "Language from session: $lang
    "; - - if($lang==0) - $lang = $objLanguages->GetPrimary(); - - //echo "Language after primary: $lang
    "; - //echo "Phrase: $phrase
    "; - $translation = $objLanguageCache->GetTranslation($phrase,$lang); - if($LinkMissing && substr($translation,0,1)=="!" && substr($translation,-1)=="!") - { - $res = "
    $translation"; - return $res; - } - else - return $translation; -} - -function prompt_language($phrase,$lang=0) -{ - return admin_language($phrase,$lang,TRUE); -} - -function GetPrimaryTranslation($Phrase) -{ - global $objLanguages; - - $l = $objLanguages->GetPrimary(); - return language($Phrase,$l); -} - -function CategoryNameCount($ParentId,$Name) -{ - $cat_table = GetTablePrefix()."Category"; - $sql = "SELECT Name from $cat_table WHERE ParentId=$ParentId AND "; - $sql .="(Name LIKE '".addslashes($Name)."' OR Name LIKE 'Copy of ".addslashes($Name)."' OR Name LIKE 'Copy % of ".addslashes($Name)."')"; - - $ado = &GetADODBConnection(); - $rs = $ado->Execute($sql); - $ret = array(); - while($rs && !$rs->EOF) - { - $ret[] = $rs->fields["Name"]; - $rs->MoveNext(); - } - return $ret; -} - -function CategoryItemNameCount($CategoryId,$Table,$Field,$Name) -{ - $Name=addslashes($Name); - $cat_table = GetTablePrefix()."CategoryItems"; - $sql = "SELECT $Field FROM $Table INNER JOIN $cat_table ON ($Table.ResourceId=$cat_table.ItemResourceId) "; - $sql .=" WHERE ($Field LIKE 'Copy % of $Name' OR $Field LIKE '$Name' OR $Field LIKE 'Copy of $Name') AND CategoryId=$CategoryId"; - //echo $sql."
    \n "; - $ado = &GetADODBConnection(); - $rs = $ado->Execute($sql); - $ret = array(); - while($rs && !$rs->EOF) - { - $ret[] = $rs->fields[$Field]; - $rs->MoveNext(); - } - return $ret; -} - -function &GetItemCollection($ItemName) -{ - global $objItemTypes; - - if(is_numeric($ItemName)) - { - $item = $objItemTypes->GetItem($ItemName); - } - else - $item = $objItemTypes->GetTypeByName($ItemName); - if(is_object($item)) - { - $module = $item->Get("Module"); - $prefix = ModuleTagPrefix($module); - $func = $prefix."_ItemCollection"; - if(function_exists($func)) - { - $var =& $func(); - } - } - return $var; -} - - -function UpdateCategoryCount($item_type,$CategoriesIds,$ListType='') -{ - global $objCountCache, $objItemTypes; - $db=&GetADODBConnection(); - if( !is_numeric($item_type) ) - { - $sql = 'SELECT ItemType FROM '.$objItemTypes->SourceTable.' WHERE ItemName=\''.$item_type.'\''; - $item_type=$db->GetOne($sql); - } - $objCountCache->EraseGlobalTypeCache($item_type); - if($item_type) - { - if(is_array($CategoriesIds)) - { - $CategoriesIds=implode(',',$CategoriesIds); - } - if (!$CategoriesIds) - { - - } - - if(!is_array($ListType)) $ListType=Array($ListType=>'opa'); - - $sql = 'SELECT ParentPath FROM '.GetTablePrefix().'Category WHERE CategoryId IN ('.$CategoriesIds.')'; - $rs = $db->Execute($sql); - $parents = Array(); - while (!$rs->EOF) - { - $tmp=$rs->fields['ParentPath']; - $tmp=substr($tmp,1,strlen($tmp)-2); - $tmp=explode('|',$tmp); - foreach ($tmp as $tmp_cat_id) { - $parents[$tmp_cat_id]=1; - } - $rs->MoveNext(); - } - $parents=array_keys($parents); - $list_types=array_keys($ListType); - foreach($parents as $ParentCategoryId) - { - foreach ($list_types as $list_type) { - $objCountCache->DeleteValue($list_type, $item_type, $ParentCategoryId, 0); // total count - $objCountCache->DeleteValue($list_type, $item_type, $ParentCategoryId, 1); // total count today - } - } - } - else - { - die('wrong item type passed to "UpdateCategoryCount"'); - } - -/* if(is_object($item)) - { - $ItemType = $item->Get("ItemType"); - - $sql = "DELETE FROM ".$objCountCache->SourceTable." WHERE ItemType=$ItemType"; - if( is_numeric($ListType) ) $sql .= " AND ListType=$ListType"; - $objCountCache->adodbConnection->Execute($sql); - } */ -} - -function ResetCache($CategoryId) -{ - global $objCountCache; - $db =& GetADODBConnection(); - $sql = 'SELECT ParentPath FROM '.GetTablePrefix().'Category WHERE CategoryId = '.$CategoryId; - $parents = $db->GetOne($sql); - $parents = substr($parents,1,strlen($parents)-2); - $parents = explode('|',$parents); - foreach($parents as $ParentCategoryId) - { - $objCountCache->DeleteValue('_', TYPE_TOPIC, $ParentCategoryId, 0); // total topic count - $objCountCache->DeleteValue('_', TYPE_TOPIC, $ParentCategoryId, 1); // total - } -} - -function UpdateModifiedCategoryCount($ItemTypeName,$CatId=NULL,$Modifier=0,$ExtraId=NULL) -{ -} - -function UpdateGroupCategoryCount($ItemTypeName,$CatId=NULL,$Modifier=0,$GroupId=NULL) -{ -} - -function GetTagCache($module,$tag,$attribs,$env) -{ - global $objSystemCache, $objSession, $objConfig; - - if($objConfig->Get("SystemTagCache") && !$objSession->Get('PortalUserId')) - { - $name = $tag; - if(is_array($attribs)) - { - foreach($attribs as $n => $val) - { - $name .= "-".$val; - } - } - $CachedValue = $objSystemCache->GetContextValue($name,$module,$env, $objSession->Get("GroupList")); - } - else - $CachedValue=""; - return $CachedValue; -} - -function SaveTagCache($module, $tag, $attribs, $env, $newvalue) -{ - global $objSystemCache, $objSession, $objConfig; - - if($objConfig->Get("SystemTagCache")) - { - $name = $tag; - if(is_array($attribs)) - { - foreach($attribs as $a => $val) - { - $name .= "-".$val; - } - } - $objSystemCache->EditCacheItem($name,$newvalue,$module,0,$env,$objSession->Get("GroupList")); - } -} - -function DeleteTagCache($name,$extraparams, $env="") -{ - global $objSystemCache, $objConfig; - - if($objConfig->Get("SystemTagCache")) - { - $where = "Name LIKE '$name%".$extraparams."'"; - if(strlen($env)) - $where .= " AND Context LIKE $env"; - $objSystemCache->DeleteCachedItem($where); - } -} - -/** - * Deletes whole tag cache for - * selected module - * - * @param string $module - * @param string $name - * @access public - */ -function DeleteModuleTagCache($module, $tagname='') -{ - global $objSystemCache, $objConfig; - - if($objConfig->Get("SystemTagCache")) - { - $where = 'Module LIKE \''.$module.'\''; - if(strlen($tagname)) - { - $where .= ' AND Name LIKE \''.$tagname.'\''; - } - $objSystemCache->DeleteCachedItem($where); - } -} - - - -/*function ClearTagCache() -{ - global $objSystemCache, $objConfig; - - if($objConfig->Get("SystemTagCache")) - { - $where = ''; - $objSystemCache->DeleteCachedItem($where); - } -}*/ - -/*function EraseCountCache() -{ -// global $objSystemCache, $objConfig; - - $db =& GetADODBConnection(); - $sql = 'DELETE * FROM '.GetTablePrefix().'CountCache'; - return $db->Execute($sql) ? true : false; -}*/ - - -function ParseTagLibrary() -{ - $objTagList = new clsTagList(); - $objTagList->ParseInportalTags(); - unset($objTagList); -} - - function GetDateFormat($LangId = 0, $is_input = false) - { - global $objLanguages; - - if (!$LangId) { - $LangId = $objLanguages->GetPrimary(); - } - - $l = $objLanguages->GetItem($LangId); - $fmt = is_object($l) ? $l->Get(($is_input ? 'Input' : '').'DateFormat') : 'm-d-Y'; - - if (getArrayValue($GLOBALS, 'FrontEnd')) { - return $fmt; - } - return preg_replace('/y+/i','Y', $fmt); - } - - function GetTimeFormat($LangId = 0, $is_input = false) - { - global $objLanguages; - - if (!$LangId) { - $LangId = $objLanguages->GetPrimary(); - } - $l = $objLanguages->GetItem($LangId); - - $fmt = is_object($l) ? $l->Get(($is_input ? 'Input' : '').'TimeFormat') : 'H:i:s'; - return $fmt; - } - -/** - * Gets one of currently selected language options - * - * @param string $optionName - * @param int $LangId - * @return string - * @access public - */ -function GetRegionalOption($optionName,$LangId=0) -{ - global $objLanguages, $objSession; - - if(!$LangId) $LangId=$objSession->Get('Language'); - if(!$LangId) $LangId=$objLanguages->GetPrimary(); - $l = $objLanguages->GetItem($LangId); - return is_object($l)?$l->Get($optionName):false; -} - -/** - * Returns formatted timestamp - * - * @param int $TimeStamp - * @param int $LangId - * @param bool $is_input use input date format instead of display date format - * @return string - */ -function LangDate($TimeStamp = null, $LangId = 0, $is_input = false) -{ - $fmt = GetDateFormat($LangId, $is_input); - return adodb_date($fmt, $TimeStamp); -} - -/** - * Returns formatted timestamp - * - * @param int $TimeStamp - * @param int $LangId - * @param bool $is_input use input time format instead of display time format - * @return string - */ -function LangTime($TimeStamp = null, $LangId = 0, $is_input = false) -{ - $fmt = GetTimeFormat($LangId, $is_input); - return adodb_date($fmt, $TimeStamp); -} - -function LangNumber($Num,$DecPlaces=NULL,$LangId=0) -{ - global $objLanguages; - - if(!$LangId) - $LangId= $objLanguages->GetPrimary(); - $l = $objLanguages->GetItem($LangId); - if(is_object($l)) - { - $ret = number_format($Num,$DecPlaces,$l->Get("DecimalPoint"),$l->Get("ThousandSep")); - } - else - $ret = $num; - - return $ret; -} - -function replacePngTags($x, $spacer="images/spacer.gif") -{ - global $rootURL,$pathtoroot; - - // make sure that we are only replacing for the Windows versions of Internet - // Explorer 5+, and not Opera identified as MSIE - $msie='/msie\s([5-9])\.?[0-9]*.*(win)/i'; - $opera='/opera\s+[0-9]+/i'; - if(!isset($_SERVER['HTTP_USER_AGENT']) || - !preg_match($msie,$_SERVER['HTTP_USER_AGENT']) || - preg_match($opera,$_SERVER['HTTP_USER_AGENT'])) - return $x; - - // find all the png images in backgrounds - preg_match_all('/background-image:\s*url\(\'(.*\.png)\'\);/Uis',$x,$background); - for($i=0;$i|)/Uis',$x,$images); - while(list($imgnum,$v)=@each($images[0])){ - $original=$v; - $atts=''; $width=0; $height=0; - // If the size is defined by styles, find - preg_match_all('/style=".*(width: ([0-9]+))px.*'. - '(height: ([0-9]+))px.*"/Ui',$v,$arr2); - if(is_array($arr2) && count($arr2[0])){ - // size was defined by styles, get values - $width=$arr2[2][0]; - $height=$arr2[4][0]; - } - // size was not defined by styles, get values - preg_match_all('/width=\"?([0-9]+)\"?/i',$v,$arr2); - if(is_array($arr2) && count($arr2[0])){ - $width=$arr2[1][0]; - } - preg_match_all('/height=\"?([0-9]+)\"?/i',$v,$arr2); - if(is_array($arr2) && count($arr2[0])){ - $height=$arr2[1][0]; - } - preg_match_all('/src=\"([^\"]+\.png)\"/i',$v,$arr2); - if(isset($arr2[1][0]) && !empty($arr2[1][0])) - $image=$arr2[1][0]; - else - $image=NULL; - - // We do this so that we can put our spacer.gif image in the same - // directory as the image - $tmp=split('[\\/]',$image); - array_pop($tmp); - $image_path=join('/',$tmp); - if(substr($image,0,strlen($rootURL))==$rootURL) - { - $path = str_replace($rootURL,$pathtoroot,$image); - } - else - { - $path = $pathtoroot."themes/telestial/$image"; - } -// echo "Sizing $path..
    \n"; -// echo "Full Tag: ".htmlentities($image)."
    \n"; - //if(!$height || !$width) - //{ - - $g = imagecreatefrompng($path); - if($g) - { - $height = imagesy($g); - $width = imagesx($g); - } - //} - if(strlen($image_path)) $image_path.='/'; - - // end quote is already supplied by originial src attribute - $replace_src_with=$spacer.'" style="width: '.$width. - 'px; height: '.$height.'px; filter: progid:DXImageTransform.'. - 'Microsoft.AlphaImageLoader(src=\''.$image.'\', sizingMethod='. - '\'scale\')'; - - // now create the new tag from the old - $new_tag=str_replace($image,$replace_src_with,$original); - - // now place the new tag into the content - $x=str_replace($original,$new_tag,$x); - } - return $x; -} - -function GetOptions($field) // by Alex -{ - // get dropdown values from custom field - $tmp =& new clsCustomField(); - - $tmp->LoadFromDatabase($field, 'FieldName'); - $tmp_values = $tmp->Get('ValueList'); - unset($tmp); - $tmp_values = explode(',', $tmp_values); - - foreach($tmp_values as $mixed) - { - $elem = explode('=', trim($mixed)); - $ret[ $elem[0] ] = $elem[1]; - } - return $ret; -} - -function ResetPage($module_prefix, $page_variable = 'p') -{ - // resets page in specific module when category is changed - global $objSession; - if( !is_object($objSession) ) // when changing pages session doesn't exist -> InPortal BUG - { - global $var_list, $SessionQueryString, $FrontEnd; - $objSession = new clsUserSession($var_list["sid"],($SessionQueryString && $FrontEnd==1)); - } - - $last_cat = $objSession->GetVariable('last_category'); - $prev_cat = $objSession->GetVariable('prev_category'); - //echo "Resetting Page [$prev_cat] -> [$last_cat]
    "; - - if($prev_cat != $last_cat) $GLOBALS[$module_prefix.'_var_list'][$page_variable] = 1; -} - -if( !function_exists('GetVar') ) -{ - /** - * @return string - * @param string $name - * @param bool $post_priority - * @desc Get's variable from http query - */ - function GetVar($name, $post_priority = false) - { - if(!$post_priority) // follow gpc_order in php.ini - return isset($_REQUEST[$name]) ? $_REQUEST[$name] : false; - else // get variable from post 1stly if not found then from get - return isset($_POST[$name]) && $_POST[$name] !== false ? $_POST[$name] : ( isset($_GET[$name]) && $_GET[$name] ? $_GET[$name] : false ); - } -} - -function SetVar($VarName, $VarValue) -{ - $_REQUEST[$VarName] = $VarValue; - $_POST[$VarName] = $VarValue; - $_GET[$VarName] = $VarValue; -} - -function PassVar(&$source) -{ - // source array + any count of key names in passed array - $params = func_get_args(); - array_shift($params); - - if( count($params) ) - { - $ret = Array(); - foreach($params as $var_name) - if( isset($source[$var_name]) ) - $ret[] = $var_name.'='.$source[$var_name]; - $ret = '&'.implode('&', $ret); - } - return $ret; -} - -function GetSubmitVariable(&$array, $postfix) -{ - // gets edit status of module - // used in case if some modules share - // common action parsed by kernel parser, - // but each module uses own EditStatus variable - - $modules = Array('In-Link' => 'Link', 'In-News' => 'News', 'In-Bulletin' => 'Topic', 'In-Portal'=>'Review'); - foreach($modules as $module => $prefix) - if( isset($array[$prefix.$postfix]) ) - return Array('Module' => $module, 'variable' => $array[$prefix.$postfix]); - return false; -} - -function GetModuleByAction() -{ - $prefix2module = Array('m' => 'In-Portal', 'l' => 'In-Link', 'n' => 'In-News', 'bb' => 'In-Bulletin'); - $action = GetVar('Action'); - if($action) - { - $module_prefix = explode('_', $action); - return $prefix2module[ $module_prefix[0] ]; - } - else - return false; -} - -function dir_size($dir) { - // calculates folder size based on filesizes inside it (recursively) - $totalsize=0; - if ($dirstream = @opendir($dir)) { - while (false !== ($filename = readdir($dirstream))) { - if ($filename!="." && $filename!="..") - { - if (is_file($dir."/".$filename)) - $totalsize+=filesize($dir."/".$filename); - - if (is_dir($dir."/".$filename)) - $totalsize+=dir_size($dir."/".$filename); - } - } - } - closedir($dirstream); - return $totalsize; -} - -function size($bytes) { - // shows formatted file/directory size - $types = Array("la_bytes","la_kilobytes","la_megabytes","la_gigabytes","la_terabytes"); - $current = 0; - while ($bytes > 1024) { - $current++; - $bytes /= 1024; - } - return round($bytes,2)." ".language($types[$current]); -} - -function echod($str) -{ - // echo debug output - echo str_replace( Array('[',']'), Array('[', ']'), $str).'
    '; -} - - -function PrepareParams($source, $to_lower, $mapping) -{ - // prepare array with form values to use with item - $result = Array(); - foreach($to_lower as $field) - $result[ $field ] = $source[ strtolower($field) ]; - - if( is_array($mapping) ) - { - foreach($mapping as $field_from => $field_to) - $result[$field_to] = $source[$field_from]; - } - - return $result; -} - -function GetELT($field, $phrases = Array()) -{ - // returns FieldOptions equivalent in In-Portal - $ret = Array(); - foreach($phrases as $phrase) - $ret[] = admin_language($phrase); - $ret = "'".implode("','", $ret)."'"; - return 'ELT('.$field.','.$ret.')'; -} - -function GetModuleImgPath($module) -{ - global $rootURL, $admin; - return $rootURL.$module.'/'.$admin.'/images'; -} - -function ActionPostProcess($StatusField, $ListClass, $ListObjectName = '', $IDField = null) -{ - // each action postprocessing stuff from admin - if( !isset($_REQUEST[$StatusField]) ) return false; - - $list =& $GLOBALS[$ListObjectName]; - if( !is_object($list) ) $list = new $ListClass(); - $SFValue = $_REQUEST[$StatusField]; // status field value - switch($SFValue) - { - case 1: // User hit "Save" button - $list->CopyFromEditTable($IDField); - break; - case 2: // User hit "Cancel" button - $list->PurgeEditTable($IDField); - break; - } - if( function_exists('SpecificProcessing') ) SpecificProcessing($StatusField, $SFValue); - if($SFValue == 1 || $SFValue == 2) $list->Clear(); -} - -function MakeHTMLTag($element, $attrib_prefix) -{ - $result = Array(); - $ap_length = strlen($attrib_prefix); - foreach($element->attributes as $attib_name => $attr_value) - if( substr($attib_name, $ap_length) == $ap_length ) - $result[] = substr($attib_name, $ap_length, strlen($attib_name)).'="'.$attr_value.'"'; - return count($result) ? implode(' ', $result) : false; -} - -function GetImportScripts() -{ - // return currently installed import scripts - static $import_scripts = Array(); - if( count($import_scripts) == 0 ) - { - - $sql = 'SELECT imp.* , m.LoadOrder - FROM '.TABLE_PREFIX.'ImportScripts imp - LEFT JOIN '.TABLE_PREFIX.'Modules m ON m.Name = imp.is_Module - WHERE m.Loaded = 1 - ORDER BY m.LoadOrder'; - - $db =& GetADODBConnection(); - $rs = $db->Execute($sql); - if ($rs && $rs->RecordCount() > 0) { - while (!$rs->EOF) { - $rec =& $rs->fields; - $import_scripts[ $rec['is_id'] ] = Array( 'label' => $rec['is_label'], 'url' => $rec['is_script'], - 'enabled' => $rec['is_enabled'], 'field_prefix' => $rec['is_field_prefix'], - 'id' => $rec['is_string_id'], 'required_fields' => $rec['is_requred_fields'], - 'module' => strtolower($rec['is_Module']) ); - $rs->MoveNext(); - } - } - else { - $import_scripts = Array(); - } - } - return $import_scripts; -} - -function GetImportScript($id) -{ - $scripts = GetImportScripts(); - return isset($scripts[$id]) ? $scripts[$id] : false; -} -function GetNextTemplate($current_template) -{ - // used on front, returns next template to make - // redirect to - $dest = GetVar('dest', true); - if(!$dest) $dest = GetVar('DestTemplate', true); - return $dest ? $dest : $current_template; -} - - -// functions for dealign with enviroment variable construction -function GenerateModuleEnv($prefix, $var_list) -{ - // globalize module varible arrays - $main =& $GLOBALS[$prefix.'_var_list']; - $update =& $GLOBALS[$prefix.'_var_list_update']; - //echo "VAR: [$main]; VAR_UPDATE: [$update]
    "; - - // if update var count is zero, then do nothing - if( !is_array($update) || count($update) == 0 ) return ''; - - // ensure that we have no empty values in enviroment variable - foreach($update as $vl_key => $vl_value) { - if(!$vl_value) $update[$vl_key] = '0'; // unset($update[$vl_key]); - } - - foreach($main as $vl_key => $vl_value) { - if(!$vl_value) $main[$vl_key] = '0'; // unset($main[$vl_key]); - } - - $ret = Array(); - foreach($var_list as $var_name) { - $value = GetEnvVar($prefix, $var_name); - if(!$value && $var_name == 'id') $value = '0'; - $ret[] = $value; - } - - // Removing all var_list_udpate - $keys = array_keys($update); - foreach ($keys as $key) { - unset($update[$key]); - } - - return ':'.$prefix.implode('-',$ret); -} - -// functions for dealign with enviroment variable construction -function GenerateModuleEnv_NEW($prefix, $var_list) -{ - // globalize module varible arrays - $main =& $GLOBALS[$prefix.'_var_list']; - $update =& $GLOBALS[$prefix.'_var_list_update']; - //echo "VAR: [$main]; VAR_UPDATE: [$update]
    "; - - if ( isset($update) && $update ) - { - // ensure that we have no empty values in enviroment variable - foreach($update as $vl_key => $vl_value) { - if(!$vl_value) $update[$vl_key] = '0'; // unset($update[$vl_key]); - } - - $app =& kApplication::Instance(); - $passed = $app->GetVar('prefixes_passed'); - $passed[] = $prefix; - $app->SetVar('prefixes_passed', $passed); - } - else - { - return Array(); - } - - if ($main) { - foreach($main as $vl_key => $vl_value) { - if(!$vl_value) $main[$vl_key] = '0'; // unset($main[$vl_key]); - } - } - - $ret = Array(); - foreach($var_list as $src_name => $dst_name) { - $ret[$dst_name] = GetEnvVar($prefix, $src_name); - } - - // Removing all var_list_udpate - if ( isset($update) && $update ) - { - $keys = array_keys($update); - foreach ($keys as $key) unset($update[$key]); - } - return $ret; -} - -function GetEnvVar($prefix, $name) -{ - // get variable from template variable's list - // (used in module parsers to build env string) - $main =& $GLOBALS[$prefix.'_var_list']; - $update =& $GLOBALS[$prefix.'_var_list_update']; - - // if part of env found in POST, then use it first - $submit_value = GetVar($prefix.'_'.$name); - if ($submit_value !== false) { - return $submit_value; - } - - return isset($update[$name]) ? $update[$name] : ( isset($main[$name]) ? $main[$name] : ''); -} - -/** - * Checks if debug mode is active - * - * @return bool - */ -function IsDebugMode($check_debugger = true) -{ - $application =& kApplication::Instance(); - return $application->isDebugMode($check_debugger); -} - -/** - * Checks if we are in admin - * - * @return bool - */ -function IsAdmin() -{ - $application =& kApplication::Instance(); - return $application->IsAdmin(); -} - -/** - * Two strings in-case-sensitive compare. - * Returns >0, when string1 > string2, - * <0, when string1 > string2, - * 0, when string1 = string2 - * - * @param string $string1 - * @param string $string2 - * @return int - */ -function stricmp ($string1, $string2) { - return strcmp(strtolower($string1), strtolower($string2)); -} - -/** - * Generates unique code - * - * @return string - */ -function GenerateCode() -{ - list($usec, $sec) = explode(" ",microtime()); - - $id_part_1 = substr($usec, 4, 4); - $id_part_2 = mt_rand(1,9); - $id_part_3 = substr($sec, 6, 4); - $digit_one = substr($id_part_1, 0, 1); - if ($digit_one == 0) { - $digit_one = mt_rand(1,9); - $id_part_1 = ereg_replace("^0","",$id_part_1); - $id_part_1=$digit_one.$id_part_1; - } - return $id_part_1.$id_part_2.$id_part_3; -} - -function bracket_comp($elem1, $elem2) -{ - if( ($elem1['End']>$elem2['End'] || $elem1['End'] == -1) && $elem2['End'] != -1 ) - { - return 1; - } - elseif ( ($elem1['End']<$elem2['End'] || $elem2['End'] == -1) && $elem1['End'] != -1 ) - { - return -1; - } - else - { - return 0; - } -} - -function bracket_id_sort($first_id, $second_id) -{ - $first_abs = abs($first_id); - $second_abs = abs($second_id); - $first_sign = ($first_id == 0) ? 0 : $first_id / $first_abs; - $second_sign = ($second_id == 0) ? 0 : $second_id / $second_abs; - if($first_sign != $second_sign) - { - if($first_id > $second_id) { - $bigger =& $first_abs; - $smaller =& $second_abs; - } - else { - $bigger =& $second_abs; - $smaller =& $first_abs; - } - $smaller = $bigger + $smaller; - } - - if($first_abs > $second_abs) { - return 1; - } - elseif ($first_abs < $second_abs) - { - return -1; - } - else - { - return 0; - } -} - -function pr_bracket_comp($elem1, $elem2) -{ - - if ($elem1['MinQty']!="" && $elem1['MaxQty']=="" && $elem2['MinQty']!="" && $elem2['MaxQty']!="") return 1; - if ($elem1['MinQty']!="" && $elem1['MaxQty']=="" && $elem2['MinQty']=="" && $elem2['MaxQty']=="") return -1; - - - if ($elem1['MaxQty']=="" && $elem2['MaxQty']!="") return 1; - if ($elem1['MaxQty']!="" && $elem2['MaxQty']=="") return -1; - - - if( ($elem1['MaxQty']>$elem2['MaxQty'] && $elem2['MaxQty']!=-1) || ($elem1['MaxQty'] == -1 && $elem2['MaxQty'] != -1 )) - { - return 1; - } - elseif ( ($elem1['MaxQty']<$elem2['MaxQty']) || ($elem2['MaxQty'] == -1 && $elem1['MaxQty'] != -1 )) - { - return -1; - } - else - { - return 0; - } -} - -function ap_bracket_comp($elem1, $elem2) -{ - - if ($elem1['FromAmount']!="" && $elem1['ToAmount']=="" && $elem2['FromAmount']!="" && $elem2['ToAmount']!="") return 1; - if ($elem1['FromAmount']!="" && $elem1['ToAmount']=="" && $elem2['FromAmount']=="" && $elem2['ToAmount']=="") return -1; - - - if ($elem1['ToAmount']=="" && $elem2['ToAmount']!="") return 1; - if ($elem1['ToAmount']!="" && $elem2['ToAmount']=="") return -1; - - - if( ($elem1['ToAmount']>$elem2['ToAmount'] && $elem2['ToAmount']!=-1) || ($elem1['ToAmount'] == -1 && $elem2['ToAmount'] != -1 )) - { - return 1; - } - elseif ( ($elem1['ToAmount']<$elem2['ToAmount']) || ($elem2['ToAmount'] == -1 && $elem1['ToAmount'] != -1 )) - { - return -1; - } - else - { - return 0; - } -} - -function pr_bracket_id_sort($first_id, $second_id) -{ - $first_abs = abs($first_id); - $second_abs = abs($second_id); - $first_sign = ($first_id == 0) ? 0 : $first_id / $first_abs; - $second_sign = ($second_id == 0) ? 0 : $second_id / $second_abs; - if($first_sign != $second_sign) - { - if($first_id > $second_id) { - $bigger =& $first_abs; - $smaller =& $second_abs; - } - else { - $bigger =& $second_abs; - $smaller =& $first_abs; - } - $smaller = $bigger + $smaller; - } - - if($first_abs > $second_abs) { - return 1; - } - elseif ($first_abs < $second_abs) - { - return -1; - } - else - { - return 0; - } -} - - function inp_htmlize($var, $strip = 0) - { - if( is_array($var) ) - { - foreach($var as $k => $v) $var[$k] = inp_htmlize($v, $strip); - } - else - { - $var = htmlspecialchars($strip ? stripslashes($var) : $var); - } - return $var; - } - - /** - * Sets in-portal cookies, that will not harm K4 to breath free :) - * - * @param string $name - * @param mixed $value - * @param int $expire - * @author Alex - */ - function set_cookie($name, $value, $expire = 0, $cookie_path = null) - { - if (!isset($cookie_path)) - { - $cookie_path = IsAdmin() ? rtrim(BASE_PATH, '/').'/admin' : BASE_PATH; - } - setcookie($name, $value, $expire, $cookie_path, $_SERVER['HTTP_HOST']); - } - - /** - * If we are on login required template, but we are not logged in, then logout user - * - * @return bool - */ - function require_login($condition = null, $redirect_params = 'logout=1', $pass_env = false) - { - if( !isset($condition) ) $condition = !admin_login(); - if(!$condition) return false; - - global $objSession, $adminURL; - if( !headers_sent() ) set_cookie(SESSION_COOKIE_NAME, ' ', adodb_mktime() - 3600); - $objSession->Logout(); - if($pass_env) $redirect_params = 'env='.BuildEnv().'&'.$redirect_params; - header('Location: '.$adminURL.'/index.php?'.$redirect_params); - exit; - } - - /** - * Builds up K4 url from data supplied by in-portal - * - * @param string $t template - * @param Array $params - * @param string $index_file - * @return string - */ - function HREF_Wrapper($t = '', $params = null, $index_file = null) - { - $url_params = BuildEnv_NEW(); - if( isset($params) ) $url_params = array_merge_recursive2($url_params, $params); - if(!$t) - { - $t = $url_params['t']; - unset($url_params['t']); - } - $app =& kApplication::Instance(); - return $app->HREF($t, '', $url_params, $index_file); - } - - /** - * Set url params based on tag params & mapping hash passed - * - * @param Array $url_params - url params before change - * @param Array $tag_attribs - tag attributes - * @param Array $params_map key - tag_param, value - url_param - */ - function MapTagParams(&$url_params, $tag_attribs, $params_map) - { - foreach ($params_map as $tag_param => $url_param) - { - if( getArrayValue($tag_attribs, $tag_param) ) $url_params[$url_param] = $tag_attribs[$tag_param]; - } - } - - function ExtractParams($params_str, $separator = '&') - { - if(!$params_str) return Array(); - - $ret = Array(); - $parts = explode($separator, trim($params_str, $separator) ); - foreach ($parts as $part) - { - list($var_name, $var_value) = explode('=', $part); - $ret[$var_name] = $var_value; - } - return $ret; - } - - function &recallObject($var_name, $class_name) - { - if (!isset($GLOBALS[$var_name]) || !is_object($GLOBALS[$var_name])) - { - $GLOBALS[$var_name] = new $class_name(); - } - return $GLOBALS[$var_name]; - } - - /** - * Returns true in case of AM/PM time - * - * @return bool - */ - function is12HourMode() - { - return preg_match('/(a|A)/', GetTimeFormat() ); - } - - /** - * Saves custom fields for old in-portal items - * - * @param string $prefix K4 prefix of item - * @param int $resource_id resource id of item - * @param int $item_type type of custom fields - */ - function saveCustomFields($prefix, $resource_id, $item_type) - { - $objCustomEdit = new clsCustomDataList(); - $CustomFields = new clsCustomFieldList($item_type); - - $data_changed = false; - for ($i = 0; $i < $CustomFields->NumItems(); $i++) { - $objField =& $CustomFields->GetItemRefByIndex($i); - $field_name = $objField->Get('FieldName'); - $element_type = $objField->Get('ElementType'); - - $value = getCustomValue($field_name); - - if ($element_type == 'checkbox' && $value === false) { - // unchecked checkboxes are not submitted - $value = 0; - } - - if ($value !== false) { - $objCustomEdit->SetFieldValue($objField->Get('CustomFieldId'), $resource_id, $value); - $data_changed = true; - } - } - - if ($data_changed) { - $objCustomEdit->SaveData($prefix, $resource_id); - } - } - - /** - * Returns custom field value from submit - * - * @param string $field_name - * @return mixed - */ - function getCustomValue($field_name) - { - if (IsAdmin()) { - $field_name = '_'.$field_name; - } - elseif (isset($_POST[strtolower($field_name)])) { - $field_name = strtolower($field_name); - } - return GetVar($field_name); - } - - function checkActionPermission($action_mapping, $action, $system = 0) - { - $application =& kApplication::Instance(); - - if (!isset($action_mapping[$action])) { - // if no permission mapping defined, then action is allowed in any case - return true; - } - - $perm_status = false; - $action_mapping = explode('|', $action_mapping[$action]); - foreach ($action_mapping as $perm_name) { - $perm_status = $application->CheckPermission($perm_name, $system); - if ($perm_status) { - break; - } - } - - if (!$perm_status) { - $application->Redirect($application->IsAdmin() ? 'no_permission' : $application->ConfigValue('NoPermissionTemplate'), null, '', 'index.php'); - } - return true; - } - - function checkViewPermission($section_name, $system = 1) - { - $application =& kApplication::Instance(); - $application->InitParser(); - $application->ProcessParsedTag('m', 'RequireLogin', Array('permissions' => $section_name.'.view', 'system' => $system, 'index_file' => 'index.php')); - } - -?>