Index: trunk/kernel/include/modules.php =================================================================== --- trunk/kernel/include/modules.php (revision 88) +++ trunk/kernel/include/modules.php (revision 89) @@ -1,899 +1,899 @@ <?php /* List of installed modules and module-specific variables Copyright 2002, Intechnic Corporation, All rights reserved */ setcookie("CookiesTest", "1"); $ExtraVars = array(); function ParseEnv() { global $env, $var_list, $mod_prefix,$objSession, $SessionQueryString; /* parse individual sections */ $env = isset($_GET['env']) ? $_GET['env'] : ''; if ($env == "") { $var_list["t"] = "index"; if(is_array($mod_prefix)) { foreach($mod_prefix as $key => $value) { if(strlen($key)) { $parser_name = $key . "_ParseEnv"; if(function_exists($parser_name)) { @$parser_name(); } } } } } else { $envsections = explode(":", $env); foreach($mod_prefix as $key => $value) { if(strlen($key)) { $parsed=FALSE; $parser_name = $key . "_ParseEnv"; for($i=1; $i<sizeof($envsections); $i++) { $pieces = explode("-", $envsections[$i]); if(substr($pieces[0],0,strlen($key))==$key) { $parsed=TRUE; if(function_exists($parser_name)) { $parser_name($envsections[$i]); } } } if(!$parsed) { if(function_exists($parser_name)) { @$parser_name(); } } } } $req_vars = explode("-", $envsections[0]); $sid = $req_vars[0]; if(!$SessionQueryString) { if(!strlen($sid) || $sid=="_") { if($sid != "_") $sid = $_COOKIE["sid"]; } else $SessionQueryString = TRUE; } $var_list["sid"] = $sid; $var_list["t"] = $req_vars[1]; if( isset($_GET['dest']) ) $var_list['dest'] = $_GET['dest']; } } function LoadEnv() { global $env, $var_list, $mod_prefix,$objSession; $env = $_GET["env"]; // echo "Loading Variables..<br>\n"; if ($env != "") { $envsections = explode(":", $env); foreach($mod_prefix as $key => $value) { if(strlen($key)) { $parsed=FALSE; for($i=1; $i<sizeof($envsections); $i++) { $pieces = explode("-", $envsections[$i]); if(substr($pieces[0],0,strlen($key))==$key) { $parsed=TRUE; break; } } if(!$parsed) { $parser_name = $key . "_LoadEnv"; //echo $parser_name; if(function_exists($parser_name)) { $parser_name(); } } else { $parser_name = $key . "_SaveEnv"; //echo $parser_name; if(function_exists($parser_name)) { $parser_name($envsections[$i]); } } } } } } function BuildEnv() { global $var_list,$m_var_list, $var_list_update, $mod_prefix, $objSession, $objConfig, $ExtraVars, $objThemes, $CurrentTheme, $SessionQueryString, $FrontEnd; static $theme; $env = ""; //echo "Query String: $SessionQueryString<br>\n"; if(($objConfig->Get("CookieSessions")==0 || !$FrontEnd || ($objConfig->Get("CookieSessions")==2 && $SessionQueryString==TRUE))) { if(!$objSession->UseTempKeys) { $sessionkey = $objSession->GetSessionKey(); } else $sessionkey = $objSession->Get("CurrentTempKey"); $env = $sessionkey; } $env .= "-"; if (isset($var_list_update["t"])) { if($var_list_update["t"]=="_referer_") { $var_list_update["t"] =$objSession->GetVariable("Template_Referer"); } $t = $var_list_update["t"]; if(!is_numeric($t)) { if(!is_object($theme)) $theme = $objThemes->GetItem($m_var_list["theme"]); $id = $theme->GetTemplateId($t); $var_list_update["t"] = $id; } $env .= $var_list_update["t"]; } else { $t = $var_list["t"]; if(!is_numeric($t)) { if(!is_object($theme)) $theme = $objThemes->GetItem($m_var_list["theme"]); $id = $theme->GetTemplateId($t); $t = $id; } $env .= $t; } if(is_array($mod_prefix)) { foreach($mod_prefix as $key => $value) { $builder_name = $key . "_BuildEnv"; if(function_exists($builder_name)) $env .= $builder_name(); } } $extra = ""; $keys = array_keys($ExtraVars); if(is_array($keys)) { for($i=0;$i<count($keys);$i++) { $key = $keys[$i]; $e = "&".$key."=".$ExtraVars[$key]; $extra .= $e; $e = ""; } } $env .= $extra; return $env; } function CategoryActionFunc($basename,$CatList) { global $mod_prefix; foreach($mod_prefix as $key => $value) { $function_name = $key."_".$basename; if(function_exists($function_name)) { $function_name($CatList); } } } function RegisterEnv($Var,$Value) { global $ExtraVars; $ExtraVars[$Var] = $Value; } function UnregisterEnv($Var) { global $ExtraVars; unset($ExtraVars[$Var]); } function ModuleTagPrefix($name) { global $modules_loaded; $ret = ""; foreach($modules_loaded as $prefix=>$mod_name) { if($name==$mod_name) { $ret = $prefix; break; } } return $ret; } function ModuleEnabled($name) { global $template_path; $a = array_keys($template_path); if(in_array($name,$a)) return TRUE; return FALSE; } function GetModuleArray($array_name="mod_prefix") { switch($array_name) { case "mod_prefix": global $mod_prefix; return $mod_prefix; break; case "admin": global $mod_prefix, $modules_loaded; $mod = array(); if(is_array($mod_prefix) && is_array($modules_loaded)) { foreach ($mod_prefix as $key=>$value) { if(_ModuleLicensed($modules_loaded[$key]) || $key=="m") { $mod[$key] = $value; } } } return $mod; break; case "loaded": global $modules_loaded; return $modules_loaded; break; case "template": global $template_path; return $template_path; case "rootcat": global $mod_root_cats; return $mod_root_cats; break; } } function admin_login() { global $objSession,$login_error, $objConfig,$g_Allow,$g_Deny; //echo "<pre>"; print_r($objSession); echo "</pre>"; if( GetVar('help_usage') == 'install' ) return true; $env_arr = explode('-', $_GET['env']); $get_session_key = $env_arr[0]; if(!$objSession->ValidSession() || ($objSession->GetSessionKey() != $get_session_key && $_POST['adminlogin'] != 1)) { if ($_GET['expired'] == 1) { $login_error = admin_language("la_text_sess_expired"); } return FALSE; //echo "Expired<br>"; } if ($objSession->HasSystemPermission("ADMIN") == 1) return TRUE; if(count($_POST)==0 || $_POST["adminlogin"]!=1) return FALSE; $login=$_POST["login"]; $password = $_POST["password"]; if (strlen($login) && strlen($password)) { if(!_IpAccess($_SERVER['REMOTE_ADDR'],$g_Allow,$g_Deny)) { $login_error = admin_language("la_text_address_denied"); return FALSE; } $valid = $objSession->Login($login, md5($password)); $hasperm = ($objSession->HasSystemPermission("ADMIN") == 1); if (($login=="root" || $hasperm) && $valid) { if(_ValidateModules()) { return TRUE; } else $login_error = "Missing or invalid In-Portal License"; } else { if(!$hasperm && $valid) { $login_error = admin_language("la_text_nopermissions"); } else { $login_error = admin_language("la_Text_Access_Denied"); } return FALSE; } } else { if(!strlen($login)) { $login_error = admin_language("la_Text_Missing_Username"); } else if(!strlen($password)) $login_error = admin_language("la_Text_Missing_Password"); return FALSE; } } #--------------------------------------------------------------------------- function _EnableCookieSID() { global $var_list, $objConfig; if((!$_COOKIE["sid"] && $objConfig->Get("CookieSessions")>0 && strlen($var_list["sid"])<2 && !headers_sent()) || strlen($_COOKIE["sid"])>0) { return TRUE; } else return FALSE; } function _IsSpider($UserAgent) { global $robots, $pathtoroot; $lines = file($pathtoroot."robots_list.txt"); if(!is_array($robots)) { $robots = array(); for($i=0;$i<count($lines);$i++) { $l = $lines[$i]; $p = explode("\t",$l,3); $robots[] = $p[2]; } } return in_array($UserAgent,$robots); } function _StripDomainHost($d) { $dotcount = substr_count($d,"."); if($dotcount==3) { $IsIp = TRUE; for($x=0;$x<strlen($d);$x++) { if(!is_numeric(substr($d,$x,1)) && substr($d,$x,1)!=".") { $IsIp = FALSE; break; } } } if($dotcount>1 && !$IsIp) { $p = explode(".",$d); $ret = $p[count($p)-2].".".$p[count($p)-1]; } else $ret = $d; return $ret; } function _MatchIp($ip1,$ip2) { $matched = TRUE; $ip = explode(".",$ip1); $MatchIp = explode(".",$ip2); for($i=0;$i<count($ip);$i++) { if($i==count($MatchIp)) break; if(trim($ip[$i]) != trim($MatchIp[$i]) || trim($ip[$i])=="*") { $matched=FALSE; break; } } return $matched; } function _IpAccess($IpAddress,$AllowList,$DenyList) { $allowed = explode(",",$AllowList); $denied = explode(",",$DenyList); $MatchAllowed = FALSE; for($x=0;$x<count($allowed);$x++) { $ip = explode(".",$allowed[$x]); $MatchAllowed = _MatchIp($IpAddress,$allowed[$x]); if($MatchAllowed) break; } $MatchDenied = FALSE; for($x=0;$x<count($denied);$x++) { $ip = explode(".",$denied[$x]); $MatchDenied = _MatchIp($IpAddress,$denied[$x]); if($MatchDenied) break; } $Result = (($MatchAllowed && !$MatchDenied) || (!$MatchAllowed && !$MatchDenied) || ($MatchAllowed && $MatchDenied)); return $Result; } function _ValidateModules() { global $i_Keys, $objConfig, $g_License; $lic = base64_decode($g_License); _ParseLicense($lic); $modules = array(); //echo "License: ".$lic."<br>"; $domain = _GetDomain(); //echo "Domain: ".$domain."<br>"; if(!_IsLocalSite($domain)) { $domain = _StripDomainHost($domain); //echo "New domain: $domain<br>"; //echo "<pre>"; print_r($i_Keys); echo "</pre>"; for($x=0;$x<count($i_Keys);$x++) { $key = $i_Keys[$x]; if(strlen(stristr($key["domain"],$domain))) { $modules = explode(",",$key["mod"]); //echo "Modules: $modules"; } } if(count($modules)>0) { return TRUE; } } else return TRUE; return FALSE; } function _ModuleLicensed($name) { global $i_Keys, $objConfig, $pathtoroot; - $vars = parse_ini_file($pathtoroot."config.php"); + $vars = parse_portal_ini($pathtoroot."config.php"); while($key = key($vars)) { $key = "g_".$key; global $$key; $$key = current($vars); //variable variables if(strlen($$key)>80) { $lic = base64_decode($$key); } next($vars); } //$lic = base64_decode($g_License); _ParseLicense($lic); $modules = array(); if(!_IsLocalSite(_GetDomain())) { for($x=0;$x<count($i_Keys);$x++) { $key = $i_Keys[$x]; if(strlen(stristr(_GetDomain(),$key["domain"]))) { //echo "ok<br>"; $modules = explode(",",$key["mod"]); } } if(in_array($name,$modules)) { //echo "ok<br>"; return TRUE; } } else { return TRUE; } return FALSE; } function _GetDomain() { global $objConfig, $g_Domain; if($objConfig->Get("DomainDetect")) { $d = $_SERVER['HTTP_HOST']; } else $d = $g_Domain; return $d; } function _keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr++; } return $tmp; } function _decrypt($txt,$key) { $txt = _keyED($txt,$key); $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { $md5 = substr($txt,$i,1); $i++; $tmp.= (substr($txt,$i,1) ^ $md5); } return $tmp; } function LoadFromRemote() { return ""; } function DLid() { global $lid; echo $lid."\n"; die(); } function _LoadLicense($LoadRemote=FALSE) { global $pathtoroot, $objConfig; $f = $pathtoroot."intechnic.php"; if(file_exists($f)) { $contents = file($f); $data = base64_decode($contents[1]); } else if($LoadRemote) return $LoadFromRemote; return $data; } function _VerifyKey($domain,$k) { $key = md5($domain); $lkey = substr($key,0,strlen($key)/2); $rkey = substr($key,strlen($key)/2); $r = $rkey.$lkey; if($k==$r) return TRUE; return FALSE; } function _ParseLicense($txt) { global $i_User, $i_Pswd, $i_Keys; $data = _decrypt($txt,"beagle"); $i_Keys = array(); $lines = explode("\n",$data); for($x=0;$x<count($lines);$x++) { $l = $lines[$x]; $p = explode("=",$l,2); switch($p[0]) { case "Username": $i_User = $p[1]; break; case "UserPass": $i_Pswd = $p[1]; break; default: if(substr($p[0],0,3)=="key") { $parts = explode("|",$p[1]); if(_VerifyKey($parts[0],$parts[1])) { unset($K); $k["domain"]=$parts[0]; $k["key"]=$parts[1]; $k["desc"]=$parts[2]; $k["mod"]=$parts[3]; $i_Keys[] = $k; } } break; } } } function _IsLocalSite($domain) { $localb = FALSE; if(substr($domain,0,3)=="172") { $b = substr($domain,0,6); $p = explode(".",$domain); $subnet = $p[1]; if($p[1]>15 && $p[1]<32) $localb=TRUE; } if($domain=="localhost" || $domain=="127.0.0.1" || substr($domain,0,7)=="192.168" || substr($domain,0,3)=="10." || $localb || strpos($domain,".")==0) { return TRUE; } return FALSE; } LogEntry("Loading Modules\n"); /* get the module list from the database */ $adodbConnection = GetADODBConnection(); $sql = "SELECT Name, Path, Var,TemplatePath, RootCat from ".GetTablePrefix()."Modules where Loaded=1 ORDER BY LoadOrder"; $rs = $adodbConnection->Execute($sql); while($rs && !$rs->EOF) { $key = $rs->fields["Var"]; $mod_prefix[$key] = $rs->fields["Path"]; $modules_loaded[$key] = $rs->fields["Name"]; $name = $rs->fields["Name"]; $template_path[$name] = $rs->fields["TemplatePath"]; $mod_root_cats[$name] = $rs->fields["RootCat"]; // echo $key . "=". $modules_loaded[$key]."<br>\n"; $rs->MoveNext(); } LogEntry("Loading Module Parser scripts\n"); /* for each module enabled, load up parser.php */ //foreach($mod_prefix as $key => $value) $LogLevel++; if(is_array($mod_prefix)) { foreach($mod_prefix as $key => $value) { $mod = $pathtoroot . $value . "parser.php"; // LogEntry("Loading parser $mod \n"); require_once($mod); } } $LogLevel--; LogEntry("Finished Loading Module Parser scripts\n"); /*now each module gets a look at the environment string */ $SessionQueryString = FALSE; if(!isset($FrontEnd)) $FrontEnd = false; if($FrontEnd != 1) $SessionQueryString = TRUE; if(is_array($mod_prefix)) ParseEnv(); /* create the session object */ $ip = $_SERVER["REMOTE_ADDR"]; if ( !isset($var_list['sid']) ) $var_list['sid'] = ''; if ( !isset($_GET['env']) ) $_GET['env'] = ''; if(strlen($var_list["sid"])==0 && strlen($_GET["env"])>0 && $objConfig->Get("CookieSessions")==2) { if(_IsSpider($_SERVER["HTTP_USER_AGENT"])) { $UseSession = FALSE; } else { /* switch user to GET session var */ if (!$_COOKIE['sid']) { $SessionQueryString = TRUE; } //else { //$SessionQueryString = FALSE; //} $UseSession = TRUE; } } else { $UseSession = TRUE; } if($var_list["sid"]=="_") $var_list["sid"]=""; /*setup action variable*/ $Action = isset($_REQUEST['Action']) ? $_REQUEST['Action'] : ''; if($Action=="m_logout") { $u = new clsUserSession($var_list["sid"] ,($SessionQueryString && $FrontEnd==1)); $u->Logout(); unset($u); $var_list_update["t"] = "index"; $var_list["t"] = ""; $var_list["sid"]=""; setcookie("login","",time()-3600); setcookie("sid","",time()-3600); } $CookieTest = isset($_COOKIE["CookiesTest"]) ? $_COOKIE["CookiesTest"] : ''; $HTTP_REFERER = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; if ( ($CookieTest == 1) || !strstr($HTTP_REFERER, $_SERVER['SERVER_NAME'].$objConfig->Get("Site_Path"))) { $SessionQueryString = FALSE; } if ($FrontEnd != 1) { $SessionQueryString = TRUE; } $objSession = new clsUserSession($var_list["sid"],($SessionQueryString && $FrontEnd==1)); if($UseSession) { if(!$objSession->ValidSession()) { /* Get rid of Invalid Session and make a brand new one*/ // echo "Dumping Session ".$var_list["sid"]."<br>"; unset($var_list["sid"]); $objSession->GetNewSession(); $var_list["sid"] = $objSession->GetSessionKey(); $var_list_update["sid"]=$objSession->GetSessionKey(); if(is_numeric($m_var_list["theme"])) $objSession->SetThemeName($m_var_list["theme"]); if($objConfig->Get("CookieSessions")>0 && !$SessionQueryString && !headers_sent()) setcookie("sid",$var_list["sid"]); //echo "New Session: ".$objSession->GetSessionKey()."<br>\n"; if(isset($_COOKIE["login"]) && $Action != "m_logout" && $FrontEnd==1) { $parts = explode("|",$_COOKIE["login"]); $username = $parts[0]; $pass = $parts[1]; $objSession->Login($username,$pass); } } else { //echo "Update Session<br>"; if($objSession->Get("Language")!=$m_var_list["lang"]) { $objSession->Set("Language",$m_var_list["lang"]); } $objSession->LoadSessionData(); $objSession->UpdateAccessTime(); $objSession->Update(); LoadEnv(); } } if(is_numeric($var_list["t"])) { if( !isset($CurrentTheme) ) $CurrentTheme = null; if(!is_object($CurrentTheme)) $CurrentTheme = $objThemes->GetItem($m_var_list["theme"]); $var_list["t"] = $CurrentTheme->GetTemplateById($var_list["t"]); $objSession->Set("Theme",$CurrentTheme->Get("Name")); } /*create the global current user object */ $UserID=$objSession->Get("PortalUserId"); $objCurrentUser = new clsPortalUser($UserID); $objLanguageCache = new clsLanguageCache($m_var_list["lang"]); /* include each module's action.php script */ LogEntry("Loading Module action scripts\n"); ## Global Referer Template $_local_t = $var_list["t"]; if(is_array($mod_prefix)) { foreach($mod_prefix as $key => $value) { if($FrontEnd==0 || !is_numeric($FrontEnd) || $FrontEnd==2) { $rootURL="http://".ThisDomain().$objConfig->Get("Site_Path"); $admin = $objConfig->Get("AdminDirectory"); if(!strlen($admin)) $admin = "admin"; $adminURL = $rootURL.$admin; $imagesURL = $adminURL."/images"; if(_ModuleLicensed($modules_loaded[$key])) { $mod = $pathtoroot.$value."module_init.php"; if(file_exists($mod)) require_once($mod); $mod = $pathtoroot . $value . "action.php"; if(file_exists($mod)) require_once($mod); $mod = $pathtoroot . $value . "searchaction.php"; if(file_exists($mod)) require_once($mod); } } if($FrontEnd==1 || $FrontEnd==2) { $mod = $pathtoroot.$value."module_init.php"; if(file_exists($mod)) require_once($mod); $mod = $pathtoroot . $value . "frontaction.php"; if(file_exists($mod)) require_once($mod); } } } if( !isset($SearchPerformed) ) $SearchPerformed = false; if($SearchPerformed == true) $objSearch->BuildIndexes(); LogEntry("Finished Loading Module action scripts\n"); ?> Property changes on: trunk/kernel/include/modules.php ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.3 \ No newline at end of property +1.4 \ No newline at end of property Index: trunk/admin/install.php =================================================================== --- trunk/admin/install.php (revision 88) +++ trunk/admin/install.php (revision 89) @@ -1,1879 +1,1879 @@ <?php error_reporting(0); //$new_version = '1.0.2'; define("GET_LICENSE_URL", "http://www.intechnic.com/myaccount/license.php"); define('BACKUP_NAME', 'dump(.*).txt'); // how backup dump files are named $general_error = ''; if ($_POST['install_type'] != '') { $install_type = $_POST['install_type']; } else if ($_GET['install_type'] != '') { $install_type = $_GET['install_type']; } $force_finish = isset($_REQUEST['ff']) ? true : false; $pathtoroot = ""; if(!strlen($pathtoroot)) { //$path=dirname(realpath($_SERVER['SCRIPT_FILENAME']));PATH_TRANSLATED $path=dirname(realpath($_SERVER['PATH_TRANSLATED'])); if(strlen($path)) { /* determine the OS type for path parsing */ $pos = strpos($path,":"); if ($pos === false) { $gOS_TYPE="unix"; $pathchar = "/"; } else { $gOS_TYPE="win"; $pathchar="\\"; } $p = $path.$pathchar; /*Start looking for the root flag file */ while(!strlen($pathtoroot) && strlen($p)) { $sub = substr($p,strlen($pathchar)*-1); if($sub==$pathchar) { $filename = $p."root.flg"; } else $filename = $p.$pathchar."root.flg"; if(file_exists($filename)) { $pathtoroot = $p; } else { $parent = realpath($p.$pathchar."..".$pathchar); if($parent!=$p) { $p = $parent; } else $p = ""; } } if(!strlen($pathtoroot)) $pathtoroot = ".".$pathchar; } else { $pathtoroot = ".".$pathchar; } } if( file_exists($pathtoroot.'debug.php') ) include_once($pathtoroot.'debug.php'); if( defined('DEBUG_MODE') ) { error_reporting(E_ALL & E_NOTICE); } else error_reporting(0); $path_char = GetPathChar(); //phpinfo(INFO_VARIABLES); $sub = substr($pathtoroot,strlen($pathchar)*-1); if($sub!=$pathchar) { $pathtoroot = $pathtoroot.$pathchar; } $is_install = TRUE; $admin = substr($path,strlen($pathtoroot)); $state = isset($_GET["state"]) ? $_GET["state"] : ''; if(!strlen($state)) { $state = $_POST["state"]; } include("install/install_lib.php"); + $ini_file = $pathtoroot."config.php"; if(file_exists($ini_file)) { $write_access = is_writable($ini_file); - $ini_vars = parse_ini_file($ini_file,TRUE); + $ini_vars = inst_parse_portal_ini($ini_file,TRUE); foreach($ini_vars as $secname => $section) { foreach($section as $key => $value) { $key = "g_".$key; global $$key; $$key = $value; } } } else { $state=""; $write_access = is_writable($pathtoroot); if($write_access) { set_ini_value("Database", "DBType", ""); set_ini_value("Database", "DBHost", ""); set_ini_value("Database", "DBUser", ""); set_ini_value("Database", "DBUserPassword", ""); set_ini_value("Database", "DBName", ""); - set_ini_value("Module Versions", "In-Portal", ""); + set_ini_value("Modules", "In-Portal", ""); save_values(); } } $titles[1] = "General Site Setup"; $configs[1] = "in-portal:configure_general"; $mods[1] = "In-Portal"; $titles[2] = "User Setup"; $configs[2] = "in-portal:configure_users"; $mods[2] = "In-Portal:Users"; $titles[3] = "Category Display Setup"; $configs[3] = "in-portal:configure_categories"; $mods[3] = "In-Portal"; - // simulate rootURL variable: begin $rootURL = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']); $tmp = explode('/', $rootURL); if( $tmp[ count($tmp) - 1 ] == $admin) unset( $tmp[ count($tmp) - 1 ] ); $rootURL = implode('/', $tmp).'/'; unset($tmp); //echo "RU: $rootURL<br>"; // simulate rootURL variable: end $db_savings = Array('dbinfo', 'db_config_save', 'db_reconfig_save', 'reinstall_process'); if(strlen($g_DBType)>0 && strlen($state)>0 && !in_array($state, $db_savings) ) { require_once($pathtoroot."kernel/startup.php"); $localURL=$rootURL."kernel/"; $adminURL = $rootURL.$admin; $imagesURL = $adminURL."/images"; //admin only util $pathtolocal = $pathtoroot."kernel/"; require_once ($pathtoroot.$admin."/include/elements.php"); //require_once ($pathtoroot."kernel/admin/include/navmenu.php"); require_once ($pathtolocal."admin/include/navmenu.php"); require_once($pathtoroot.$admin."/toolbar.php"); } function GetPathChar($path = null) { if( !isset($path) ) $path = $GLOBALS['pathtoroot']; $pos = strpos($path, ':'); return ($pos === false) ? "/" : "\\"; } function SuperStrip($str, $inverse = false) { $str = $inverse ? str_replace("%5C","\\",$str) : str_replace("\\","%5C",$str); return stripslashes($str); } require_once($pathtoroot.$admin."/install/inst_ado.php"); $helpURL = $rootURL.$admin.'/help/install_help.php?destform=popup&help_usage=install'; ?> <html> <head> <title>In-Portal Installation</title> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <meta name="generator" content="Notepad"> <link rel="stylesheet" type="text/css" href="include/style.css"> <LINK REL="stylesheet" TYPE="text/css" href="install/2col.css"> <SCRIPT LANGUAGE="JavaScript1.2"> function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function swap(imgid, src){ var ob = document.getElementById(imgid); ob.src = 'images/' + src; } function Continue() { document.iform1.submit(); } function CreatePopup(window_name, url, width, height) { // creates a popup window & returns it if(url == null && typeof(url) == 'undefined' ) url = ''; if(width == null && typeof(width) == 'undefined' ) width = 750; if(height == null && typeof(height) == 'undefined' ) height = 400; return window.open(url,window_name,'width='+width+',height='+height+',status=yes,resizable=yes,menubar=no,scrollbars=yes,toolbar=no'); } function ShowHelp(section) { var frm = document.getElementById('help_form'); frm.section.value = section; frm.method = 'POST'; CreatePopup('HelpPopup','<?php echo $rootURL.$admin; ?>/help/blank.html'); // , null, 600); frm.target = 'HelpPopup'; frm.submit(); } </SCRIPT> </head> <body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" style="height: 100%"> <form name="help_form" id="help_form" action="<?php echo $helpURL; ?>" method="post"><input type="hidden" id="section" name="section" value=""></form> <form enctype="multipart/form-data" name="iform1" id="iform1" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%"> <tr> <td height="90"> <table cellpadding="0" cellspacing="0" border="0" width="100%" height="90"> <tr> <td rowspan="3" valign="top"><a href="http://www.in-portal.net" target="_top"><img alt="In-portal" src="images/globe.gif" width="84" height="91" border="0"></a></td> <td rowspan="3" valign="top"><a href="http://www.in-portal.net" target="_top"><img alt="In-portal" src="images/logo.gif" width="150" height="91" border="0"></a></td> <td rowspan="3" width="100000" align="right"> </td> <td width="400"><img alt="" src="images/blocks.gif" width="400" height="73"></td> </tr> <tr><td align="right" background="images/version_bg.gif" class="head_version" valign="top"><img alt="" src="images/spacer.gif" width="1" height="14">In-Portal Version 1.0.0: English US</td></tr> <tr><td><img alt="" src="images/blocks2.gif" width="400" height="2"><br></td></tr> <tr><td bgcolor="black" colspan="4"><img alt="" src="images/spacer.gif" width="1" height="1"><br></td></tr> </table> </td> </tr> <?php require_once($pathtoroot."kernel/include/adodb/adodb.inc.php"); if(!strlen($state)) $state = @$_POST["state"]; //echo $state; if(strlen($state)==0) { $ado = inst_GetADODBConnection(); if($ado) { $installed = TableExists($ado,"ConfigurationAdmin,Category,Permissions"); } if(!minimum_php_version("4.1.2")) { $general_error = "You have version ".phpversion()." - please upgrade!"; //die(); } if(!$write_access) { if ($general_error != '') { $general_error .= '<br /><br />'; } $general_error .= "Install cannot write to config.php in the root directory of your in-portal installation ($pathtoroot)."; //die(); } if(!is_writable($pathtoroot."themes/")) { if ($general_error != '') { $general_error .= '<br /><br />'; } $general_error .= "In-portal's Theme directory must be writable (".$pathtoroot."themes/)."; //die(); } if(!is_writable($pathtoroot."kernel/images/")) { if ($general_error != '') { $general_error .= '<br /><br />'; } $general_error .= "In-portal's Image Upload directory must be writable (".$pathtoroot."kernel/images/)."; //die(); } if(!is_writable($pathtoroot."admin/backupdata/")) { if ($general_error != '') { $general_error .= '<br /><br />'; } $general_error .= "In-portal's Backup directory must be writable (".$pathtoroot."admin/backupdata/)."; //die(); } if(!is_writable($pathtoroot."admin/export/")) { if ($general_error != '') { $general_error .= '<br /><br />'; } $general_error .= "In-portal's Exportd directory must be writable (".$pathtoroot."admin/export/)."; //die(); } if($installed) { $state="reinstall"; } else { $state="dbinfo"; } } if($state=="reinstall_process") { $lic = base64_decode($g_License); if(strlen($lic)) { inst_ParseLicense($lic); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } $LoggedIn = FALSE; if($_POST["UserName"]=="root") { $ado = inst_GetADODBConnection(); $sql = "SELECT * FROM ".$g_TablePrefix."ConfigurationValues WHERE VariableName='RootPass'"; $rs = $ado->Execute($sql); if($rs && !$rs->EOF) { $RootPass = $rs->fields["VariableValue"]; if(strlen($RootPass)>0) $LoggedIn = ($RootPass==md5($_POST["UserPass"])); } } else { $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['UserName'])."&password=".md5($_POST['UserPass'])."&domain=".$_SERVER['SERVER_NAME'], "r"); if (!$rfile) { $LoggedIn = false; } else { $rcontents = ''; while (!feof($rfile)) { $line = fgets($rfile, 10000); $rcontents .= $line; } @fclose($rfile); if (substr($rcontents, 0, 5) == 'Error') { $LoggedIn = false; } else { $LoggedIn = true; } } //$LoggedIn = ($i_User == $_POST["UserName"] && ($i_Pswd == $_POST["UserPass"]) && strlen($i_User)>0) || strlen($i_User)==0; } if($LoggedIn) { if (!(int)$_POST["inp_opt"]) { $state="reinstall"; $inst_error = "Please select one of the options above!"; } else { switch((int)$_POST["inp_opt"]) { case 0: $inst_error = "Please select an option above"; break; case 1: /* clean out all tables */ $install_type = 4; $ado = inst_GetADODBConnection(); $filename = $pathtoroot.$admin."/install/inportal_remove.sql"; RunSchemaFile($ado,$filename); /* run install again */ $state="license"; break; case 2: $install_type = 3; $state="dbinfo"; break; case 3: $install_type = 5; $state="license"; break; case 4: $install_type = 6; /* clean out all tables */ $ado = inst_GetADODBConnection(); //$filename = $pathtoroot.$admin."/install/inportal_remove.sql"; //RunSchemaFile($ado,$filename); /* run install again */ $state="restore_select"; break; case 5: $install_type = 7; /* change DB config */ $state="db_reconfig"; break; case 6: $install_type = 8; $state = "upgrade"; break; } } } else { $state="reinstall"; $login_error = "Invalid Username or Password - Try Again"; } } if ($state == "upgrade") { $ado = inst_GetADODBConnection(); $Modules = array(); $Texts = array(); $sql = "SELECT Name, Version FROM ".$g_TablePrefix."Modules"; $rs = $ado->Execute($sql); $i = 0; while ($rs && !$rs->EOF) { $p = strtolower($rs->fields['Name']); // $modules .= strtolower($rs->fields['Name']).','; // $rs->MoveNext(); // } // $mod_arr = explode(",", substr($modules, 0, strlen($modules) - 1)); // foreach($mod_arr as $p) // { if ($p == 'in-portal') { $p = ''; } $dir_name = $pathtoroot.$p."/admin/install/upgrades/"; $dir = @dir($dir_name); //echo "<pre>"; print_r($dir); echo "</pre>"; while ($file = $dir->read()) { if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) { $file = str_replace("inportal_upgrade_v", "", $file); $file = str_replace(".sql", "", $file); if ($file != '') { $sql = "SELECT count(*) AS count FROM ".$g_TablePrefix."Modules WHERE Name = '".$rs->fields['Name']."' AND Version = '$file'"; $rs1 = $ado->Execute($sql); if ($rs1->fields['count'] == 0 && str_replace('.', '', $file) > str_replace('.', '', $rs->fields['Version'])) { //$sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '".$p."'"; //$rs2 = $ado->Execute($sql); if ($Modules[$i-1] == $rs->fields['Name']) { $Texts[$i-1] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")"; //$Modules[] = $rs->fields['Name']; $i--; } else { $Texts[$i] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")"; $Modules[$i] = $rs->fields['Name']; } $i++; } } } } $rs->MoveNext(); } $include_file = "install/upgrade.php"; } if ($state == "upgrade_process") { $ado = inst_GetADODBConnection(); $mod_arr = $_POST['modules']; foreach($mod_arr as $p) { $mod_name = strtolower($p); $sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '$p'"; $rs = $ado->Execute($sql); $current_version = $rs->fields['Version']; if ($mod_name == 'in-portal') { $mod_name = ''; } $dir_name = $pathtoroot.$mod_name."/admin/install/upgrades/"; $dir = @dir($dir_name); $new_version = ''; $tmp1 = 0; $tmp2 = 0; while ($file = $dir->read()) { if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) { $file = str_replace("inportal_upgrade_v", "", $file); $file = str_replace(".sql", "", $file); if ($file != '') { $tmp1 = str_replace(".", "", $file); if ($tmp1 > $tmp2) { $new_version = $file; } } } $tmp2 = $tmp1; } $version_nrs = explode(".", $new_version); for ($i = 0; $i < $version_nrs[0] + 1; $i++) { for ($j = 0; $j < $version_nrs[1] + 1; $j++) { for ($k = 0; $k < $version_nrs[2] + 1; $k++) { $try_version = "$i.$j.$k"; if (str_replace('.', '', $try_version) > str_replace('.', '', $current_version)) { $filename = $pathtoroot.$mod_name."/admin/install/upgrades/inportal_upgrade_v$try_version.sql"; //echo "Trying Version: $try_version<br>"; if(file_exists($filename)) { RunSQLFile($ado, $filename); - set_ini_value("Module Versions", $p, $try_version); + set_ini_value("Modules", $p, $try_version); save_values(); } } } } } $state = 'languagepack_upgrade'; } } // upgrade language pack if($state=='languagepack_upgrade') { $state = 'lang_install_init'; $_POST['lang'][] = 'english.lang'; $force_finish = true; } if($state=="db_reconfig_save") { - $ini_vars = parse_ini_file($ini_file,TRUE); + $ini_vars = inst_parse_portal_ini($ini_file,TRUE); foreach($ini_vars as $secname => $section) { foreach($section as $key => $value) { $key = "g_".str_replace("-", "", $key); global $$key; $$key = $value; } } unset($ado); $ado = VerifyDB('db_reconfig', 'finish', 'SaveDBConfig', true); } if($state=="db_reconfig") { $include_file = "install/db_reconfig.php"; } if($state=="restore_file") { if($_POST["submit"]=="Update") { $filepath = $_POST["backupdir"]; $state="restore_select"; } else { $filepath = stripslashes($_POST['backupdir']); $backupfile = $filepath.$path_char.str_replace('(.*)', $_POST['backupdate'], BACKUP_NAME); if(file_exists($backupfile) && is_readable($backupfile)) { $ado = inst_GetADODBConnection(); $show_warning = false; if (!$_POST['warning_ok']) { // Here we comapre versions between backup and config $file_contents = file_get_contents($backupfile); $file_tmp_cont = explode("#------------------------------------------", $file_contents); $tmp_vers = $file_tmp_cont[0]; $vers_arr = explode(";", $tmp_vers); - $ini_values = parse_ini_file($ini_file); + $ini_values = inst_parse_portal_ini($ini_file); foreach ($ini_values as $key => $value) { foreach ($vers_arr as $k) { if (strstr($k, $key)) { if (!strstr($k, $value)) { $show_warning = true; } } } } //$show_warning = true; } if (!$show_warning) { $filename = $pathtoroot.$admin.$path_char.'install'.$path_char.'inportal_remove.sql'; RunSchemaFile($ado,$filename); $state="restore_run"; } else { $state = "warning"; $include_file = "install/warning.php"; } } else { if ($_POST['backupdate'] != '') { $include_file = "install/restore_select.php"; $restore_error = "$backupfile not found or could not be read"; } else { $include_file = "install/restore_select.php"; $restore_error = "No backup selected!!!"; } } } //echo $restore_error; } if($state=="restore_select") { if( isset($_POST['backupdir']) ) $filepath = stripslashes($_POST['backupdir']); $include_file = "install/restore_select.php"; } if($state=="restore_run") { $ado = inst_GetADODBConnection(); $FileOffset = (int)$_GET["Offset"]; if(!strlen($backupfile)) $backupfile = SuperStrip($_GET['File'], true); $include_file = "install/restore_run.php"; } if($state=="db_config_save") { set_ini_value("Database", "DBType",$_POST["ServerType"]); set_ini_value("Database", "DBHost",$_POST["ServerHost"]); set_ini_value("Database", "DBName",$_POST["ServerDB"]); set_ini_value("Database", "DBUser",$_POST["ServerUser"]); set_ini_value("Database", "DBUserPassword",$_POST["ServerPass"]); set_ini_value("Database","TablePrefix",$_POST["TablePrefix"]); save_values(); - $ini_vars = parse_ini_file($ini_file,TRUE); + $ini_vars = inst_parse_portal_ini($ini_file,TRUE); foreach($ini_vars as $secname => $section) { foreach($section as $key => $value) { $key = "g_".str_replace("-", "", $key); global $$key; $$key = $value; } } unset($ado); $ado = VerifyDB('dbinfo', 'license'); } if($state=="dbinfo") { if ($install_type == '') { $install_type = 1; } $include_file = "install/dbinfo.php"; } if ($state == "download_license") { $ValidLicense = FALSE; if ($_POST['login'] != '' && $_POST['password'] != '') { // Here we determine weather login is ok & check available licenses $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['login'])."&password=".md5($_POST['password'])."&domain=".$_SERVER['SERVER_NAME'], "r"); if (!$rfile) { $get_license_error = "Unable to connect to the Intechnic server! Please try again later!"; $state = "get_license"; $include_file = "install/get_license.php"; } else { $rcontents = ''; while (!feof($rfile)) { $line = fgets($rfile, 10000); $rcontents .= $line; } @fclose($rfile); if (substr($rcontents, 0, 5) == 'Error') { $get_license_error = substr($rcontents, 6); $state = "get_license"; $include_file = "install/get_license.php"; } else { if (substr($rcontents, 0, 3) == "SEL") { $state = "download_license"; $license_select = substr($rcontents, 4); $include_file = "install/download_license.php"; } else { // Here we get one license $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $rcontents)); inst_ParseLicense($data); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); if($ValidLicense) { set_ini_value("Intechnic","License",base64_encode($data)); save_values(); $state="domain_select"; $got_license = 1; } else { $license_error="Invalid License File"; } if(!$ValidLicense) { $state="license"; } } } } } else if ($_POST['licenses'] == '') { $state = "get_license"; $get_license_error = "Username and / or password not specified!!!"; $include_file = "install/get_license.php"; } else { // Here we download license $rfile = @fopen(GET_LICENSE_URL."?license_id=".md5($_POST['licenses'])."&dlog=".md5($_POST['dlog'])."&dpass=".md5($_POST['dpass'])."&domain=".$_POST['domain'], "r"); if (!$rfile) { $get_license_error = "Unable to connect to the Intechnic server! Please try again later!"; $state = "get_license"; $include_file = "install/get_license.php"; } else { $rcontents = ''; while (!feof($rfile)) { $line = fgets($rfile, 10000); $rcontents .= $line; } @fclose($rfile); if (substr($rcontents, 0, 5) == 'Error') { $download_license_error = substr($rcontents, 6); $state = "download_license"; $include_file = "install/download_license.php"; } else { $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $rcontents)); inst_ParseLicense($data); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); if($ValidLicense) { set_ini_value("Intechnic","License",base64_encode($data)); save_values(); $state="domain_select"; } else { $license_error="Invalid License File"; } if(!$ValidLicense) { $state="license"; } } } } } if($state=="license_process") { - $ValidLicense = FALSE; + $ValidLicense = FALSE; switch($_POST["lic_opt"]) { case 1: /* download from intechnic */ $include_file = "install/get_license.php"; $state = "get_license"; //if(!$ValidLicense) //{ // $state="license"; //} break; case 2: /* upload file */ $file = $_FILES["licfile"]; if(is_array($file)) { move_uploaded_file($file["tmp_name"],$pathtoroot."themes/tmp.lic"); $fp = @fopen($pathtoroot."themes/tmp.lic","rb"); if($fp) { $lic = fread($fp,filesize($pathtoroot."themes/tmp.lic")); fclose($fp); } $data = inst_LoadLicense(FALSE,$pathtoroot."themes/tmp.lic"); @unlink($pathtoroot."themes/tmp.lic"); inst_ParseLicense($data); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); if($ValidLicense) { set_ini_value("Intechnic","License",base64_encode($data)); save_values(); $state="domain_select"; } else $license_error="Invalid License File"; } if(!$ValidLicense) { $state="license"; } break; case 3: /* existing */ if(strlen($g_License)) { $lic = base64_decode($g_License); inst_ParseLicense($lic); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); if($ValidLicense) { $state="domain_select"; } else { $state="license"; $license_error="Invalid or corrupt license detected"; } } else { $state="license"; $license_error="Missing License File"; } if(!$ValidLicense) { $state="license"; } break; case 4: $state="domain_select"; break; } if($ValidLicense) $state="domain_select"; } if($state=="license") { $include_file = "install/sel_license.php"; } if($state=="reinstall") { $ado = inst_GetADODBConnection(); $show_upgrade = false; $sql = "SELECT Name FROM ".$g_TablePrefix."Modules"; $rs = $ado->Execute($sql); $modules = ''; while ($rs && !$rs->EOF) { $modules .= strtolower($rs->fields['Name']).','; $rs->MoveNext(); } $mod_arr = explode(",", substr($modules, 0, strlen($modules) - 1)); foreach($mod_arr as $p) { if ($p == 'in-portal') { $p = ''; } $dir_name = $pathtoroot.$p."/admin/install/upgrades/"; $dir = @dir($dir_name); //echo "<pre>"; print_r($dir); echo "</pre>"; while ($file = $dir->read()) { if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) { $file = str_replace("inportal_upgrade_v", "", $file); $file = str_replace(".sql", "", $file); if ($file != '') { if ($p == '') { $p = 'in-portal'; } $sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '".$p."'"; $rs = $ado->Execute($sql); if (str_replace(".", "", $rs->fields['Version']) < str_replace(".", "", $file)) { $show_upgrade = true; } } } } } if ($install_type == '') { $install_type = 2; } $include_file = "install/reinstall.php"; } if($state=="login") { $lic = base64_decode($g_License); if(strlen($lic)) { inst_ParseLicense($lic); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } if(!$ValidLicense) { $state="license"; } else if($i_User == $_POST["UserName"] || $i_Pswd == $_POST["UserPass"]) { $state = "domain_select"; } else { $state="getuser"; $login_error = "Invalid User Name or Password. If you don't know your username or password, contact Intechnic Support"; } //die(); } if($state=="getuser") { $include_file = "install/login.php"; } if($state=="set_domain") { if(!is_array($i_Keys)) { $lic = base64_decode($g_License); if(strlen($lic)) { inst_ParseLicense($lic); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } } if($_POST["domain"]==1) { $domain = $_SERVER['HTTP_HOST']; set_ini_value("Intechnic","Domain",$domain); save_values(); $state="runsql"; } else { $domain = str_replace(" ", "", $_POST["other"]); if ($domain != '') { set_ini_value("Intechnic","Domain",$domain); save_values(); $state="runsql"; } else { $DomainError = 'Please enter valid domain!'; $state = "domain_select"; } } } if($state=="domain_select") { if(!is_array($i_Keys)) { $lic = base64_decode($g_License); if(strlen($lic)) { inst_ParseLicense($lic); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } } $include_file = "install/domain.php"; } if($state=="runsql") { $ado = inst_GetADODBConnection(); $installed = TableExists($ado,"ConfigurationAdmin,Category,Permissions"); if(!$installed) { // create tables $filename = $pathtoroot.$admin."/install/inportal_schema.sql"; RunSchemaFile($ado,$filename); // insert default info $filename = $pathtoroot.$admin."/install/inportal_data.sql"; RunSQLFile($ado,$filename); $sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = 'In-Portal'"; $rs = $ado->Execute($sql); - set_ini_value("Module Versions", "In-Portal", $rs->fields['Version']); + set_ini_value("Modules", "In-Portal", $rs->fields['Version']); save_values(); require_once $pathtoroot.'kernel/include/tag-class.php'; if( !is_object($objTagList) ) $objTagList = new clsTagList(); // install kernel specific tags $objTagList->DeleteTags(); // delete all existing tags in db // create 3 predifined tags (because there no functions with such names $t = new clsTagFunction(); $t->Set("name","include"); $t->Set("description","insert template output into the current template"); $t->Create(); $t->AddAttribute("_template","tpl","Template to insert","",TRUE); $t->AddAttribute("_supresserror","bool","Supress missing template errors","",FALSE); $t->AddAttribute("_dataexists","bool","Only include template output if content exists (content is defined by the tags in the template)","",FALSE); $t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE); unset($t); $t = new clsTagFunction(); $t->Set("name","perm_include"); $t->Set("description","insert template output into the current template if permissions are set"); $t->Create(); $t->AddAttribute("_template","tpl","Template to insert","",TRUE); $t->AddAttribute("_noaccess","tpl","Template to insert if access is denied","",FALSE); $t->AddAttribute("_permission","","Comma-separated list of permissions, any of which will grant access","",FALSE); $t->AddAttribute("_module","","Used in place of the _permission attribute, this attribute verifies the module listed is enabled","",FALSE); $t->AddAttribute("_system","bool","Must be set to true if any permissions in _permission list is a system permission","",FALSE); $t->AddAttribute("_supresserror","bool","Supress missing template errors","",FALSE); $t->AddAttribute("_dataexists","bool","Only include template output if content exists (content is defined by the tags in the template)","",FALSE); $t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE); unset($t); $t = new clsTagFunction(); $t->Set("name","mod_include"); $t->Set("description","insert templates from all enabled modules. No error occurs if the template does not exist."); $t->Create(); $t->AddAttribute("_template","tpl","Template to insert. This template path should be relative to the module template root directory","",TRUE); $t->AddAttribute("_modules","","Comma-separated list of modules. Defaults to all enabled modules if not set","",FALSE); $t->AddAttribute("_supresserror","bool","Supress missing template errors","",FALSE); $t->AddAttribute("_dataexists","bool","Only include template output if content exists (content is defined by the tags in the template)","",FALSE); $t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE); $objTagList->ParseFile($pathtoroot.'kernel/parser.php'); // insert module tags if( is_array($ItemTagFiles) ) foreach($ItemTagFiles as $file) $objTagList->ParseItemFile($pathtoroot.$file); $state="RootPass"; } else { $include_file = "install/install_finish.php"; $state="finish"; } } if ($state == "finish") { $include_file = "install/install_finish.php"; } if($state=="RootSetPass") { $pass = $_POST["RootPass"]; if(strlen($pass)<4) { $PassError = "Root Password must be at least 4 characters"; $state = "RootPass"; } else if ($pass != $_POST["RootPassConfirm"]) { $PassError = "Passwords does not match"; $state = "RootPass"; } else { $pass = md5($pass); $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$pass' WHERE VariableName='RootPass' OR VariableName='RootPassVerify'"; $ado = inst_GetADODBConnection(); $ado->Execute($sql); $state="modselect"; } } if($state=="RootPass") { $include_file = "install/rootpass.php"; } if($state=="lang_install_init") { include_once($pathtoroot."kernel/include/xml.php"); $ado = inst_GetADODBConnection(); if (TableExists($ado, "Language,Phrase")) { $MaxInserts = 200; $PhraseTable = GetTablePrefix()."ImportPhrases"; $EventTable = GetTablePrefix()."ImportEvents"; $sql = "CREATE TABLE $PhraseTable SELECT Phrase,Translation,PhraseType,LanguageId FROM ".GetTablePrefix()."Phrase WHERE PhraseId=-1"; $ado->Execute($sql); $sql = "CREATE TABLE $EventTable SELECT Template,MessageType,EventId,LanguageId FROM ".GetTablePrefix()."EmailMessage WHERE EmailMessageId=-1"; $ado->Execute($sql); $sql = "SELECT EventId,Event,Type FROM ".GetTablePrefix()."Events"; $rs = $ado->Execute($sql); $Events = array(); while($rs && !$rs->EOF) { $Events[$rs->fields["Event"]."_".$rs->fields["Type"]] = $rs->fields["EventId"]; $rs->MoveNext(); } if(count($_POST["lang"])>0) { $Langs = $_POST["lang"]; for($x=0;$x<count($Langs);$x++) { $lang = $Langs[$x]; $p = $pathtoroot.$admin."/install/langpacks/".$lang; /* parse xml file */ $fp = fopen($p,"r"); $xml = fread($fp,filesize($p)); fclose($fp); unset($objInXML); $objInXML = new xml_doc($xml); $objInXML->parse(); $objInXML->getTag(0,$name,$attribs,$contents,$tags); if(is_array($tags)) { foreach($tags as $t) { $LangRoot =& $objInXML->getTagByID($t); $PackName = $LangRoot->attributes["PACKNAME"]; $l = $objLanguages->GetItemByField("PackName",$PackName); if(is_object($l)) { $LangId = $l->Get("LanguageId"); } else { $l = new clsLanguage(); $l->Set("Enabled",1); $l->Create(); $NewLang = TRUE; $LangId = $l->Get("LanguageId"); } foreach($LangRoot->children as $tag) { switch($tag->name) { case "PHRASES": foreach($tag->children as $PhraseTag) { $Phrase = $ado->qstr($PhraseTag->attributes["LABEL"]); $Translation = $ado->qstr(base64_decode($PhraseTag->contents)); $PhraseType = $PhraseTag->attributes["TYPE"]; $psql = "INSERT INTO $PhraseTable (Phrase,Translation,PhraseType,LanguageId) VALUES ($Phrase,$Translation,$PhraseType,$LangId)"; $ado->Execute($psql); //echo "$psql <br>\n"; } break; case "DATEFORMAT": $DateFormat = $tag->contents; break; case "TIMEFORMAT": $TimeFormat = $tag->contents; break; case "DECIMAL": $Decimal = $tag->contents; break; case "THOUSANDS": $Thousands = $tag->contents; break; case "EVENTS": foreach($tag->children as $EventTag) { $event = $EventTag->attributes["EVENT"]; $MsgType = strtolower($EventTag->attributes["MESSAGETYPE"]); $template = base64_decode($EventTag->contents); $Type = $EventTag->attributes["TYPE"]; $EventId = $Events[$event."_".$Type]; $esql = "INSERT INTO $EventTable (Template,MessageType,EventId,LanguageId) VALUES ('$template','$MsgType',$EventId,$LangId)"; $ado->Execute($esql); //echo htmlentities($esql)."<br>\n"; } break; } if($NewLang) { $l->Set("PackName",$PackName); $l->Set("LocalName",$PackName); $l->Set("DateFormat",$DateFormat); $l->Set("TimeFormat",$TimeFormat); $l->Set("DecimalPoint",$Decimal); $l->Set("ThousandSep",$Thousands); $l->Update(); } } } } } $state="lang_install"; } else { $state="lang_select"; } } else { $general_error = 'Database error! No language tables found!'; } } if($state=="lang_install") { /* do pack install */ $Offset = (int)$_GET["Offset"]; $Status = (int)$_GET["Status"]; $PhraseTable = GetTablePrefix()."ImportPhrases"; $EventTable = GetTablePrefix()."ImportEvents"; if($Status==0) { $Total = TableCount($PhraseTable,"",0); } else { $Total = TableCount($EventTable,"",0); } if($Status==0) { $Offset = $objLanguages->ReadImportTable($PhraseTable, 1,"0,1,2", $force_finish ? false : true, 200,$Offset); if($Offset>=$Total) { $Offset=0; $Status=1; } if ($_POST['next_step']) { $next_step = $_POST['next_step']; } else if ($_GET['next_step']) { $next_step = $_GET['next_step']; } if($force_finish == true) $next_step = 3; $NextUrl = $_SERVER['PHP_SELF']."?Offset=$Offset&Status=$Status&state=lang_install&next_step=$next_step&install_type=$install_type"; if($force_finish == true) $NextUrl .= '&ff=1'; $include_file = "install/lang_run.php"; } else { if(!is_object($objMessageList)) $objMessageList = new clsEmailMessageList(); $Offset = $objMessageList->ReadImportTable($EventTable, $force_finish ? false : true,100,$Offset); if($Offset>$Total) { if ($_POST['next_step']) { $next_step = $_POST['next_step']; } else if ($_GET['next_step']) { $next_step = $_GET['next_step']; } if($force_finish == true) $next_step = 3; $NextUrl = $_SERVER['PHP_SELF']."?Offset=$Offset&Status=$Status&State=lang_install&next_step=$next_step&install_type=$install_type"; if($force_finish == true) $NextUrl .= '&ff=1'; $include_file = "install/lang_run.php"; } else { if( !$force_finish ) { $state = 'lang_default'; } else { $_POST['next_step'] = 4; $state = 'finish'; $include_file = "install/install_finish.php"; } } } } if($state=="lang_default_set") { // phpinfo(INFO_VARIABLES); $ado = inst_GetADODBConnection(); $PhraseTable = GetTablePrefix()."ImportPhrases"; $EventTable = GetTablePrefix()."ImportEvents"; $ado->Execute("DROP TABLE $PhraseTable"); $ado->Execute("DROP TABLE $EventTable"); $Id = $_POST["lang"]; $objLanguages->SetPrimary($Id); $state="postconfig_1"; } if($state=="lang_default") { $Packs = Array(); $objLanguages->Clear(); $objLanguages->LoadAllLanguages(); foreach($objLanguages->Items as $l) { $Packs[$l->Get("LanguageId")] = $l->Get("PackName"); } $include_file = "install/lang_default.php"; } if($state=="modinstall") { $doms = $_POST["domain"]; if(is_array($doms)) { $ado = inst_GetADODBConnection(); require_once $pathtoroot.'kernel/include/tag-class.php'; if( !is_object($objTagList) ) $objTagList = new clsTagList(); foreach($doms as $p) { $filename = $pathtoroot.$p."/admin/install.php"; if(file_exists($filename)) { include($filename); } } } $sql = "SELECT Name FROM ".GetTablePrefix()."Modules"; $rs = $ado->Execute($sql); while($rs && !$rs->EOF) { $p = $rs->fields['Name']; $mod_name = strtolower($p); if ($mod_name == 'in-portal') { $mod_name = ''; } $dir_name = $pathtoroot.$mod_name."/admin/install/upgrades/"; $dir = @dir($dir_name); $new_version = ''; $tmp1 = 0; $tmp2 = 0; while ($file = $dir->read()) { if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) { $file = str_replace("inportal_upgrade_v", "", $file); $file = str_replace(".sql", "", $file); if ($file != '') { $tmp1 = str_replace(".", "", $file); if ($tmp1 > $tmp2) { $new_version = $file; } } } $tmp2 = $tmp1; } $version_nrs = explode(".", $new_version); for ($i = 0; $i < $version_nrs[0] + 1; $i++) { for ($j = 0; $j < $version_nrs[1] + 1; $j++) { for ($k = 0; $k < $version_nrs[2] + 1; $k++) { $try_version = "$i.$j.$k"; $filename = $pathtoroot.$mod_name."/admin/install/upgrades/inportal_upgrade_v$try_version.sql"; if(file_exists($filename)) { RunSQLFile($ado, $filename); - set_ini_value("Module Versions", $p, $try_version); + set_ini_value("Modules", $p, $try_version); save_values(); } } } } $rs->MoveNext(); } $state="lang_select"; } if($state=="lang_select") { $Packs = GetLanguageList(); $include_file = "install/lang_select.php"; } if($state=="modselect") { /* /admin/install.php */ $UrlLen = (strlen($admin) + 12)*-1; $pathguess =substr($_SERVER["SCRIPT_NAME"],0,$UrlLen); $sitepath = $pathguess; $esc_path = str_replace("\\","/",$pathtoroot); $esc_path = str_replace("/","\\",$esc_path); //set_ini_value("Site","DomainName",$_SERVER["SERVER_NAME"]); //$g_DomainName= $_SERVER["SERVER_NAME"]; save_values(); $ado = inst_GetADODBConnection(); if(substr($sitepath,0,1)!="/") $sitepath="/".$sitepath; if(substr($sitepath,-1)!="/") $sitepath .= "/"; $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$sitepath' WHERE VariableName='Site_Path'"; $ado->Execute($sql); $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$g_Domain' WHERE VariableName='Server_Name'"; $ado->Execute($sql); $Modules = inst_GetModuleList(); $include_file = "install/modselect.php"; } if(substr($state,0,10)=="postconfig") { $p = explode("_",$state); $step = $p[1]; if ($_POST['Site_Path'] != '') { $sql = "SELECT Name, Version FROM ".$g_TablePrefix."Modules"; $rs = $ado->Execute($sql); $modules_str = ''; while ($rs && !$rs->EOF) { $modules_str .= $rs->fields['Name'].' ('.$rs->fields['Version'].'),'; $rs->MoveNext(); } $modules_str = substr($modules_str, 0, strlen($modules_str) - 1); $rfile = @fopen(GET_LICENSE_URL."?url=".base64_encode($_SERVER['SERVER_NAME'].$_POST['Site_Path'])."&modules=".base64_encode($modules_str)."&domain=".md5($_SERVER['SERVER_NAME']), "r"); if (!$rfile) { $get_license_error = "Unable to connect to the Intechnic server! Please try again later!"; $state = "postconfig_1"; $include_file = "install/postconfig.php"; } else { $rcontents = ''; while (!feof($rfile)) { $line = fgets($rfile, 10000); $rcontents .= $line; } @fclose($rfile); } } if(strlen($_POST["oldstate"])>0) { $s = explode("_",$_POST["oldstate"]); $oldstep = $s[1]; if($oldstep<count($configs)) { $section = $configs[$oldstep]; $module = $mods[$oldstep]; $title = $titles[$oldstep]; $objAdmin = new clsConfigAdmin($module,$section,TRUE); $objAdmin->SaveItems($_POST,TRUE); } } $section = $configs[$step]; $module = $mods[$step]; $title = $titles[$step]; $step++; if($step <= count($configs)+1) { $include_file = "install/postconfig.php"; } else $state = "theme_sel"; } if($state=="theme_sel") { $objThemes->CreateMissingThemes(); $include_file = "install/theme_select.php"; } if($state=="theme_set") { ## get & define Non-Blocking & Blocking versions ## $blocking_sockets = minimum_php_version("4.3.0")? 0 : 1; $ado = inst_GetADODBConnection(); $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$blocking_sockets' WHERE VariableName='SocketBlockingMode'"; $ado->Execute($sql); ## get & define Non-Blocking & Blocking versions ## $theme_id = $_POST["theme"]; $pathchar="/"; //$objThemes->SetPrimaryTheme($theme_id); $t = $objThemes->GetItem($theme_id); $t->Set("Enabled",1); $t->Set("PrimaryTheme",1); $t->Update(); $t->VerifyTemplates(); $include_file = "install/install_finish.php"; $state="finish"; } if ($state == "adm_login") { echo "<script>window.location='index.php';</script>"; } switch($state) { case "modselect": $title = "Select Modules"; $help = "<p>Select the In-Portal modules you wish to install. The modules listed to the right "; $help .="are all modules included in this installation that are licensed to run on this server. </p>"; break; case "reinstall": $title = "Installation Maintenance"; $help = "<p>A Configuration file has been detected on your system and it appears In-Portal is correctly installed. "; $help .="In order to work with the maintenance functions provided to the left you must provide the Intechnic "; $help .="Username and Password you used when obtaining the license file residing on the server, or your admin Root password. "; $help .=" <i>(Use Username 'root' if using your root password)</i></p>"; $help .= "<p>To removing your existing database and start with a fresh installation, select the first option "; $help .= "provided. Note that this operation cannot be undone and no backups are made! Use at your own risk.</p>"; $help .="<p>If you wish to scrap your current installation and install to a new location, choose the second option. "; $help .="If this option is selected you will be prompted for new database configuration information.</p>"; $help .="<p>The <i>Update License Information</i> option is used to update your In-Portal license data. Select this option if you have "; $help .="modified your licensing status with Intechnic, or you have received new license data via email</p>"; break; case "RootPass": $title = "Set Admin Root Password"; $help = "<p>The Root Password is initially required to access the admin sections of In-Portal. "; $help .="The root user cannot be used to access the front-end of the system, so it is recommended that you "; $help .="create additional users with admin privlidges.</p>"; break; case "finish": $title = "Thank You!"; $help ="<P>Thanks for using In-Portal! Be sure to visit <A TARGET=\"_new\" HREF=\"http://www.in-portal.net\">www.in-portal.net</A> "; $help.=" for the latest news, module releases and support. </p>"; break; case "license": $title = "License Configuration"; $help ="<p>A License is required to run In-Portal on a server connected to the Internet. You "; $help.="can run In-Portal on localhost, non-routable IP addresses, or other computers on your LAN. "; $help.="If Intechnic has provided you with a license file, upload it here. Otherwise select the first "; $help.="option to allow Install to download your license for you.</p>"; $help.="<p>If a valid license has been detected on your server, you can choose the <i>Use Existing License</i> "; $help.="and continue the installation process</p>"; break; case "domain_select": $title="Select Licensed Domain"; $help ="<p>Select the domain you wish to configure In-Portal for. The <i>Other</i> option "; $help.=" can be used to configure In-Portal for use on a local domain.</p>"; $help.="<p>For local domains, enter the hostname or LAN IP Address of the machine running In-Portal.</p>"; break; case "db_reconfig": case "dbinfo": $title="Database Configuration"; $help = "<p>In-Portal needs to connect to your Database Server. Please provide the database server type*, "; $help .="host name (<i>normally \"localhost\"</i>), Database user name, and database Password. "; $help .="These fields are required to connect to the database.</p><p>If you would like In-Portal "; $help .="to use a table prefix, enter it in the field provided. This prefix can be any "; $help .=" text which can be used in the names of tables on your system. The characters entered in this field "; $help .=" are placed <i>before</i> the names of the tables used by In-Portal. For example, if you enter \"inp_\""; $help .=" into the prefix field, the table named Category will be named inp_Category.</p>"; break; case "lang_select": $title="Language Pack Installation"; $help = "<p>Select the language packs you wish to install. Each language pack contains all the phrases "; $help .="used by the In-Portal administration and the default template set. Note that at least one "; $help .="pack <b>must</b> be installed.</p>"; break; case "lang_default": $title="Select Default Language"; $help = "<p>Select which language should be considered the \"default\" language. This is the language "; $help .="used by In-Portal when a language has not been selected by the user. This selection is applicable "; $help .="to both the administration and front-end.</p>"; break; case "lang_install": $title="Installing Language Packs"; $help = "<p>The language packs you have selected are being installed. You may install more languages at a "; $help.="later time from the Regional admin section.</p>"; break; case "postconfig_1": $help = "<P>These options define the general operation of In-Portal. Items listed here are "; $help .="required for In-Portal's operation.</p><p>When you have finished, click <i>save</i> to continue.</p>"; break; case "postconfig_2": $help = "<P>User Management configuration options determine how In-Portal manages your user base.</p>"; $help .="<p>The groups listed to the right are pre-defined by the installation process and may be changed "; $help .="through the Groups section of admin.</p>"; break; case "postconfig_3": $help = "<P>The options listed here are used to control the category list display functions of In-Portal. </p>"; break; case "theme_sel": $title="Select Default Theme"; $help = "<P>This theme will be used whenever a front-end session is started. "; $help .="If you intend to upload a new theme and use that as default, you can do so through the "; $help .="admin at a later date. A default theme is required for session management.</p>"; break; case "get_license": $title="Download License from Intechnic"; $help ="<p>A License is required to run In-Portal on a server connected to the Internet. You "; $help.="can run In-Portal on localhost, non-routable IP addresses, or other computers on your LAN.</p>"; $help.="<p>Here as you have selected download license from Intechnic you have to input your username and "; $help.="password of your In-Business account in order to download all your available licenses.</p>"; break; case "download_license": $title="Download License from Intechnic"; $help ="<p>A License is required to run In-Portal on a server connected to the Internet. You "; $help.="can run In-Portal on localhost, non-routable IP addresses, or other computers on your LAN.</p>"; $help.="<p>Please choose the license from the drop down for this site! </p> "; break; case "restore_select": $title="Select Restore File"; $help = "<P>Select the restore file to use to reinstall In-Portal. If your backups are not performed "; $help .= "in the default location, you can enter the location of the backup directory and click the "; $help .="<i>Update</i> button.</p>"; case "restore_run": $title= "Restore in Progress"; $help = "<P>Restoration of your system is in progress. When the restore has completed, the installation "; $help .="will continue as normal. Hitting the <i>Cancel</i> button will restart the entire installation process. "; break; case "warning": $title = "Restore in Progress"; $help = "<p>Please approve that you understand that you are restoring your In-Portal data base from other version of In-Portal.</p>"; break; case "update": $title = "Update In-Portal"; $help = "<p>Select modules from the list, you need to update to the last downloaded version of In-Portal</p>"; break; } if ($_POST['next_step']) { $tmp_step = $_POST['next_step']; } else if ($_GET['next_step']) { $tmp_step = $_GET['next_step']; } if (!$tmp_step) { $tmp_step = 1; } if ($got_license == 1) { $tmp_step++; } $next_step = $tmp_step + 1; if ($general_error != '') { $state = ''; $title = ''; $help = ''; $general_error = $general_error.'<br /><br />Installation cannot continue!'; } if ($include_file == '' && $general_error == '' && $state == '') { $state = ''; $title = ''; $help = ''; $filename = $pathtoroot.$admin."/install/inportal_remove.sql"; RunSQLFile($ado,$filename); $general_error = 'Unexpected installation error! <br /><br />Installation has been stopped!'; } if ($restore_error != '') { $next_step = 3; $tmp_step = 2; } if ($PassError != '') { $tmp_step = 4; $next_step = 5; } if ($DomainError != '') { $tmp_step--; $next_step = $tmp_step + 1; } if ($db_error != '') { $tmp_step--; $next_step = $tmp_step + 1; } if ($state == "warning") { $tmp_step--; $next_step = $tmp_step + 1; } ?> <tr height="100%"> <td valign="top"> <table cellpadding=10 cellspacing=0 border=0 width="100%" height="100%"> <tr valign="top"> <td style="width: 200px; background: #009ff0 url(images/bg_install_menu.gif) no-repeat bottom right; border-right: 1px solid #000"> <img src="images/spacer.gif" width="180" height="1" border="0" alt=""><br> <span class="admintitle-white">Installation</span> <!--<ol class="install"> <li class="current">Licence Verification <li>Configuration <li>File Permissions <li>Security <li>Integrity Check </ol> </td>--> <?php if ($general_error == '') { ?> <?php if ($install_type == 1) { ?> <ol class="install"> <li <?php if ($tmp_step == 1) { ?>class="current"<?php } ?>>Database Configuration <li <?php if ($tmp_step == 2 || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License <li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain <li <?php if ($tmp_step == 4 ) { ?>class="current"<?php } ?>>Set Root Password <li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Select Modules to Install <li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Install Language Packs <li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Post-Install Configuration <li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Finish </ol> <?php } else if ($install_type == 2) { ?> <ol class="install"> <li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification <!--<li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License <li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain <li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Set Root Password <li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Select Modules to Install <li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Install Language Packs <li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Post-Install Configuration <li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Finish--> </ol> <?php } else if ($install_type == 3) { ?> <ol class="install"> <li>License Verification <li <?php if ($tmp_step == 2) { ?>class="current"<?php } ?>>Database Configuration <li <?php if ($tmp_step == 3 || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License <li <?php if ($tmp_step == 4 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain <li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Set Root Password <li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Select Modules to Install <li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Install Language Packs <li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Post-Install Configuration <li <?php if ($tmp_step == 9) { ?>class="current"<?php } ?>>Finish </ol> <?php } else if ($install_type == 4) { ?> <ol class="install"> <li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification <li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License <li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain <li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Set Root Password <li <?php if ($tmp_step == 5) { ?>class="current"<?php } ?>>Select Modules to Install <li <?php if ($tmp_step == 6) { ?>class="current"<?php } ?>>Install Language Packs <li <?php if ($tmp_step == 7) { ?>class="current"<?php } ?>>Post-Install Configuration <li <?php if ($tmp_step == 8) { ?>class="current"<?php } ?>>Finish </ol> <?php } else if ($install_type == 5) { ?> <ol class="install"> <li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification <li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_POST['lic_opt'] == 1) { ?>class="current"<?php } ?>>Select License <li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1) { ?>class="current"<?php } ?>>Select Domain <li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Finish </ol> <?php } else if ($install_type == 6) { ?> <ol class="install"> <li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification <li <?php if (($tmp_step == 2 && $login_error == '' && $inst_error == '') || $_GET['show_prev'] == 1 || $_POST['backupdir']) { ?>class="current"<?php } ?>>Select Backup File <li <?php if ($tmp_step == 3 && $_POST['lic_opt'] != 1 && $_GET['show_prev'] != 1 && !$_POST['backupdir']) { ?>class="current"<?php } ?>>Finish </ol> <?php } else if ($install_type == 7) { ?> <ol class="install"> <li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification <li <?php if ($tmp_step == 2 && $login_error == '' && $inst_error == '') { ?>class="current"<?php } ?>>Database Configuration <li <?php if ($tmp_step == 3) { ?>class="current"<?php } ?>>Finish </ol> <?php } else if ($install_type == 8) { ?> <ol class="install"> <li <?php if ($tmp_step == 1 || $login_error != '' || $inst_error != '') { ?>class="current"<?php } ?>>License Verification <li <?php if ($tmp_step == 2 && $login_error == '' && $inst_error == '') { ?>class="current"<?php } ?>>Select Modules to Upgrade <li <?php if ($tmp_step == 3) { ?>class="current"<?php } ?>>Language Pack Upgrade <li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Finish </ol> <?php } ?> <?php include($include_file); ?> <?php } else { ?> <?php include("install/general_error.php"); ?> <?php } ?> <td width="40%" style="border-left: 1px solid #000; background: #f0f0f0"> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr> <td class="subsectiontitle" style="border-bottom: 1px solid #000000; background-color:#999"><?php echo $title;?></td> </tr> <tr> <td class="text"><?php echo $help;?></td> </tr> </table> </td> </tr> </table> <br> </td> </tr> </table> </td> </tr> <tr> <td id="footer"> Powered by In-portal © 1997-2004, Intechnic Corporation. All rights reserved. <br><img src="images/spacer.gif" width="1" height="10" alt=""> </td> </tr> </table> </form> </body> </html> \ No newline at end of file Property changes on: trunk/admin/install.php ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.15 \ No newline at end of property +1.16 \ No newline at end of property Index: trunk/admin/install/install_lib.php =================================================================== --- trunk/admin/install/install_lib.php (revision 88) +++ trunk/admin/install/install_lib.php (revision 89) @@ -1,590 +1,628 @@ <?php function minimum_php_version( $vercheck ) { $minver = explode(".", $vercheck); $curver = explode(".", phpversion()); if (($curver[0] < $minver[0]) || (($curver[0] == $minver[0]) && ($curver[1] < $minver[1])) || (($curver[0] == $minver[0]) && ($curver[1] == $minver[1]) && ($curver[2][0] < $minver[2][0]))) return false; else return true; } function TableExists($ado, $tables) { global $g_TablePrefix; $t = explode(",",$tables); $i = $ado->MetaTables(); for($x=0;$x<count($i);$x++) $i[$x] = strtolower($i[$x]); $AllFound = TRUE; for($tIndex=0;$tIndex<count($t);$tIndex++) { $table = $g_TablePrefix.$t[$tIndex]; $table = strtolower($table); if(!in_array($table,$i)) { $AllFound = FALSE; } } return $AllFound; } function set_ini_value($section, $key, $newvalue) { global $ini_vars; $ini_vars[$section][$key] = $newvalue; } function save_values() { // Should write something to somwere, but it doesn't :( global $ini_file,$ini_vars; //if( file_exists($ini_file) ) //{ $fp = fopen($ini_file, "w"); foreach($ini_vars as $secname => $section) { fwrite($fp,"[".$secname."]\n"); foreach($section as $key => $value) fwrite($fp,"$key = \"$value\"\n"); fwrite($fp,"\n"); } fclose($fp); //} } function RunSchemaFile($ado,$filename) { if(file_exists($filename)) { $fp = fopen($filename, "r");//open file $sql = fread($fp, filesize($filename)); fclose($fp); if(strlen($sql)) RunSchemaText($ado,$sql); } } function RunSchemaText($ado,$sql) { global $g_TablePrefix; if(strlen($g_TablePrefix)) { $what = "CREATE TABLE "; $replace = "CREATE TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "DROP TABLE "; $replace = "DROP TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "INSERT INTO "; $replace = "INSERT INTO ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "UPDATE "; $replace = "UPDATE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "ALTER TABLE "; $replace = "ALTER TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); } $commands = explode("# --------------------------------------------------------",$sql); if(count($commands)>0) { for($i=0;$i<count($commands);$i++) { $cmd = $commands[$i]; $cmd = trim($cmd); if(strlen($cmd)>0) { $ado->Execute($cmd); if($ado->ErrorNo()!=0) { $db_error = $ado->ErrorMsg()." COMMAND:<PRE>$cmd</PRE>"; //echo "<br><p class=\"error\">$db_error</p>"; //break; } } } } } function RunSQLText($ado,$allsql) { global $g_TablePrefix; $line = 0; while($line<count($allsql)) { $sql = $allsql[$line]; if(strlen(trim($sql))>0 && substr($sql,0,1)!="#") { if(strlen($g_TablePrefix)) { $what = "CREATE TABLE "; $replace = "CREATE TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "DROP TABLE "; $replace = "DROP TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "INSERT INTO "; $replace = "INSERT INTO ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "UPDATE "; $replace = "UPDATE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "ALTER TABLE "; $replace = "ALTER TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); } $sql = trim($sql); if(strlen($sql)>0) { $ado->Execute($sql); if($ado->ErrorNo()!=0) { $db_error = $ado->ErrorMsg()." COMMAND:<PRE>$sql</PRE>"; //echo "<br><p class=\"error\">$db_error</p>"; $error = TRUE; } } } $line++; } } function RunSQLFile($ado,$filename) { if(file_exists($filename)) { $allsql = file($filename); RunSQLText($ado,$allsql); } } function RunRestoreFile($ado,$filename,$FileOffset,$MaxLines) { $size = filesize($filename); if($FileOffset > $size) return -2; $fp = fopen($filename,"r"); if(!$fp) return -1; if($FileOffset>0) { fseek($fp,$FileOffset); } else { $EndOfSQL = FALSE; $sql = ""; while(!feof($fp) && !$EndOfSQL) { $l = fgets($fp,16384); if(substr($l,0,11)=="INSERT INTO") { $EndOfSQL = TRUE; } else { $sql .= $l; $FileOffset = ftell($fp) - strlen($l); } } if(strlen($sql)) { RunSchemaText($ado,$sql); } fseek($fp,$FileOffset); } $LinesRead = 0; $sql = ""; $AllSql = array(); while($LinesRead < $MaxLines && !feof($fp)) { $sql = fgets($fp, 16384); if(strlen($sql)) { $AllSql[] = $sql; $LinesRead++; } } if(!feof($fp)) { $FileOffset = ftell($fp); } else { $FileOffset = $TotalSize; } fclose($fp); if(count($AllSql)>0) RunSQLText($ado,$AllSql); return (int)$FileOffset; } function inst_keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); $ctr++; } return $tmp; } function inst_decrypt($txt,$key) { $txt = inst_keyED($txt,$key); $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { $md5 = substr($txt,$i,1); $i++; $tmp.= (substr($txt,$i,1) ^ $md5); } return $tmp; } function inst_LoadFromRemote() { return ""; } function mod_DLid() { global $DownloadId; echo $DownloadId."\n"; die(); } function inst_LoadLicense($LoadRemote=FALSE,$file="") { global $path,$admin; if(!strlen($file)) { $f = $path.$admin."/include/inportal.dat"; } else $f = $file; if(file_exists($f)) { $contents = file($f); $data = base64_decode($contents[1]); } else if($LoadRemote) return $LoadFromRemote; return $data; } function inst_SaveLicense($data) { } function inst_VerifyKey($domain,$k) { $key = md5($domain); $lkey = substr($key,0,strlen($key)/2); $rkey = substr($key,strlen($key)/2); $r = $rkey.$lkey; if($k==$r) return TRUE; return FALSE; } function inst_ParseLicense($txt) { global $i_User, $i_Pswd, $i_Keys; $data = inst_decrypt($txt,"beagle"); $i_Keys = array(); $lines = explode("\n",$data); for($x=0;$x<count($lines);$x++) { $l = $lines[$x]; $p = explode("=",$l,2); switch($p[0]) { case "Username": $i_User = $p[1]; break; case "UserPass": $i_Pswd = $p[1]; break; default: if(substr($p[0],0,3)=="key") { $parts = explode("|",$p[1]); if(inst_VerifyKey($parts[0],$parts[1])) { unset($K); $k["domain"]=$parts[0]; $k["key"]=$parts[1]; $k["desc"]=$parts[2]; $k["mod"]=$parts[3]; $i_Keys[] = $k; } } break; } } } function inst_IsLocalSite($domain) { $localb = FALSE; if(substr($domain,0,3)=="172") { $b = substr($domain,0,6); $p = explode(".",$domain); $subnet = $p[1]; if($p[1]>15 && $p[1]<32) $localb=TRUE; } $localname = (strpos($domain,".")==0); if($domain=="localhost" || $domain=="127.0.0.1" || substr($domain,0,7)=="192.168" || substr($domain,0,3)=="10." || $localb || $localname) { return TRUE; } return FALSE; } function inst_ModuleLicensed($name) { global $i_Keys, $objConfig, $g_License, $g_Domain; //$lic = LoadLicense(); $lic = base64_decode($g_License); inst_ParseLicense($lic); // echo "Checking $g_Domain..<br>\n"; // echo "<PRE>";print_r($i_Keys); echo "</PRE><br>"; $modules = array(); if(!inst_IsLocalSite($g_Domain)) { for($x=0;$x<count($i_Keys);$x++) { $key = $i_Keys[$x]; if($key["domain"]==$g_Domain) { $modules = explode(",",strtolower($key["mod"])); } } if(in_array($name,$modules)) { // echo "Module $name is licensed<br>\n"; return TRUE; } else { // echo "Module $name is not licensed<br>\n"; return FALSE; } } else return TRUE; return FALSE; } +function inst_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 = ''; + foreach($contents as $line) { + $line = trim($line); + $line = eregi_replace(';[.]*','',$line); + if(strlen($line) > 0) { + //echo $line . " - "; + if(eregi('^[[a-z]+]$',$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 + + return $retval; +} + function inst_GetModuleList() { global $rootpath,$pathchar,$admin, $pathtoroot; $path = $pathtoroot; $new = array(); if ($dir = @opendir($path)) { while (($file = readdir($dir)) !== false) { if($file !="." && $file !=".." && substr($file,0,1)!="_") { if(is_dir($path."/".$file)) { $inst_file = $path.$file."/admin/install.php"; if(file_exists($inst_file)) { // if(inst_ModuleLicensed($file)) // { $new[$file] = $inst_file; // } } } } } closedir($dir); } return array_keys($new); } function GetDirList ($dirName) { $filedates = array(); $d = dir($dirName); while($entry = $d->read()) { if ($entry != "." && $entry != "..") { if (!is_dir($dirName."/".$entry)) { $filedate[]=$entry; } } } $d->close(); return $filedate; } function GetLanguageList() { global $pathtoroot, $admin; $packs = array(); $dir = $pathtoroot.$admin."/install/langpacks"; $files = GetDirList($dir); if(is_array($files)) { foreach($files as $f) { $p = pathinfo($f); if($p["extension"]=="lang") { $packs[] = $f; } } } return $packs; } function section_header($title, $return_result = false) { $ret = '<table border="0" cellpadding="2" cellspacing="0" class="tableborder_full" width="100%" height="30">'. '<tr><td class="tablenav" width="580" nowrap background="images/tabnav_left.jpg"><span class="tablenav_link"> '.$title.'</span>'. '</td><td align="right" class="tablenav" background="images/tabnav_back.jpg" width="100%">'. "<a class=\"link\" onclick=\"ShowHelp('in-portal:install');\"><img src=\"images/blue_bar_help.gif\" border=\"0\"></A>". '</td></tr></table>'; if( $return_result ) return $ret; else echo $ret; } function &VerifyDB($error_state, $next_state, $success_func = null, $db_must_exist = false) { // perform various check type to database specified // 1. user is allowed to connect to database // 2. user has all types of permissions in database global $state, $db_error; // enshure we use data from post & not from config $GLOBALS['g_DBType'] = $_POST["ServerType"]; $GLOBALS['g_DBHost'] = $_POST["ServerHost"]; $GLOBALS['g_DBName'] = $_POST["ServerDB"]; $GLOBALS['g_DBUser'] = $_POST["ServerUser"]; $GLOBALS['g_DBUserPassword'] = $_POST["ServerPass"]; // connect to database $ado = inst_GetADODBConnection(); if($ado->ErrorNo() != 0) { // was error while connecting $db_error = "Connection Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg(); $state = $error_state; } elseif( $ado->ErrorNo() == 0 ) { // if connected, then check if all sql statements work $test_result = 1; $sql_tests[] = 'DROP TABLE IF EXISTS test_table'; $sql_tests[] = 'CREATE TABLE test_table(test_col mediumint(6))'; $sql_tests[] = 'INSERT INTO test_table(test_col) VALUES (5)'; $sql_tests[] = 'UPDATE test_table SET test_col = 12'; $sql_tests[] = 'ALTER TABLE test_table ADD COLUMN new_col varchar(10)'; $sql_tests[] = 'SELECT * FROM test_table'; $sql_tests[] = 'DELETE FROM test_table'; $sql_tests[] = 'DROP TABLE test_table'; foreach($sql_tests as $sql_test) { $ado->Execute($sql_test); if( $ado->ErrorNo()!=0 ) { $test_result = 0; break; } } if($test_result == 1) { // if statements work & connection made, then check table existance $db_exists = TableExists($ado,"ConfigurationAdmin,Category,Permissions"); if($db_exists != $db_must_exist) { $state = $error_state; $db_error = $db_must_exist ? 'An In-Portal Database already exists at this location' : 'An In-Portal Database was not found at this location'; } else { $state = $next_state; if( isset($success_func) ) $success_func(); } } else { // user has insufficient permissions in database specified $db_error = "Permission Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg(); $state = $error_state; } } return $ado; } function SaveDBConfig() { // save new database configuration echo "in_ere"; set_ini_value("Database", "DBType",$_POST["ServerType"]); set_ini_value("Database", "DBHost",$_POST["ServerHost"]); set_ini_value("Database", "DBName",$_POST["ServerDB"]); set_ini_value("Database", "DBUser",$_POST["ServerUser"]); set_ini_value("Database", "DBUserPassword",$_POST["ServerPass"]); set_ini_value("Database","TablePrefix",$_POST["TablePrefix"]); save_values(); $GLOBALS['include_file'] = 'install/install_finish.php'; } ?> Property changes on: trunk/admin/install/install_lib.php ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.3 \ No newline at end of property +1.4 \ No newline at end of property Index: trunk/globals.php =================================================================== --- trunk/globals.php (revision 88) +++ trunk/globals.php (revision 89) @@ -1,1271 +1,1310 @@ <?php -$vars = parse_ini_file($pathtoroot."config.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 = ''; + foreach($contents as $line) { + $line = trim($line); + $line = eregi_replace(';[.]*','',$line); + if(strlen($line) > 0) { + //echo $line . " - "; + if(eregi('^[[a-z]+]$',$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 + + return $retval; +} + function &GetADODBConnection() { global $g_adodbConnection, $g_DBType, $g_DBHost,$g_DBUser,$g_DBUserPassword,$g_DBName,$g_DebugMode; global $ADODB_FETCH_MODE,$ADODB_COUNTRECS,$ADODB_CACHE_DIR,$pathtoroot; //echo '<pre>'.print_r( debug_backtrace() , true).'</pre>'; if(!isset($g_adodbConnection) && strlen($g_DBType)>0) { $g_adodbConnection = ADONewConnection($g_DBType); $connected = $g_adodbConnection->Connect($g_DBHost,$g_DBUser,$g_DBUserPassword,$g_DBName); if(!$connected) { echo "Error connecting to database $g_DBHost <br>\n"; die(); } $ADODB_CACHE_DIR = $pathtoroot."cache"; $ADODB_FETCH_MODE = 2; $ADODB_COUNTRECS = FALSE; $g_adodbConnection->debug = false; $g_adodbConnection->cacheSecs = 3600; } 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/', $_SERVER['SCRIPT_FILENAME'])) { $ins = 'admin/'; } echo "<a href='$rootURL".$ins."install.php'>Go to installation script</a><br><br>"; flush(); die(); } return $g_adodbConnection; } 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) { $countsql = "SELECT count(*) as TableCount ".substr($sql,strpos($sql," FROM ")); if(strpos($countsql,"LIMIT")) $countsql = substr($countsql,0,strpos($countsql,"LIMIT")); if(strpos($countsql,"ORDER BY")) $countsql = substr($countsql,0,strpos($countsql,"ORDER BY")); $db = GetADODBConnection(); $rs = $db->Execute($countsql); //echo $countsql."<br>\n"; $res = $rs->fields["TableCount"]; return $res; } function GetPageCount($ItemsPerPage,$NumItems) { if($ItemsPerPage==0 || $NumItems==0) { return 1; } $value = $NumItems/$ItemsPerPage; return ceil($value); } 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; } 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<br />", $out); } else $out = str_replace("\n^br^", "\n", $out); $out=addslashes($out); return $out; } function inp_unescape($in) { $out=stripslashes($in); return $out; } function inp_textarea_unescape($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; } 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". } } function ReplaceSingleTag($tag,$text) { $opentag = "[".$tag; $closetag = "[/".$tag."]"; if(strstr($text,$opentag)) { $pos = strpos($text,$opentag." "); if($pos === false) { $pos = strpos($text,$opentag."]"); } $endopen = strpos($text,"]",$pos); $closepos = strpos($text,$closetag,$pos); if($closepos) { $taglength = ($closepos - $endopen) + strlen($closetag); $tagText = substr($text,$pos, $closepos + strlen($closetag) - $pos); $innerText = substr($text,$endopen+1,$closepos - $endopen-1); if($tag=="UL") $innerText = str_replace("[*]","<LI>",$innerText); $tagText = substr($tagText,1,($endopen - $pos)-1); //echo "Matched $tagText <br>\n"; $tagText = "<".$tagText.">"; $replace_text = $tagText.$innerText."</".$tag.">"; $text = substr($text,0,$pos).$replace_text.substr($text,$closepos+strlen($closetag)); return $text; } else return $text; } else return $text; } function ReplaceTag($tag,$text) { $new_text = ReplaceSingleTag($tag,$text); while($new_text != $text) { $text = $new_text; $new_text = ReplaceSingleTag($tag,$text); } return $new_text; } function ReplaceURL($text) { while(strstr($text,"[URL")) { $urlpos = strpos($text,"[URL"); $endopen = strpos($text,"]",$urlpos); if($endopen) { $url = "<A TARGET=\"_blank\"".substr($text,$urlpos+4,$endopen - ($urlpos+4)); $url .= ">"; $url = _unhtmlentities($url); $text = substr($text,0,$urlpos).$url.substr($text,$endopen+1); } } $text = str_replace("[/URL]","</A>",$text); return $text; } function ReplaceBBCode($text) { global $objConfig; $tags = explode(",",$objConfig->Get("BBTags")); for($i=0;$i<count($tags);$i++) { $text = ReplaceTag(strtoupper($tags[$i]),$text); } $text = ReplaceURL($text); return $text; } 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($_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 = $_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($ItemName)) { $item = $objItemTypes->GetItem($ItemName); } else $item = $objItemTypes->GetTypeByName($ItemName); 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"; return $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 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; } function GetVar($name) { return isset($_REQUEST[$name]) ? $_REQUEST[$name] : false; } 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 = $_REQUEST['Action']; $module_prefix = explode('_', $action); return $prefix2module[ $module_prefix[0] ]; } 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; } ?> Property changes on: trunk/globals.php ___________________________________________________________________ Modified: cvs2svn:cvs-rev ## -1 +1 ## -1.4 \ No newline at end of property +1.5 \ No newline at end of property