Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sun, Feb 2, 5:55 AM

in-portal

Index: trunk/globals.php
===================================================================
--- trunk/globals.php (revision 750)
+++ trunk/globals.php (revision 751)
@@ -1,1495 +1,1495 @@
-<?php
-
-$vars = parse_portal_ini($pathtoroot."config.php");
-
-while($key = key($vars))
-{
- $key = "g_".$key;
- global $$key;
- $$key = current($vars); //variable variables
- next($vars);
-}
-
-/*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 */
-define('STATUS_DISABLED', 0);
-define('STATUS_ACTIVE', 1);
-define('STATUS_PENDING', 2);
-
-$LogLevel=0;
-$LogFile = NULL;
-
-
-function parse_portal_ini($file, $parse_section = false) {
- if(!file_exists($file) && !is_readable($file))
- die('Could Not Open Ini File');
-
- $contents = file($file);
-
- $retval = array();
-
- $section = '';
- $ln = 1;
- $resave = false;
- foreach($contents as $line) {
- if ($ln == 1 && $line != '<'.'?'.'php die() ?'.">\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 '<br />';
- } //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;
-}
-
-/**
- * @return object
- * @desc Returns reference to database connection
-*/
-function &GetADODBConnection()
-{
- 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( !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 <br>\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.<br>';
- echo 'Please use the installation script to fix the problem.<br><br>';
- if ( !preg_match('/admin/', __FILE__) ) $ins = 'admin/';
-
- echo '<a href="'.$rootURL.$ins.'install.php">Go to installation script</a><br><br>';
- flush();
- exit;
- }
- return $DB;
-}
-
-function GetNextResourceId($Increment=1)
-{
- $sql = "UPDATE ".GetTablePrefix()."IdGenerator SET lastid=lastid+".$Increment;
- $adodbConnection = &GetADODBConnection();
- $adodbConnection->Execute($sql);
- $rs = $adodbConnection->Execute("SELECT lastid FROM ".GetTablePrefix()."IdGenerator");
- $val = $rs->fields["lastid"];
- if(!$rs || $rs->EOF)
- {
- echo $adodbConnection->ErrorMsg();
- $sql = "INSERT INTO ".GetTablePrefix()."IdGenerator (lastid) VALUES ($Increment)";
- $adodbConnection->Execute($sql);
- $val = 1;
- }
- $val = $val-($Increment-1);
- return $val;
-}
-
-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<count($array)-1;$i++)
- $array[$i] = $array[$i+1];
- unset($array[count($array)-1]);
- return $array;
-}
-
-function DeleteElementValue($needle, &$haystack)
-{
- while(($gotcha = array_search($needle,$haystack)) > -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."<br>\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('/(.*)LIMIT(.*)/is','$1', $sql);
- $sql = preg_replace('/(.*)ORDER BY(.*)/is','$1', $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;
- 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("<","&lt;",$out);
- $out=ereg_replace(">","&gt;",$out);
- $out=ereg_replace("\"","&quot;",$out);
- $out = str_replace("\n^br^", "\n<br />", $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('<'=>'&lt;','>'=>'&gt;',));
- 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)
-{
- return $in;
- $out=stripslashes($in);
-
- return $out;
-}
-
-function inp_textarea_unescape($in)
-{
- return $in;
- $out=stripslashes($in);
- $out = str_replace("\n<br />", "\n", $out);
- return $out;
-}
-
-function HighlightKeywords($Keywords, $html, $OpenTag="", $CloseTag="")
-{
- global $objConfig;
-
- if(!strlen($OpenTag))
- $OpenTag = "<B>";
- if(!strlen($CloseTag))
- $CloseTag = "</B>";
-
- $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("/($k)/i", "$OpenTag\\1$CloseTag", $r[$i]);
- }
- }
- return join("", $r);
-}
-
-/*
-function HighlightKeywords($Keywords,$html, $OpenTag="", $CloseTag="")
-{
- global $objConfig;
-
- if(!strlen($OpenTag))
- $OpenTag = "<B>";
- if(!strlen($CloseTag))
- $CloseTag = "</B>";
- $ret = strip_tags($html);
-
- foreach ($Keywords as $k)
- {
- if(strlen($k))
- {
- //$html = str_replace("<$k>", ":#:", $html);
- //$html = str_replace("</$k>", ":##:", $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(":##:", "</$k>", $ret);
- }
- }
- return $ret;
-}
-*/
-function ExtractDatePart($part,$datestamp)
-{
- switch($part)
- {
- case "month":
- if($datestamp<=0)
- {
- $ret = "";
- }
- else
- $ret = adodb_date("m",$datestamp);
- break;
- case "day":
- if($datestamp<=0)
- {
- $ret = "";
- }
- else
- $ret = adodb_date("d", $datestamp);
- break;
- case "year":
- if($datestamp<=0)
- {
- $ret = "";
- }
- else
- $ret = adodb_date("Y", $datestamp);
- break;
- case "time_24hr":
- if($datestamp<=0)
- {
- $ret = "";
- }
- else
- $ret = adodb_date("H:i", $datestamp);
- break;
- case "time_12hr":
- if($datestamp<=0)
- {
- $ret = "";
- }
- else
- $ret = adodb_date("g:i a",$datestamp);
- break;
- default:
- $ret = adodb_date($part, $datestamp);
- break;
- }
- return $ret;
-}
-
-function GetLocalTime($TimeStamp,$TargetZone=NULL)
-{
- 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);
- 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($param[1]); // name lowercased
-
- if( isset($ParamsAllowed[ $param[1] ]) )
- $ret[] = $param[1].'="'.$param[2].'"';
- }
- $ret = count($ret) ? ' '.implode(' ',$ret) : '';
- return '<'.$BBCode.$ret.'>'.$TextInside.'</'.$BBCode.'>';
- }
- else
- return '<'.$BBCode.'>'.$TextInside.'</'.$BBCode.'>';
- 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>(.*)<\/url>/Usi','<url href="$1">$1</url>',$text);
- $text = preg_replace('/<font>(.*)<\/font>/Usi','$1',$text); // skip empty fonts
- $text = str_replace( Array('<url','</url>','[*]'),
- Array('<a target="_blank"','</a>','<li>'),
- $text);
-
- // bbcode [code]xxx[/code] processing
- $text = preg_replace('/\[code\](.*)\[\/code\]/Uise', "ReplaceCodeBBCode('$1')", $text);
- return $text;
-}
-function ReplaceCodeBBCode($input_string)
-{
- $input_string=str_replace('\"','"',$input_string);
- $input_string=$GLOBALS['objSmileys']->UndoSmileys(_unhtmlentities($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('&lt;?php', '', str_replace('?&gt;', '', $input_string));
- }
- return str_replace('<br />','',$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;
-}
-
-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;$g<strlen($pass_structure);$g++)
- {
- mt_srand((double)microtime()*1000000);
- $sel=substr($pass_structure,$g,1);
- $pass.=${'p'.$sel}[mt_rand(0,-1+${'s'.$sel})];
-
- }
- return $pass;
-}
-
-function LogEntry($text,$writefile=FALSE)
-{
- global $g_LogFile,$LogFile, $LogData, $LogLevel, $timestart;
-
- static $last;
-
- if(strlen($g_LogFile))
- {
- $el = str_pad(getmicrotime()- $timestart,10," ");
- if($last>0)
- $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();
-
- $translation = $objLanguageCache->GetTranslation($phrase,$LangId);
-
- return $translation;
-}
-
-function admin_language($phrase,$lang=0,$LinkMissing=FALSE)
-{
- global $objSession, $objLanguageCache, $objLanguages;
-
- //echo "Language passed: $lang<br>";
-
- if($lang==0)
- $lang = $objSession->Get("Language");
-
- //echo "Language from session: $lang<br>";
-
- if($lang==0)
- $lang = $objLanguages->GetPrimary();
-
- //echo "Language after primary: $lang<br>";
- //echo "Phrase: $phrase<br>";
- $translation = $objLanguageCache->GetTranslation($phrase,$lang);
- if($LinkMissing && substr($translation,0,1)=="!" && substr($translation,-1)=="!")
- {
- $res = "<A href=\"javascript:OpenPhraseEditor('&direct=1&label=$phrase'); \">$translation</A>";
- 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)
-{
- $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."<br>\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($ItemTypeName=0,$ListType=NULL)
-{
- global $objCountCache, $objItemTypes;
-
- if(is_numeric($ItemTypeName))
- $item = $objItemTypes->GetItem($ItemTypeName);
- else
- $item = $objItemTypes->GetTypeByName($ItemTypeName);
-
- 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 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"))
- {
- $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);
- }
-}
-
-function ParseTagLibrary()
-{
- $objTagList = new clsTagList();
- $objTagList->ParseInportalTags();
- unset($objTagList);
-}
-
-function GetDateFormat($LangId=0)
-{
- global $objLanguages;
-
- if(!$LangId)
- $LangId= $objLanguages->GetPrimary();
- $l = $objLanguages->GetItem($LangId);
- if(is_object($l))
- {
- $fmt = $l->Get("DateFormat");
- }
- else
- $fmt = "m-d-Y";
-
- if(isset($GLOBALS['FrontEnd'])&&$GLOBALS['FrontEnd'])
- return $fmt;
- return preg_replace('/y+/i','Y',$fmt);
-}
-
-function GetTimeFormat($LangId=0)
-{
- global $objLanguages;
-
- if(!$LangId)
- $LangId= $objLanguages->GetPrimary();
- $l = $objLanguages->GetItem($LangId);
- if(is_object($l))
- {
- $fmt = $l->Get("TimeFormat");
- }
- else
- $fmt = "H:i:s";
- return $fmt;
-}
-
-function LangDate($TimeStamp=NULL,$LangId=0)
-{
- $fmt = GetDateFormat($LangId);
- $ret = adodb_date($fmt,$TimeStamp);
- return $ret;
-}
-
-function LangTime($TimeStamp=NULL,$LangId=0)
-{
- $fmt = GetTimeFormat($LangId);
- $ret = adodb_date($fmt,$TimeStamp);
- return $ret;
-}
-
-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<count($background[0]);$i++){
- // simply replace:
- // "background-image: url('image.png');"
- // with:
- // "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
- // enabled=true, sizingMethod=scale src='image.png');"
- // haven't tested to see if background-repeat styles work...
- $x=str_replace($background[0][$i],'filter:progid:DXImageTransform.'.
- 'Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale'.
- ' src=\''.$background[1][$i].'\');',$x);
- }
-
- // OK, time to find all the IMG tags with ".png" in them
- preg_match_all('/(<img.*\.png.*>|<input.*type=([\'"])image\\2.*\.png.*>)/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.. <br>\n";
-// echo "Full Tag: ".htmlentities($image)."<br>\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 print_pre($str)
-{
- // no comments here :)
- echo '<pre>'.print_r($str, true).'</pre>';
-}
-
-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;
- //if(!$var_list["sid"]) $var_list["sid"] = $_COOKIE["sid"];
- $objSession = new clsUserSession($var_list["sid"],($SessionQueryString && $FrontEnd==1));
- }
- //echo "SID_RESET: ".$GLOBALS['var_list']["sid"].'(COOKIE_SID: '.$_COOKIE["sid"].')<br>';
- $last_cat = $objSession->GetVariable('last_category');
- $prev_cat = $objSession->GetVariable('prev_category');
- //echo "Resetting Page [$prev_cat] -> [$last_cat]<br>";
-
- 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;
-}
-
-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');
- 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('[<b>', '</b>]'), $str).'<br>';
-}
-
-
-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 GetElem(&$array, $index)
-{
- // returns array element by index if
- // such index exists
- return isset($array[$index]) ? $array[$index] : false;
-}
-
-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 * FROM '.GetTablePrefix().'ImportScripts ORDER BY is_id';
- $db =&GetADODBConnection();
- $rs = $db->Execute($sql);
- if( $rs && $rs->RecordCount() > 0 )
- {
- while(!$rs->EOF)
- {
- $rec =& $rs->fields;
- $import_scripts[] = 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]<br>";
-
- // 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]);
-
- // if update var count is zero, then do nothing
- if(count($update) == 0) return '';
-
- 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)
- $ret[] = GetEnvVar($prefix, $var_name);
-
- return ':'.$prefix.implode('-',$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'];
-
- return isset($update[$name]) ? $update[$name] : ( isset($main[$name]) ? $main[$name] : '');
-}
-
-/**
- * @return int
- * @desc Checks for debug mode
-*/
-function IsDebugMode()
-{
- return defined('DEBUG_MODE') && constant('DEBUG_MODE') == 1 ? 1 : 0;
-}
-
-
-?>
+<?php
+
+$vars = parse_portal_ini($pathtoroot."config.php");
+
+while($key = key($vars))
+{
+ $key = "g_".$key;
+ global $$key;
+ $$key = current($vars); //variable variables
+ next($vars);
+}
+
+/*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 */
+define('STATUS_DISABLED', 0);
+define('STATUS_ACTIVE', 1);
+define('STATUS_PENDING', 2);
+
+$LogLevel=0;
+$LogFile = NULL;
+
+
+function parse_portal_ini($file, $parse_section = false) {
+ if(!file_exists($file) && !is_readable($file))
+ die('Could Not Open Ini File');
+
+ $contents = file($file);
+
+ $retval = array();
+
+ $section = '';
+ $ln = 1;
+ $resave = false;
+ foreach($contents as $line) {
+ if ($ln == 1 && $line != '<'.'?'.'php die() ?'.">\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 '<br />';
+ } //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;
+}
+
+/**
+ * @return object
+ * @desc Returns reference to database connection
+*/
+function &GetADODBConnection()
+{
+ 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( !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 <br>\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.<br>';
+ echo 'Please use the installation script to fix the problem.<br><br>';
+ if ( !preg_match('/admin/', __FILE__) ) $ins = 'admin/';
+
+ echo '<a href="'.$rootURL.$ins.'install.php">Go to installation script</a><br><br>';
+ flush();
+ exit;
+ }
+ return $DB;
+}
+
+function GetNextResourceId($Increment=1)
+{
+ $sql = "UPDATE ".GetTablePrefix()."IdGenerator SET lastid=lastid+".$Increment;
+ $adodbConnection = &GetADODBConnection();
+ $adodbConnection->Execute($sql);
+ $rs = $adodbConnection->Execute("SELECT lastid FROM ".GetTablePrefix()."IdGenerator");
+ $val = $rs->fields["lastid"];
+ if(!$rs || $rs->EOF)
+ {
+ echo $adodbConnection->ErrorMsg();
+ $sql = "INSERT INTO ".GetTablePrefix()."IdGenerator (lastid) VALUES ($Increment)";
+ $adodbConnection->Execute($sql);
+ $val = 1;
+ }
+ $val = $val-($Increment-1);
+ return $val;
+}
+
+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<count($array)-1;$i++)
+ $array[$i] = $array[$i+1];
+ unset($array[count($array)-1]);
+ return $array;
+}
+
+function DeleteElementValue($needle, &$haystack)
+{
+ while(($gotcha = array_search($needle,$haystack)) > -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."<br>\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('/(.*)LIMIT(.*)/is','$1', $sql);
+ $sql = preg_replace('/(.*)ORDER BY(.*)/is','$1', $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;
+ 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("<","&lt;",$out);
+ $out=ereg_replace(">","&gt;",$out);
+ $out=ereg_replace("\"","&quot;",$out);
+ $out = str_replace("\n^br^", "\n<br />", $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('<'=>'&lt;','>'=>'&gt;',));
+ 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)
+{
+ return $in;
+ $out=stripslashes($in);
+
+ return $out;
+}
+
+function inp_textarea_unescape($in)
+{
+ return $in;
+ $out=stripslashes($in);
+ $out = str_replace("\n<br />", "\n", $out);
+ return $out;
+}
+
+function HighlightKeywords($Keywords, $html, $OpenTag="", $CloseTag="")
+{
+ global $objConfig;
+
+ if(!strlen($OpenTag))
+ $OpenTag = "<B>";
+ if(!strlen($CloseTag))
+ $CloseTag = "</B>";
+
+ $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("/($k)/i", "$OpenTag\\1$CloseTag", $r[$i]);
+ }
+ }
+ return join("", $r);
+}
+
+/*
+function HighlightKeywords($Keywords,$html, $OpenTag="", $CloseTag="")
+{
+ global $objConfig;
+
+ if(!strlen($OpenTag))
+ $OpenTag = "<B>";
+ if(!strlen($CloseTag))
+ $CloseTag = "</B>";
+ $ret = strip_tags($html);
+
+ foreach ($Keywords as $k)
+ {
+ if(strlen($k))
+ {
+ //$html = str_replace("<$k>", ":#:", $html);
+ //$html = str_replace("</$k>", ":##:", $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(":##:", "</$k>", $ret);
+ }
+ }
+ return $ret;
+}
+*/
+function ExtractDatePart($part,$datestamp)
+{
+ switch($part)
+ {
+ case "month":
+ if($datestamp<=0)
+ {
+ $ret = "";
+ }
+ else
+ $ret = adodb_date("m",$datestamp);
+ break;
+ case "day":
+ if($datestamp<=0)
+ {
+ $ret = "";
+ }
+ else
+ $ret = adodb_date("d", $datestamp);
+ break;
+ case "year":
+ if($datestamp<=0)
+ {
+ $ret = "";
+ }
+ else
+ $ret = adodb_date("Y", $datestamp);
+ break;
+ case "time_24hr":
+ if($datestamp<=0)
+ {
+ $ret = "";
+ }
+ else
+ $ret = adodb_date("H:i", $datestamp);
+ break;
+ case "time_12hr":
+ if($datestamp<=0)
+ {
+ $ret = "";
+ }
+ else
+ $ret = adodb_date("g:i a",$datestamp);
+ break;
+ default:
+ $ret = adodb_date($part, $datestamp);
+ break;
+ }
+ return $ret;
+}
+
+function GetLocalTime($TimeStamp,$TargetZone=NULL)
+{
+ 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);
+ 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($param[1]); // name lowercased
+
+ if( isset($ParamsAllowed[ $param[1] ]) )
+ $ret[] = $param[1].'="'.$param[2].'"';
+ }
+ $ret = count($ret) ? ' '.implode(' ',$ret) : '';
+ return '<'.$BBCode.$ret.'>'.$TextInside.'</'.$BBCode.'>';
+ }
+ else
+ return '<'.$BBCode.'>'.$TextInside.'</'.$BBCode.'>';
+ 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>(.*)<\/url>/Usi','<url href="$1">$1</url>',$text);
+ $text = preg_replace('/<font>(.*)<\/font>/Usi','$1',$text); // skip empty fonts
+ $text = str_replace( Array('<url','</url>','[*]'),
+ Array('<a target="_blank"','</a>','<li>'),
+ $text);
+
+ // bbcode [code]xxx[/code] processing
+ $text = preg_replace('/\[code\](.*)\[\/code\]/Uise', "ReplaceCodeBBCode('$1')", $text);
+ return $text;
+}
+function ReplaceCodeBBCode($input_string)
+{
+ $input_string=str_replace('\"','"',$input_string);
+ $input_string=$GLOBALS['objSmileys']->UndoSmileys(_unhtmlentities($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('&lt;?php', '', str_replace('?&gt;', '', $input_string));
+ }
+ return str_replace('<br />','',$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;
+}
+
+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;$g<strlen($pass_structure);$g++)
+ {
+ mt_srand((double)microtime()*1000000);
+ $sel=substr($pass_structure,$g,1);
+ $pass.=${'p'.$sel}[mt_rand(0,-1+${'s'.$sel})];
+
+ }
+ return $pass;
+}
+
+function LogEntry($text,$writefile=FALSE)
+{
+ global $g_LogFile,$LogFile, $LogData, $LogLevel, $timestart;
+
+ static $last;
+
+ if(strlen($g_LogFile))
+ {
+ $el = str_pad(getmicrotime()- $timestart,10," ");
+ if($last>0)
+ $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();
+
+ $translation = $objLanguageCache->GetTranslation($phrase,$LangId);
+
+ return $translation;
+}
+
+function admin_language($phrase,$lang=0,$LinkMissing=FALSE)
+{
+ global $objSession, $objLanguageCache, $objLanguages;
+
+ //echo "Language passed: $lang<br>";
+
+ if($lang==0)
+ $lang = $objSession->Get("Language");
+
+ //echo "Language from session: $lang<br>";
+
+ if($lang==0)
+ $lang = $objLanguages->GetPrimary();
+
+ //echo "Language after primary: $lang<br>";
+ //echo "Phrase: $phrase<br>";
+ $translation = $objLanguageCache->GetTranslation($phrase,$lang);
+ if($LinkMissing && substr($translation,0,1)=="!" && substr($translation,-1)=="!")
+ {
+ $res = "<A href=\"javascript:OpenPhraseEditor('&direct=1&label=$phrase'); \">$translation</A>";
+ 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)
+{
+ $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."<br>\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($ItemTypeName=0,$ListType=NULL)
+{
+ global $objCountCache, $objItemTypes;
+
+ if(is_numeric($ItemTypeName))
+ $item = $objItemTypes->GetItem($ItemTypeName);
+ else
+ $item = $objItemTypes->GetTypeByName($ItemTypeName);
+
+ 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 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"))
+ {
+ $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);
+ }
+}
+
+function ParseTagLibrary()
+{
+ $objTagList = new clsTagList();
+ $objTagList->ParseInportalTags();
+ unset($objTagList);
+}
+
+function GetDateFormat($LangId=0)
+{
+ global $objLanguages;
+
+ if(!$LangId)
+ $LangId= $objLanguages->GetPrimary();
+ $l = $objLanguages->GetItem($LangId);
+ if(is_object($l))
+ {
+ $fmt = $l->Get("DateFormat");
+ }
+ else
+ $fmt = "m-d-Y";
+
+ if(isset($GLOBALS['FrontEnd'])&&$GLOBALS['FrontEnd'])
+ return $fmt;
+ return preg_replace('/y+/i','Y',$fmt);
+}
+
+function GetTimeFormat($LangId=0)
+{
+ global $objLanguages;
+
+ if(!$LangId)
+ $LangId= $objLanguages->GetPrimary();
+ $l = $objLanguages->GetItem($LangId);
+ if(is_object($l))
+ {
+ $fmt = $l->Get("TimeFormat");
+ }
+ else
+ $fmt = "H:i:s";
+ return $fmt;
+}
+
+function LangDate($TimeStamp=NULL,$LangId=0)
+{
+ $fmt = GetDateFormat($LangId);
+ $ret = adodb_date($fmt,$TimeStamp);
+ return $ret;
+}
+
+function LangTime($TimeStamp=NULL,$LangId=0)
+{
+ $fmt = GetTimeFormat($LangId);
+ $ret = adodb_date($fmt,$TimeStamp);
+ return $ret;
+}
+
+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<count($background[0]);$i++){
+ // simply replace:
+ // "background-image: url('image.png');"
+ // with:
+ // "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
+ // enabled=true, sizingMethod=scale src='image.png');"
+ // haven't tested to see if background-repeat styles work...
+ $x=str_replace($background[0][$i],'filter:progid:DXImageTransform.'.
+ 'Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale'.
+ ' src=\''.$background[1][$i].'\');',$x);
+ }
+
+ // OK, time to find all the IMG tags with ".png" in them
+ preg_match_all('/(<img.*\.png.*>|<input.*type=([\'"])image\\2.*\.png.*>)/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.. <br>\n";
+// echo "Full Tag: ".htmlentities($image)."<br>\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 print_pre($str)
+{
+ // no comments here :)
+ echo '<pre>'.print_r($str, true).'</pre>';
+}
+
+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;
+ //if(!$var_list["sid"]) $var_list["sid"] = $_COOKIE["sid"];
+ $objSession = new clsUserSession($var_list["sid"],($SessionQueryString && $FrontEnd==1));
+ }
+ //echo "SID_RESET: ".$GLOBALS['var_list']["sid"].'(COOKIE_SID: '.$_COOKIE["sid"].')<br>';
+ $last_cat = $objSession->GetVariable('last_category');
+ $prev_cat = $objSession->GetVariable('prev_category');
+ //echo "Resetting Page [$prev_cat] -> [$last_cat]<br>";
+
+ 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;
+}
+
+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');
+ 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('[<b>', '</b>]'), $str).'<br>';
+}
+
+
+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 GetElem(&$array, $index)
+{
+ // returns array element by index if
+ // such index exists
+ return isset($array[$index]) ? $array[$index] : false;
+}
+
+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 * FROM '.GetTablePrefix().'ImportScripts ORDER BY is_id';
+ $db =&GetADODBConnection();
+ $rs = $db->Execute($sql);
+ if( $rs && $rs->RecordCount() > 0 )
+ {
+ while(!$rs->EOF)
+ {
+ $rec =& $rs->fields;
+ $import_scripts[] = 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]<br>";
+
+ // 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]);
+
+ // if update var count is zero, then do nothing
+ if(count($update) == 0) return '';
+
+ 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)
+ $ret[] = GetEnvVar($prefix, $var_name);
+
+ return ':'.$prefix.implode('-',$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'];
+
+ return isset($update[$name]) ? $update[$name] : ( isset($main[$name]) ? $main[$name] : '');
+}
+
+/**
+ * @return int
+ * @desc Checks for debug mode
+*/
+function IsDebugMode()
+{
+ return defined('DEBUG_MODE') && constant('DEBUG_MODE') == 1 ? 1 : 0;
+}
+
+
+?>
Property changes on: trunk/globals.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.51
\ No newline at end of property
+1.52
\ No newline at end of property

Event Timeline