\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); if( !defined('STATUS_PENDING_EDITING') ) define('STATUS_PENDING_EDITING', -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) { // we need to skip wid here, otherwise empty wid will become 0 and the window name for javascript will be changed (to main_0), // making all links to original (main) window open in new window if ($vl_key == 'wid') continue; 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 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 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')); } ?>