Index: trunk/kernel/include/modules.php
===================================================================
--- trunk/kernel/include/modules.php	(revision 258)
+++ trunk/kernel/include/modules.php	(revision 259)
@@ -1,896 +1,896 @@
 <?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($mod_prefix)
+function BuildEnv($mod_prefix = false)
 {  
     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))
         { 
         	$GLOBALS[$key.'_var_list_update']['test'] = 'test';
         	$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_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 => $folder_name)
  {
     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.$folder_name."module_init.php";
         if( file_exists($mod) ) require_once($mod);    	 
       	      	
         $mod = $pathtoroot.$folder_name."action.php";
         if( file_exists($mod) ) require_once($mod);  
 
         $mod = $pathtoroot.$folder_name."searchaction.php";
         if( file_exists($mod) ) require_once($mod);
       }
     }
     if($FrontEnd==1 || $FrontEnd==2)
     {
     	$mod = $pathtoroot.$folder_name."module_init.php";
         if(file_exists($mod))
           require_once($mod);      	
         $mod = $pathtoroot.$folder_name."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.7
\ No newline at end of property
+1.8
\ No newline at end of property
Index: trunk/kernel/include/config.php
===================================================================
--- trunk/kernel/include/config.php	(revision 258)
+++ trunk/kernel/include/config.php	(revision 259)
@@ -1,514 +1,515 @@
 <?php
 require_once($pathtoroot."kernel/include/adodb/adodb.inc.php");
 
 class clsConfig
 {
 	var $config;
 	var $m_dirty_session;
 	var $m_IsDirty;
 	var $m_DirtyFields;
 	var $m_VarType;
     var $adodbConnection;
 
 	function clsConfig()
 	{
 	  $this->m_IsDirty=false;
       $this->adodbConnection = GetADODBConnection();
 	  $this->config = array();
 	  $this->m_IsDefault = array();
 	  $this->VarType = array();
 	}
 
     function SetDebugLevel($value)
     {
     }
 
 
 	function Load()
 	{
       if(is_object($this->adodbConnection))
       {      
           LogEntry("Config Load Start\n");
           $sql = "select VariableName, VariableValue from ".GetTablePrefix()."ConfigurationValues";
     	  $rs = $this->adodbConnection->Execute($sql);
     	  unset($this->config);
     	  #this->config=array();
                $count=0;
     	  while($rs && !$rs->EOF)
     	  {
             $this->config[$rs->fields["VariableName"]] = $rs->fields["VariableValue"];
             $this->m_VarType[$rs->fields["VariableName"]] = 0;
     //		$this->Set($rs->fields["VariableName"],$rs->fields["VariableValue"],0);
             if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
             {
                 adodb_movenext($rs);
             }
             else
               $rs->MoveNext();
             $count++;
     	  }
           LogEntry("Config Load End - $count Variables\n");         
       }
       unset($this->m_DirtyFields);
       $this->m_IsDirty=false;
 	}
 
 	function Get($property)
 	{
 	  return isset($this->config[$property]) ? $this->config[$property] : '';
 	}
 
 	function Set($property, $value,$type=0,$force=FALSE)
 	{
 	  if(is_array($this->config) && strlen($property)>0)
 	  {	
 	    if(array_key_exists($property,$this->config))
 	    {
 	      $current = $this->config[$property];
 	      $changed = ($current != $value);
 	    }
 	    else
 	      $changed = true;
 	  }
 	  else
 	    $changed = false;
 	  $this->config[$property]=$value;
 	  $this->m_IsDirty = ($this->m_IsDirty or $changed or $force);
 	  if($changed || $force)
 	  {
             $this->m_DirtyFields[$property] = $value;                      
 	  }
 	  $this->m_VarType[$property] = $type;
 	}
 
 	function Save()
 	{
 	  if($this->m_IsDirty==TRUE)
 	  {
         foreach($this->m_DirtyFields as $field=>$value)
         {
 	      if($this->m_VarType[$field]==0)
 	      {
                 $sql = sprintf("UPDATE ".GetTablePrefix()."ConfigurationValues SET VariableValue=%s WHERE VariableName=%s",                             $this->adodbConnection->qstr($value), $this->adodbConnection->qstr($field));
                 // echo $sql."<br>\n";
               
                 $rs = $this->adodbConnection->execute($sql);                        
 	      }
         }
   	  }
 	  $this->m_IsDirty=FALSE;
          unset($this->m_DirtyFields);
 	}
 
     function TimeFormat()
     {
         if($this->Get("ampm_time")=="1")
         {
             $format = "g:i:s A";
         }
         else
             $format = "H:i:s";
         return $format;
     }
 
     /* vartype should be either 1 or 2, 1 = perstant data, 2 = session data */
     function GetDirtySessionValues($VarType)
     {
         $result = array();
         
         if(is_array($this->m_DirtyFields))
         {        
           foreach($this->m_DirtyFields as $property=>$values)
           {
            if($this->m_VarType[$property]==$VarType)	                        
                 $result[$property] = $values;
           }
         }
 	    return $result;
     }
 
-	function GetSessionValues($VarType)
+	function GetConfigValues($postfix = '')
 	{
-	    $result = array();
-        foreach($this->config as $property=>$values)
-        {
-	      if(strlen($values[$VarType])>0)
-	      {
-                $result[$property] = $values[$VarType];
-	      }
-        }
-	    return $result;
+	    // return only varibles, that match specified criteria
+		if(!$postfix) return $this->config;
+		$result = Array();
+		$postfix_len = $postfix ? strlen($postfix) : 0;
+		foreach($this->config as $config_var => $var_value)
+		{
+			if( substr($config_var, - $postfix_len) == $postfix )
+				$result[$config_var] = $var_value;
+		}
+		return $result;
 	}    
 }/* clsConfig */
 
 /*
 To create the configuration forms in the admin section, populate the table ConfigurationAdmin and
 ConfigurationValues.
     
     The tables are fairly straight-forward.  The fields of concern in the ConfigurationValues table is 
 ModuleOwner and Section.  ModuleOwner should either be the module name or In-Portal for kernel related stuff.  
 (Items which should appear under 'System Configuration').
     
     The Section field determines the NavMenu section the value is associated with. For example, 
 in-portal:configure_general refers to items listed under System Configuration->General.
 
     In the ConfigurationAdmin table, ensure the VariableName field is the same as the one in ConfigurationValues 
 (this is the field that creates the natural join.)  The prompt field is the text displayed to the left of the form element
 in the table.  This should contain LANGUAGE ELEMENT IDENTIFIERS that are plugged into the Language function.
 
     The element_type field describes the type of form element is associated with this item.  Possible values are: 
         - text : textbox
         - checkbox : a simple checkbox
         - select : creates a dropdown box. In this case, the ValueList field should be populated with a comma-separated list
                    in name=value,name=value format   (each element is translated to:
                     <option VALUE="[value]">[name]</option>
                   
                     To add dynamic data to this list, enclose an SQL statement with <SQL></SQL> tags for example:
                     <SQL>SELECT FieldLabel as OptionName, FieldName as OptionValue FROM <prefix>CustomField WHERE <prefix>.CustomFieldType=3></SQL>
                     
                     note the specific field labels OptionName and OptionValue.  They are required by the parser. 
                     use the <prefix> tag to insert the system's table prefix into the sql statement as appropriate
 
 */
 class clsConfigAdminItem
 {
   var $name;
   var $heading;
   var $prompt;
   var $ElementType;
   var $ValueList; /* comma-separated list in name=value pair format*/  
   var $ValidationRules;
   var $default_value;
   var $adodbConnection;
   var $NextItem=NULL;
   var $Section;
   
   function clsConfigAdminItem($config_name=NULL)
   {   
       $this->adodbConnection = GetADODBConnection();
       if($config_name)
           $this->LoadSetting($config_name);
   }
 
   function LoadSetting($config_name)
   {
       $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName) WHERE ".GetTablePrefix()."ConfigurationAdmin.VariableName='".$config_name."'";
       $rs = $this->adodbConnection->Execute($sql);
       if($rs && !$rs->EOF)
       {
           $this->name = $rs->fields["VariableName"];
           $this->heading = $rs->fields["heading"];
           $this->prompt = $rs->fields["prompt"];
           $this->ElementType = $rs->fields["element_type"];
           $this->ValidationRules=$rs->fields["validation"];
           $this->default_value = $rs->fields["VariableValue"];  
           $this->ValueList=$rs->fields["ValueList"];
           $this->Section = $rs->fields["Section"];
       }
   }
 
   function explode_sql($sql)
   {
       $s = "";
 
       $rs = $this->adodbConnection->Execute($sql);
      
       while ($rs && !$rs->EOF) 
       {
       	  if(strlen(trim($rs->fields["OptionName"]))>0 && strlen(trim($rs->fields["OptionValue"]))>0)      	  
       	  {
           	if(strlen($s))
             	 $s .= ",";
           	$s .= $rs->fields["OptionName"]."="."+".$rs->fields["OptionValue"];
           	$rs->MoveNext();
       	  }
       }
       return $s;
   }
 
   function replace_sql($string)
   {  
       $string = str_replace("<PREFIX>",GetTablePrefix(),$string);      
       
       $start = strpos($string,"<SQL>");
 
       while($start)
       {
           $end = strpos($string,"</SQL>");
           if(!$end)
           {          
               $end = strlen($string);
           }
           $len = $end - $start;
           $sql = substr($string,$start+5,$len-5);
           
           $sql_val = $this->explode_sql($sql);
           $s = substr($string,0,$start) . $sql_val . substr($string,$end+5);
                     
           $string = $s;
           $start = strpos($string,"<SQL>"); 
       }
       return $string;
   }
 
   function ItemFormElement()
   {
     global $objConfig;    
     static $TabIndex;
     
     if (empty($TabIndex))
     	$TabIndex = 1;
 
     $o = "";
     if($objConfig->Get($this->name)!="")
         $this->default_value = stripslashes($objConfig->Get($this->name));
 
     switch($this->ElementType)
     {
       case "text":
         $o .= "<INPUT TYPE=\"TEXT\" tabindex=\"".($TabIndex++)."\" NAME=\"".$this->name."\" ";
         $o .= "VALUE=\"".$this->default_value."\">";
       break;
       case "checkbox":
         $o .= "<INPUT TYPE=\"checkbox\" NAME=\"".$this->name."\" tabindex=\"".($TabIndex++)."\"";
         if($this->default_value)
         {        
             $o .= " CHECKED>";
         }
         else
             $o .= ">";
 
       break;
     case "password":
     
     	/* To exclude config form from populating with Root (md5) password */
     	if ($this->Section == "in-portal:configure_users")
     		$this->default_value = "";
     		
         $o .= "<INPUT TYPE=\"PASSWORD\" tabindex=\"".($TabIndex++)."\" NAME=\"".$this->name."\" ";
         $o .= "VALUE=\"".$this->default_value."\">";
     break;
     case "textarea":
         $o .= "<TEXTAREA  tabindex=\"".($TabIndex++)."\" ".$this->ValueList." name=\"".$this->name."\">".$this->default_value."</TEXTAREA>";
     break;
     case "label":         
          if($this->default_value)
          { 
               $o .= $this->default_value;
          }
          break;
       case "radio":
             $radioname = $this->name;
 
             $ValList = $this->replace_sql($this->ValueList);
             
             $TabIndex++;
 			$localTabIndex = $TabIndex;
 			$TabIndex++;
 			
             $val = explode(",",$ValList);
             for($i=0;$i<=count($val);$i++)
             {
               if(strlen($val[$i]))
               {
                 $parts = explode("=",$val[$i]);
                 $s = $parts[1];
                 if(strlen($s)==0)
                     $s="";                
                 
                 $o .= "<input type=\"radio\" tabindex=\"".($localTabIndex)."\"  name=\"".$this->name."\" VALUE=\"".$parts[0]."\"";
                 if($this->default_value==$parts[0])
                 {        
                   $o .= " CHECKED>";
                 }
                 else
                   $o .= ">";  
                 if(substr($s,0,1)=="+")
                 {
                     $o .= $s;
                 }
                 else
                     $o .= prompt_language($s);
               }
             }
           
       break;
       case "select":
         $o .= "<SELECT NAME=\"".$this->name."\" tabindex=\"".($TabIndex++)."\">";
         $ValList = $this->replace_sql($this->ValueList);
         $val = explode(",",$ValList);
         for($i=0;$i<=count($val);$i++)
         {
           if(strlen($val[$i]))
           {
             $parts = explode("=",$val[$i]);
             $s = $parts[1];
             if(strlen($s)==0)
                 $s="";       
             $selected = "";
             if($this->default_value==$parts[0])
                 $selected = " SELECTED";
             if(substr($s,0,1)=="+")
             {
                $o .= "<OPTION VALUE=\"".$parts[0]."\" $selected>".substr($s,1)."</OPTION>";
             }
             else
             {
               if(strlen($s))	
               	$o .= "<OPTION VALUE=\"".$parts[0]."\" $selected>".admin_language($s)."</OPTION>";
             }
           }
         }
         $o .= "</SELECT>";
     }
     return $o;
   }
 
   function GetPrompt()
   {
       $ret = prompt_language($this->prompt);
       return $ret;
   }
 }
 
 class clsConfigAdmin 
 {
   var $module;
   var $section;
   var $Items;
 
   function clsConfigAdmin($module="",$section="",$Inst=FALSE)
   {
       $this->module = $module;
       $this->section = $section;
       $this->Items= array();
       if(strlen($module) && strlen($section))
       	$this->LoadItems(TRUE,$Inst);
   }
 
   function Clear()
   {
       unset($this->Items);
       $this->Items = array();
   }
   
   function NumItems()
   {
         if(is_array($this->Items))
         {
             return count($this->Items);
         }
         else
             return 0;  	
   }
 
   function LoadItems($CheckNextItems=TRUE, $inst=FALSE)
   {
       $this->Clear();
       if(!$inst)
       {      
         $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName) 
                 WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' ORDER BY DisplayOrder ASC";
       }
       else
       {
 
           $sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName) 
                   WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' AND Install=1 ORDER BY DisplayOrder ASC";
       }
 	  if((int)$_GLOBALS["debuglevel"])
 		echo $sql."<br>\n"; 
       $adodbConnection = GetADODBConnection();
       $rs = $adodbConnection->Execute($sql);
       while($rs && !$rs->EOF)
       {
           $data = $rs->fields;
           if(is_object($i) && $CheckNextItems)
           {          
             $last = $i->prompt;            
             unset($i);
           }
           $i = new clsConfigAdminItem(NULL);
           $i->name = $data["VariableName"];
           $i->default_value = $data["VariableValue"];
           $i->heading = $data["heading"];
           $i->prompt = $data["prompt"];
           $i->ElementType = $data["element_type"];
           $i->ValueList = $data["ValueList"];
           $i->ValidationRules = $data["validaton"];
           $i->Section = $data["Section"];
           
           if(strlen($last)>0)
           {          
             if($i->prompt==$last)
             {           
               $this->Items[count($this->Items)-1]->NextItem=$i;
             }
             else
             { 
               $i->NextItem=NULL;
               array_push($this->Items,$i);
             }
           }
           else
           {
               $i->NextItem=NULL;
               array_push($this->Items,$i);
           }
           //unset($i);
           $rs->MoveNext();
       }      
   }
 
   function SaveItems($POSTVARS, $force=FALSE)
   {
       global $objConfig;
       
       foreach($this->Items as $i)
       {               	  
           if($i->ElementType != "label")
 		  {
 			  if($i->ElementType != "checkbox")
 			  {        			  	
 				$objConfig->Set($i->name,$POSTVARS[$i->name]);
 			  }
 			  else
 			  {          
 				if($POSTVARS[$i->name]=="on")
 				{            
 					$value=1;
 				}
 				else
 					$value = (int)$POSTVARS[$i->name];
 				$objConfig->Set($i->name,$value,0,$force);
 			  }
 		  }
       }
       $objConfig->Save();
   }
 
   function GetHeadingList()
   {
       $res = array();
       foreach($this->Items as $i)
       {
           $res[$i->heading]=1;
       }
       reset($res);
       return array_keys($res);
   }
 
   function GetHeadingItems($heading)
   {
       $res = array();
       foreach($this->Items as $i)
       {
           if($i->heading==$heading)
               array_push($res,$i);
       }
       return $res;
   }
 }
 
 
 ?>

Property changes on: trunk/kernel/include/config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.2
\ No newline at end of property
+1.3
\ No newline at end of property
Index: trunk/kernel/include/modlist.php
===================================================================
--- trunk/kernel/include/modlist.php	(revision 258)
+++ trunk/kernel/include/modlist.php	(revision 259)
@@ -1,119 +1,130 @@
 <?php
 
 class clsModule extends clsItemDB 
 {
     function clsModule($name="")
     {
         $this->clsItemDB();
         $this->tablename = GetTablePrefix()."Modules";
         $this->type=11;
         $this->BasePermission="";
         $this->id_field = "Name";
         $this->debuglevel=0;
         if(strlen($name))
             $this->LoadFromDatabase($name);
     }
 
     function ExecuteFunction($function_name, $params)
     {
     	$function_name = $this->Get('Var').'_'.$function_name;
     	if( function_exists($function_name) )
     		return $function_name($params);
     	else
     		return false;
     }
 }
 
 class clsModList extends clsItemCollection 
 {
     function clsModList()
     {
         $this->clsItemCollection();
         $this->SourceTable=GetTablePrefix()."Modules";
         $this->classname = "clsModule";
         $this->LoadModules();
     }
 
     function LoadModules()
     {
         $this->Clear();
         return $this->Query_Item("SELECT * FROM ".$this->SourceTable);
     }
 
 	function &FindModule($fieldname, $value)
 	{
 		// finds module by field specified
 		foreach($this->Items as $module)
             if(strcasecmp($module->Get($fieldname), $value) == 0)
             	return $module;
 		return false;
 	}
 
 	function GetModuleList()
 	{
 		// returns installed modules list
 		$ret = Array();
 		foreach($this->Items as $module) $ret[] = $module->Get('Name');
 		return $ret;
 	}
 	
     function &GetModule($name)
     {
     	//$this->LoadModules();
     	return $this->FindModule('Name', $name);
     }
     
     function ExecuteFunction($function, $params = Array() )
 	{
 		// call specified function for each module
 		// and returns result as array (key = module name)
 		$result = Array();
 		foreach($this->Items as $module)
 			$result[ $module->Get('Name') ] = $module->ExecuteFunction($function, $params);
 		return $result;			
 	}
     
     function GetModuleByPath($path)
     {
       $ret = false;
       if(strlen($path))
       {
         $parts = explode("/",$path);
         $modpath = $parts[0]."/";	
     	
     	//$this->LoadModules();
     	return $this->FindModule('TemplatePath',$modpath);
       }
       return $ret;        
     }
     
     function GetModuleRoot($name)
     {
     	//$this->LoadModules();
     	$mod = $this->FindModule('Name', $name);
         return is_object($mod) ? $mod->Get("RootCat") : 0;
     }
     
     function SetModuleRoot($name, $CatId)
     {
 		$mod =& $this->FindModule('Name', $name);
 		if( is_object($mod) )
 		{
 			$mod->Set('RootCat',$CatId);    		    			
 			$mod->Update();
 		}
     }
     
     function Refresh()
     {
     	// reloads table content
     	$this->LoadModules();
     }
     
     function ModuleInstalled($name)
     {
         //$this->LoadModules();
         return $this->FindModule('Name',$name);
     }
+    
+    function MergeReturn($array)
+    {
+    	// merge results ganed with ExecuteFunction
+    	// method in a specific way
+    	$tmp = Array();
+    	foreach($array as $mod_name => $mod_results)
+    		foreach($mod_results as $mod_var => $mod_var_value)
+    			$tmp[$mod_var][$mod_name] = $mod_var_value;	
+    	return $tmp;
+    }
 
 }

Property changes on: trunk/kernel/include/modlist.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1
\ No newline at end of property
+1.2
\ No newline at end of property
Index: trunk/kernel/admin/include/parser.php
===================================================================
--- trunk/kernel/admin/include/parser.php	(revision 258)
+++ trunk/kernel/admin/include/parser.php	(revision 259)
@@ -1,274 +1,278 @@
 <?php
 
 function adListSubCats($ParentId, $template, $KeywordsVar = 'SearchWord')
 {
     global $var_list, $m_cat_filter, $m_category_sort, $m_category_sortby,
            $objCatList, $objSession,$pathtoroot, $objConfig,$admin;
 
     if($objCatList->NumCategories()==0)
         return "<br>No Categories<br><br>";
 
    	$o="<table border=0 cellspacing=2 width=\"100%\"><tbody><tr>";
 
 	$i=1;
     $list = $objSession->GetVariable($KeywordsVar);
     if(strlen($list))
         $Keywords = explode(",",$list);
 
     $template = $pathtoroot.$admin."/templates/".$template;
     
     $topleft   = 0;
     $topright  = 0;
     $rightcount = 0;
     $totalcats  = 0;
     $totalcats   =   $objCatList->NumItems();
     $topleft   =  ceil($totalcats/2);
     $topright  =  $totalcats-$topleft;
   
     for ($x=0;$x<$topleft;$x++) 
     {
         //printingleft
         $cat = $objCatList->Items[$x];
 
         if($cat->Get("CategoryId")!=$ParentId)
         {      
             if ($i > 2)
             {	
                 $o.="</tr>\n<tr>";
                 $i = 1;
             }
 
             //$cat->LoadPermissions($objSession->Get("GroupId"));
             if(strlen($list))
             {
                 $h = $cat->AdminParseTemplate($template);
                 $h = HighlightKeywords($Keywords, $h);
                 $o .= $h;
                 $h = "";
             }
             else
                 $o.=$cat->AdminParseTemplate($template);
             
             $i++;
         }
         //printingright
 
         if ($rightcount < $topright && (($x+$topleft) <$totalcats)) 
         {
             $cat = $objCatList->Items[$x+$topleft];   
             if($cat->Get("CategoryId")!=$ParentId)
             {  
                 if ($i > 2)
                 {	
                     $o.="</tr>\n<tr>";
                     $i = 1;
                 }
                 //$cat->LoadPermissions($objSession->Get("GroupId"));
                 if(strlen($list))
                 {
                     $h = $cat->AdminParseTemplate($template);
                     $h = HighlightKeywords($Keywords, $h);
                     $o .= $h;
                     $h = "";
                 }
                 else
                     $o.=$cat->AdminParseTemplate($template);
 
                 $i++;
             }
             $rightcount++;
         }
     }
 	$o .="\n</tr></tbody></table>\n";   
 	return $o;
 }
 
 function list_custom($c,$Type)
 {
 	global $objSession, $objCustomFieldList, $objCustomDataList,
            $imagesURL;
 
 	$field_list = $objCustomFieldList->Query_CustomField("Type=$Type");
 
 	if (count($field_list) == 0)
 		return "No Custom Fields<br><br>";
 
 	$o="";
 
 	$i = 1;
 	$objCustomDataList->SourceTable = $objSession->GetEditTable("CustomMetaData");
 	$objCustomDataList->LoadResource($c->Get("ResourceId"));
 	foreach($field_list as $field)
 	{
 		$fieldname = $field->Get("FieldName");
         $fieldlabel = $field->Get("FieldLabel");
 		$fieldid = $field->Get("CustomFieldId");
 
 		$f = $objCustomDataList->GetDataItem($fieldid);
 		if(is_object($f))
 		{
 		  $fieldvalue = $f->Get("Value");
 		}
 		else
 		  $fieldvalue="";
 		$o .="<tr " . int_table_color_ret() .">";
 		$o .="<td valign=\"top\"><img src=\"$imagesURL/itemicons/icon16_custom.gif\" height=\"16\" width=\"16\" align=\"absmiddle\"><span class=\"text\"> $fieldname</span></td>
               <td valign=\"top\"><span class=\"text\">$fieldlabel</span></td> 
 			<td>
 				<input type=\"text\" name=\"customdata[$fieldid]\" class=\"text\" size=\"30\" value=\"$fieldvalue\">
 			</td></tr>\n";
 
 		$i++;
 	}
 	return $o;
 }
 
 
 function adListRelatedCategories($Item)
 {
   global $objCatList;
 
   if(is_object($Item))
   {  
     $catlist = $Item->GetRelatedCategories(0);
     $o = "";
     foreach($catlist as $catrel)
     {
       $o .= "<input type=checkbox NAME=\"dellist[]\" VALUE=\"".$catrel->Get("RelationshipId")."\">";
       $cat = $objCatList->GetByResource($catrel->Get("TargetId"));
       $path = $cat->ParentNames();
       if(strlen($path))
       {      
         $o .= implode(">",$path);      
       }
       $o .="<br>\n";
     }
   }
   return $o;
 }
 
 function adListRelatedItems($Item)
 {
   global $objCatList;
 
   if(is_object($Item))
   {  
     $item_list=$Item->GetRelatedItems(0);
     $o = "";
     foreach($item_list as $i)
     {   
       $data = $i->GetTargetItemData();
       $o .= "<tr ".int_table_color_ret().">";      
       $o .= "<TD>";      
       $o .= "<input type=checkbox NAME=\"dellist[]\" VALUE=\"".$i->Get("RelationshipId")."\">";
       $o .= $data[$data["TitleField"]];
       $o .= "</TD>";
       $o .= "<TD>".$data["SourceTable"]."</TD>";
       $cat =& $objCatList->GetCategory($data["CategoryId"]);
       $o .= "<TD>";
       $path = $cat->ParentNames();
       if(strlen($path))
       {      
         $o .= implode(">",$path);      
       }
       $o .= "</TD></TR>";
     }
   }
   return $o;
 }
 
 function adListItemReviews($Item)
 {
     global $pathtoroot,$admin;
 
     $Reviews = $Item->GetItemReviews();
     $o = "";
     if($Reviews->ItemCount()>0)
     {
         foreach($Reviews->ItemList as $r)
         {
             $o .= "<TR ".int_table_color_ret().">";
             $o .= "<TD width=\"5%\">";
             if($r->Get("Pending")==0)
             {
                 $o .= "<INPUT TYPE=checkbox NAME=\"deletelist[]\" VALUE=\"".$r->Get("ReviewId")."\"> Delete";
             }
             $o .= "</TD><TD width=\"5%\">";
             if($r->Get("Pending")!=0)
             {
                 $o .= "<INPUT TYPE=checkbox NAME=\"approvelist[]\" VALUE=\"".$r->Get("ReviewId")."\"> Approve";
             }
             $o .= "</TD>";
             $o .= $r->parse_template(admintemplate($pathtoroot.$admin."/templates/review_element.tpl"));
             $o .= "</TR>";
         }
     }
     return $o;
 }
 
 
 function adImageUploadFormTags($img)
 {
     static $file_count=0;
         
     $o = "";
     if($file_count==0)
     {
         $o .= "<INPUT TYPE=HIDDEN NAME=\"img\" VALUE=1>";
     }
     $o .= "<TD><INPUT TYPE=TEXT NAME=\"img_Name_$file_count\" VALUE=\"".$img->Get("Name")."\"></TD>";
     $o .= "<TD><INPUT TYPE=TEXT NAME=\"img_Alt_$file_count\" VALUE=\"".$img->Get("AltName")."\"></TD>";
     $o .= "<TD>";
 
     $o .= "<INPUT TYPE=TEXT size=40 NAME=\"img_Url_$file_count\" VALUE=\"".$img->Get("Url")."\">";
     $o .= "</TD><TD>";
     $o .= "<INPUT TYPE=FILE class=\"button\" VALUE=\"".$img->Get("Url")."\" NAME=\"$file_count\">";
 
     $o .= "<INPUT TYPE=HIDDEN NAME=\"img_Res_$file_count\" VALUE=\"".$img->Get("ResourceId")."\">";
     $o .= "<INPUT TYPE=HIDDEN NAME=\"img_Rel_$file_count\" VALUE=\"".$img->Get("RelatedTo")."\">";
     $o .= "<INPUT TYPE=HIDDEN NAME=\"img_Thumb_$file_count\" VALUE=\"".$img->Get("IsThumbnail")."\">";
     $parts = pathinfo($img->Get("LocalPath"));
     $destdir = $parts["dirname"];
 
     $o .= "<INPUT TYPE=HIDDEN NAME=\"img_DestDir_$file_count\" VALUE=\"$destdir\">";
     if($img->Get("RelatedTo")>0)
       $o .= "<input type=\"submit\" name=\"img_Del_$file_count\" value=\"Delete\" class=\"button2\">";
     $o .= "</TD>";
     $file_count++;
     return $o;
 }
 
 	function m_GetModuleInfo($info_type)
 	{
 		// get information for building sql in
 		switch($info_type)
 		{
 			case 'rel_list': // Edit Category -> Relations List
 				return Array(	'MainTable' => 'Category', 'ItemNameField' => 'CachedNavbar',
 								'ItemNamePhrase' => 'la_Text_Category', 'TargetType' => 1);
 				break;
 			
 			case 'summary_pending':
 				global $imagesURL;
 				$ret = Array();
 				
 				$UserURL = $GLOBALS['adminURL'].'/users/user_list.php?env='.BuildEnv();
 				
 				// pending users
 				$ret[] = Array(	'link' => "config_val('User_View', '4' ,'$UserURL')",
 								'icon_image' => $imagesURL.'/itemicons/icon16_user_pending.gif',
 								'phrase' => 'la_Text_Users', 'list_var_name' => 'objUsers' );
 								
 				// pending categories
 				$ret[] = Array(	'link' => "PendingLink('category','Category_View',41)",
 								'icon_image' => $imagesURL.'/itemicons/icon16_cat_pending.gif',
 								'phrase' => 'la_tab_Categories', 'list_var_name' => 'objCatList');
 				
 				return $ret;
 				break;
+			
+			case 'all_bitmask': // return bitmask value equals to "all" for module filter
+				return Array('VarName' => 'Category_View', 'Bits' => 127);
+				break;
 		}
 		
 		return false;
 	}
 
 ?>

Property changes on: trunk/kernel/admin/include/parser.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4
\ No newline at end of property
+1.5
\ No newline at end of property
Index: trunk/kernel/startup.php
===================================================================
--- trunk/kernel/startup.php	(revision 258)
+++ trunk/kernel/startup.php	(revision 259)
@@ -1,155 +1,149 @@
 <?php
 /*
     startup.php: this is the primary startup sequence for in-portal services    
 */
 if( file_exists($pathtoroot.'debug.php') && !defined('DEBUG_MODE') ) include_once($pathtoroot.'debug.php');
-if( defined('DEBUG_MODE') )
-{
-	error_reporting(E_ALL & E_NOTICE);
-	ini_set('display_errors', 1);	
-}
-else
-	error_reporting(0);
+if( !defined('DEBUG_MODE') ) error_reporting(0);
 	
 ini_set('memory_limit', '16M');
 
 $kernel_version = "1.0.0";
 $FormError = array();
 $FormValues = array();
 /* include PHP version compatibility functions */
 require_once($pathtoroot."compat.php");
 /* set global variables and module lists */
 require_once($pathtoroot."globals.php"); 
 
 LogEntry("Initalizing System..\n");
 
 /* for 64 bit timestamps */
 require_once($pathtoroot."kernel/include/adodb/adodb-time.inc.php");
 require_once($pathtoroot."kernel/include/dates.php");
 
 /* create the global error object */
 require_once($pathtoroot."kernel/include/error.php");
 $Errors = new clsErrorManager();
 
 require_once($pathtoroot."kernel/include/itemdb.php");
 require_once($pathtoroot."kernel/include/config.php");
 /* create the global configuration object */
 LogEntry("Creating Config Object..\n");
 $objConfig = new clsConfig();
 $objConfig->Load(); /* Populate our configuration data */
 LogEntry("Done Loading Configuration\n");
 if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
 	LogEntry("ADO Extension: ".ADODB_EXTENSION."\n");	
 
 require_once($pathtoroot."kernel/include/parseditem.php");
 require_once($pathtoroot."kernel/include/item.php");
 require_once($pathtoroot."kernel/include/syscache.php");
 require_once($pathtoroot."kernel/include/modlist.php");
 require_once($pathtoroot."kernel/include/searchconfig.php");
 require_once($pathtoroot."kernel/include/banrules.php");
 
 $objModules = new clsModList();
 $objSystemCache = new clsSysCacheList();
 $objSystemCache->PurgeExpired();
 $objBanList = new clsBanRuleList();
 
 require_once($pathtoroot."kernel/include/image.php");
 
 require_once($pathtoroot."kernel/include/itemtypes.php");
 $objItemTypes = new clsItemTypeList();
 
 require_once($pathtoroot."kernel/include/theme.php");
 $objThemes = new clsThemeList();
 
 require_once($pathtoroot."kernel/include/language.php");
 $objLanguages = new clsLanguageList();
 $objImageList = new clsImageList();
 
 /* Load session and user class definitions */
 //require_once("include/customfield.php");
 //require_once("include/custommetadata.php");
 require_once($pathtoroot."kernel/include/usersession.php");
 require_once($pathtoroot."kernel/include/favorites.php");
 require_once($pathtoroot."kernel/include/portaluser.php");
 require_once($pathtoroot."kernel/include/portalgroup.php");
 
 /* create the user management class */
 $objFavorites = new clsFavoriteList();
 $objUsers = new clsUserManager();
 $objGroups = new clsGroupList();
 
 require_once($pathtoroot."kernel/include/cachecount.php");
 require_once($pathtoroot."kernel/include/customfield.php");
 require_once($pathtoroot."kernel/include/custommetadata.php");
 require_once($pathtoroot."kernel/include/permissions.php");
 require_once($pathtoroot."kernel/include/relationship.php");
 require_once($pathtoroot."kernel/include/category.php");
 require_once($pathtoroot."kernel/include/statitem.php");
 /* category base class, used by all the modules at some point */
 $objPermissions = new clsPermList();
 $objPermCache = new clsPermCacheList();
 
 $objCatList = new clsCatList();
 $objCustomFieldList = new clsCustomFieldList();
 $objCustomDataList = new clsCustomDataList();
 $objCountCache = new clsCacheCountList();
  
 require_once($pathtoroot."kernel/include/smtp.php");
 require_once($pathtoroot."kernel/include/emailmessage.php");
 require_once($pathtoroot."kernel/include/events.php");
 LogEntry("Creating Mail Queue..\n");
 $objMessageList = new clsEmailMessageList();
 $objEmailQueue = new clsEmailQueue();
 LogEntry("Done creating Mail Queue Objects\n");
 
 require_once($pathtoroot."kernel/include/searchitems.php");
 require_once($pathtoroot."kernel/include/advsearch.php");
 
 require_once($pathtoroot."kernel/include/parse.php");
 require_once($pathtoroot."kernel/include/socket.php");
   
 /* responsible for including module code as required 
    This script also creates an instance of the user session onject and
    handles all session management.  The global session object is created
    and populated, then the global user object is created and populated
    
    each module's parser functions and action code is included here
 */
 
 LogEntry("Startup complete\n");
 include_once("include/modules.php"); 
 
 /* startup is complete, so now check the mail queue to see if there's anything that needs to be sent*/
 $objEmailQueue->SendMailQeue();
 
           $ado=GetADODBConnection();
           $rs = $ado->Execute("SELECT * FROM ".GetTablePrefix()."Modules WHERE LoadOrder = 0");
           
           $kernel_version = $rs->fields['Version'];
           
           
 $adminDir = $objConfig->Get("AdminDirectory");
 if ($adminDir == '') {
 	$adminDir = 'admin';
 }
 
 if (strstr($_SERVER['SCRIPT_FILENAME'], $adminDir) && !GetVar('logout') && !strstr($_SERVER['SCRIPT_FILENAME'], "install") && !strstr($_SERVER['SCRIPT_FILENAME'], "index")) {
 	//echo "testz [".admin_login()."]<br>";
 	
 	if (!admin_login())
 	{
 	    if(!headers_sent())
 	      setcookie("sid"," ",time()-3600);
 	    $objSession->Logout();
 	    if ($_GET['expired']) {
 	    	header("Location: ".$adminURL."/login.php?expired=1");
 	    }
 	    else {
 	    	header("Location: ".$adminURL."/login.php");
 	    }
 	    die();
 		//require_once($pathtoroot."admin/login.php");
 	}	
 }          
 
 ?>

Property changes on: trunk/kernel/startup.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5
\ No newline at end of property
+1.6
\ No newline at end of property
Index: trunk/admin/browse.php
===================================================================
--- trunk/admin/browse.php	(revision 258)
+++ trunk/admin/browse.php	(revision 259)
@@ -1,467 +1,470 @@
 <?php
 ##############################################################
 ##In-portal                                     			##
 ##############################################################
 ##                   In-portal                     			##
 ##             Intechnic Corporation               			##
 ##          All Rights Reserved, 1998-2002            		##
 ##                                           				##
 ## No portion of this code may be copied, reproduced or  	##
 ##    otherwise redistributed without proper written     	##
 ##   consent of Intechnic Corporation.  Violation will      ##
 ##    result in revocation of the license and support    	##
 ##  privileges along maximum prosecution allowed by law. 	##
 ##############################################################
 //$pathtoroot="";
 
 $b_topmargin = "0";
 //$b_header_addon = "<DIV style='position:relative; z-Index: 1; background-color: #ffffff; padding-top:1px;'><div style='position:absolute; width:100%;top:0px;' align='right'><img src='images/logo_bg.gif'></div><img src='images/spacer.gif' width=1 height=15><br><div style='z-Index:1; position:relative'>";
 
 if(!strlen($pathtoroot))
 {
   $path=dirname(realpath($_SERVER['SCRIPT_FILENAME']));
   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;
   }
 }
 
 $sub = substr($pathtoroot,strlen($pathchar)*-1);
 if($sub!=$pathchar)
 {
   $pathtoroot = $pathtoroot.$pathchar;
 }
 //echo $pathtoroot;
 
 require_once($pathtoroot."kernel/startup.php");
 
 if (!admin_login())
 {            
     if(!headers_sent())
       setcookie("sid"," ",time()-3600);
     $objSession->Logout();
     header("Location: ".$adminURL."/login.php");
     die();
 	//require_once($pathtoroot."admin/login.php");
 }
 
 $rootURL="http://".ThisDomain().$objConfig->Get("Site_Path");
 $admin = $objConfig->Get("AdminDirectory");
 if(!strlen($admin))
     $admin = "admin";
 
 $localURL=$rootURL."kernel/";
 $adminURL = $rootURL.$admin;
 $imagesURL = $adminURL."/images";
 $browseURL = $adminURL."/browse";
 $cssURL = $adminURL."/include";
 
 $indexURL = $rootURL."index.php";
 
 $m_var_list_update["cat"] = 0;
 $homeURL = "javascript:AdminCatNav('".$_SERVER["PHP_SELF"]."?env=".BuildEnv()."');";
 unset($m_var_list_update["cat"]);
 
 $envar = "env=" . BuildEnv();
 
 if($objCatList->CurrentCategoryID()>0)
 {
   $c = $objCatList->CurrentCat();
   $upURL = "javascript:AdminCatNav('".$c->Admin_Parent_Link()."');";
 }
 else
   $upURL = $_SERVER["PHP_SELF"]."?".$envar;
 
 //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."/browse/toolbar.php");
 
 $m = GetModuleArray();
 foreach($m as $key=>$value)
 {
     $path = $pathtoroot.$value."admin/include/parser.php";
     if(file_exists($path))
     {
       //echo "<!-- $path -->";
       @include_once($path);
     }
 }
 if(!$is_install)
 {
   if (!admin_login())
   {            
     if(!headers_sent())
       setcookie("sid"," ",time()-3600);
     $objSession->Logout();
     header("Location: ".$adminURL."/login.php");
     die();
 	//require_once($pathtoroot."admin/login.php");
   }
 }
 //Set Section
 $section = 'in-portal:browse';
 
 //Set Environment Variable
 
 //echo $objCatList->ItemsOnClipboard()." Categories on the clipboard<br>\n";
 //echo $objTopicList->ItemsOnClipboard()." Topics on the clipboard<br>\n";
 //echo $objLinkList->ItemsOnClipboard()." Links on the clipboard<br>\n";
 //echo $objArticleList->ItemsOnClipboard()." Articles on the clipboard<br>\n";
 
 // save last category visited
 $objSession->SetVariable('prev_category', $objSession->GetVariable('last_category') );
 $objSession->SetVariable('last_category', $objCatList->CurrentCategoryID() );
 
 /* // for testing 
 $last_cat = $objSession->GetVariable('last_category');
 $prev_cat = $objSession->GetVariable('prev_category');
 echo "Last CAT: [$last_cat]<br>";
 echo "Prev CAT: [$prev_cat]<br>";
 */
 $SearchType = $objSession->GetVariable("SearchType");
 if(!strlen($SearchType))
   $SearchType = "all";
 $SearchLabel = "la_SearchLabel";
 
 if( GetVar('SearchWord') !== false ) $objSession->SetVariable('admin_seach_words', GetVar('SearchWord') );
 $SearchWord = $objSession->GetVariable('admin_seach_words');
 
 $objSession->SetVariable("HasChanges", 0);
 
 // where should all edit popups submit changes
 $objSession->SetVariable("ReturnScript", basename($_SERVER['PHP_SELF']) );
 /* page header */
 print <<<END
 <html>
 <head>
   <title>In-portal</title>
   <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
   <meta http-equiv="Pragma" content="no-cache">
   <script language="JavaScript">
     imagesPath='$imagesURL'+'/';
   </script> 
 
 END;
 
   require_once($pathtoroot.$admin."/include/mainscript.php");
 
 print <<<END
 <script type="text/javascript">
 	if (window.opener != null) {
     	theMainScript.CloseAndRefreshParent();
   	} 	
 </script>
 END;
 
 print <<<END
   <script src="$browseURL/toolbar.js"></script>
   <script src="$browseURL/checkboxes_new.js"></script>
   <script language="JavaScript1.2" src="$browseURL/fw_menu.js"></script>
   <link rel="stylesheet" type="text/css" href="$browseURL/checkboxes.css">
   <link rel="stylesheet" type="text/css" href="$cssURL/style.css">
   <link rel="stylesheet" type="text/css" href="$browseURL/toolbar.css">
 END;
 load_module_styles();
 if( !isset($list) ) $list = '';
 if(($SearchType=="categories" || $SearchType="all") && strlen($list))
 {
   int_SectionHeader(NULL,NULL,NULL,admin_language("la_Title_SearchResults"));
 }
 else
   int_SectionHeader();
 
+$filter = false; // always initialize variables before use
+
 if($objSession->GetVariable("SearchWord") != '') {
 	$filter = true;
 } 
 else {
-	$sessVars = $objConfig->GetSessionValues(0);
-	//print_pre($sessVars);
-	foreach ($sessVars as $key => $value) {
-		if (strstr($key, '_View')) {
-			//echo "$value<br>";
-			if ($value != 1) {
-				$filter = true;
-			}
+	$bit_combo = $objModules->ExecuteFunction('GetModuleInfo', 'all_bitmask');
+	$bit_combo = $objModules->MergeReturn($bit_combo);
+	foreach($bit_combo['VarName'] as $mod_name => $VarName)
+	{
+		//echo "VarName: [$VarName] = [".$objConfig->Get($VarName)."], ALL = [".$bit_combo['Bits'][$mod_name]."]<br>";
+		if( $objConfig->Get($VarName) != $bit_combo['Bits'][$mod_name] )
+		{
+			$filter = true;
+			break;	
 		}
 	}
 }
 ?>
 </div>
 <!-- alex mark -->
 <table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
   <tbody>
    <tr>
    <td>
        <div name="toolBar" id="mainToolBar">
           <tb:button action="upcat" alt="<?php echo admin_language("la_ToolTip_Up"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="homecat" alt="<?php echo admin_language("la_ToolTip_Home"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="new_cat" alt="<?php echo admin_language("la_ToolTip_New_Category"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="editcat" alt="<?php echo admin_language("la_ToolTip_Edit_Current_Category"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
 
 <?php
             foreach($NewButtons as $btn)
             {
                 print "<tb:button action=\"".$btn["Action"]."\" alt=\"".$btn["Alt"]."\" ImagePath=\"".$btn["ImagePath"]."\" ";
                 if(strlen($btn["Tab"])>0)
                     print "tab=\"".$btn["Tab"]."\"";
                 print ">\n";
             }
 ?>
           <tb:button action="edit" alt="<?php echo admin_language("la_ToolTip_Edit"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="delete" alt="<?php echo admin_language("la_ToolTip_Delete"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="approve" alt="<?php echo admin_language("la_ToolTip_Approve"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="decline" alt="<?php echo admin_language("la_ToolTip_Decline"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="cut" alt="<?php echo admin_language("la_ToolTip_Cut"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="copy" alt="<?php echo admin_language("la_ToolTip_Copy"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="paste" alt="<?php echo admin_language("la_ToolTip_Paste"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="move_up" alt="<?php echo admin_language("la_ToolTip_Move_Up"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="move_down" alt="<?php echo admin_language("la_ToolTip_Move_Down"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="print" alt="<?php echo admin_language("la_ToolTip_Print"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="view" alt="<?php echo admin_language("la_ToolTip_View"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
        </div>
    </td>
    </tr>
   </tbody>
 </table>
 <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#e0e0da" border="0" class="tableborder_full_a">
    <tbody>
     <tr>
      <td><img height="15" src="<?php echo $imagesURL; ?>/arrow.gif" width="15" align="middle" border="0">
           <span class="navbar"><?php $attribs["admin"]=1; print m_navbar($attribs); ?></span>
        </td>
       <td align="right">
           <FORM METHOD="POST" ACTION="<?php echo $_SERVER["PHP_SELF"]."?".$envar; ?>" NAME="admin_search" ID="admin_search"><INPUT ID="SearchScope" NAME="SearchScope" type="hidden" VALUE="<?php echo $objSession->GetVariable("SearchScope"); ?>"><INPUT ID="SearchType" NAME="SearchType" TYPE="hidden" VALUE="<?php echo $objSession->GetVariable("SearchType"); ?>"><INPUT ID="NewSearch" NAME="NewSearch" TYPE="hidden" VALUE="0"><INPUT TYPE="HIDDEN" NAME="Action" value="m_Exec_Search">
           <table cellspacing="0" cellpadding="0"><tr>
           <td><?php echo admin_language($SearchLabel); ?>&nbsp;</td>
 					<td><input ID="SearchWord" type="text" value="<?php echo $SearchWord; ?>" name="SearchWord" size="10" style="border-width: 1; border-style: solid; border-color: 999999"></td>
           <td><img id="imgSearch" action="search_b" src="<?php echo $imagesURL."/toolbar/";?>/icon16_search.gif" alt="<?php echo admin_language("la_ToolTip_Search"); ?>" align="absMiddle" onclick="this.action = this.getAttribute('action'); actionHandler(this);" src="<?php echo $imagesURL."/toolbar/";?>/arrow16.gif" onmouseover="this.src='<?php echo $imagesURL."/toolbar/";?>/icon16_search_f2.gif'" onmouseout="this.src='<?php echo $imagesURL."/toolbar/";?>/icon16_search.gif'" style="cursor:hand" width="22" width="22"><img action="search_a" alt="<?php echo admin_language("la_ToolTip_Search"); ?>" align="absMiddle" onclick="this.action = this.getAttribute('action'); actionHandler(this);" src="<?php echo $imagesURL."/toolbar/";?>/arrow16.gif" onmouseover="this.src='<?php echo $imagesURL."/toolbar/";?>/arrow16_f2.gif'" onmouseout="this.src='<?php echo $imagesURL."/toolbar/";?>/arrow16.gif'" style="cursor:hand">
           <img action="search_c" src="<?php echo $imagesURL."/toolbar/";?>/icon16_search_reset.gif" alt="<?php echo admin_language("la_ToolTip_Search"); ?>" align="absMiddle" onclick="document.all.SearchWord.value = ''; this.action = this.getAttribute('action'); actionHandler(this);" onmouseover="this.src='<?php echo $imagesURL."/toolbar/";?>/icon16_search_reset_f2.gif'" onmouseout="this.src='<?php echo $imagesURL."/toolbar/";?>/icon16_search_reset.gif'" style="cursor:hand" width="22" width="22">&nbsp;
           </td>
           </tr></table>
           </FORM>
           <!--tb:button action="search_b" alt="<?php echo admin_language("la_ToolTip_Search"); ?>" align="right" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="search_a" alt="<?php echo admin_language("la_ToolTip_Search"); ?>" align="right" ImagePath="<?php echo $imagesURL."/toolbar/";?>"-->
       </td>
     </tr>
   </tbody>
 </table>
 <?php if ($filter) { ?>
 <table width="100%" border="0" cellspacing="0" cellpadding="0" class="toolbar">
   <tr>
     <td valign="top">
       <?php int_hint_red(admin_language("la_Warning_Filter")); ?>
     </td>
   </tr>
 </table>
 <?php } ?>
 <br>  
  <!-- CATEGORY DIVIDER -->
 <?php 
        
 	$OrderBy = $objCatList->QueryOrderByClause(TRUE,TRUE,TRUE);   
     $objCatList->Clear();
     $IsSearch = FALSE;
 	if($SearchType == 'categories' || $SearchType == 'all')
     {
 		$list = $objSession->GetVariable("SearchWord");
         $SearchQuery = $objCatList->AdminSearchWhereClause($list);
         if(strlen($SearchQuery))
         {
         	$SearchQuery = " (".$SearchQuery.") ";
             if( strlen($CatScopeClause) ) $SearchQuery .= " AND ".$CatScopeClause;
            	$objCatList->LoadCategories($SearchQuery.$CategoryFilter,$OrderBy);
            	$IsSearch = TRUE;
         }
         else
            	$objCatList->LoadCategories("ParentId=".$objCatList->CurrentCategoryID()." ".$CategoryFilter,$OrderBy);
 	}
     else
          $objCatList->LoadCategories("ParentId=".$objCatList->CurrentCategoryID()." ".$CategoryFilter, $OrderBy);
 	
        $TotalItemCount += $objCatList->QueryItemCount;
        
 ?>
 <?php
   $e = $Errors->GetAdminUserErrors();
   if(count($e)>0)
   {  	
     echo "<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">";
     for($ex = 0; $ex<count($e);$ex++)
     {
       echo "<tr><td width=\100%\" class=\"error\">".prompt_language($e[$ex])."</td></tr>";
     }
     echo "</TABLE><br>";
   }
 ?>
 <table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
    <tr>
       <td width="138" height="20" nowrap="nowrap" class="active_tab" onclick="toggleCategoriesB(this)" id="cats_tab">
           <table cellspacing="0" cellpadding="0" width="100%" border="0">
           	<tr>
           		<td id="l_cat" background="<?php echo $imagesURL; ?>/itemtabs/tab_active_l.gif" class="left_tab">
           			<img src="<?php echo $imagesURL; ?>/itemtabs/divider_up.gif" width="20" height="20" border="0" align="absmiddle">
           		</td>
           		<td id="m_cat" nowrap background="<?php echo $imagesURL; ?>/itemtabs/tab_active.gif" class="tab_class">
              		<?php echo admin_language("la_ItemTab_Categories"); ?>:&nbsp;
              	</td>
              	<td id="m1_cat" align="right" valign="top" background="<?php echo $imagesURL; ?>/itemtabs/tab_active.gif" class="tab_class">
              		<span class="cats_stats">(<?php echo $objCatList->QueryItemCount; ?>)</span>&nbsp;
              	</td>
              	<td id="r_cat" background="<?php echo $imagesURL; ?>/itemtabs/tab_active_r.gif" class="right_tab">
              		<img src="<?php echo $imagesURL; ?>/spacer.gif" width="21" height="20">
              	</td>
           	</tr>
           </table>
       </td>
       <td>&nbsp;</td>
    </tr>
   </tbody>
 </table>
 <div class="divider" style="" id="categoriesDevider"><img width="1" height="1" src="<?php echo $imagesURL; ?>/spacer.gif"></div>
 </DIV>
 </div>
 <DIV style="background-color: #ffffff; position: relative; padding-top: 1px; top: -1px; z-Index:0" id="firstContainer">
   <DIV style="background-color: #ffffff; position: relative; padding-top: 1px; top: -1px; z-Index:2" id="secondContainer">
     <!-- CATEGORY OUTPUT START -->
     <div id="categories" tabtitle="Categories">
       <form id="categories_form" name="categories_form" action="" method="post">
         <input type="hidden" name="Action">
         <?php
           if($IsSearch)
           {     
           		$template = "cat_search_element.tpl";
           }
           else {
           		$template = "cat_element.tpl";
           }
          print adListSubCats($objCatList->CurrentCategoryID(),$template); 
         ?>
       </form>
     </div>
     <BR>
     <!-- CATEGORY OUTPUT END -->
     <?php
         print $ItemTabs->TabRow();
         if(count($ItemTabs->Tabs))
         {        
     ?>
     <div class="divider" id="tabsDevider"><img width=1 height=1 src="images/spacer.gif"></div>
       <?php
         }
       ?>
   </DIV>
   <?php
   	unset($m);
     $m = GetModuleArray("admin");
     foreach($m as $key=>$value)
     {
         $path = $pathtoroot.$value."admin/browse.php";
         if(file_exists($path))
         {
             //echo "\n<!-- $path -->\n";
             include_once($path);
         }
     }
   ?>
   <form method="post" action="browse.php?env=<?php echo BuildEnv(); ?>" name="viewmenu">
     <input type="hidden" name="fieldname" value="">
     <input type="hidden" name="varvalue" value="">
     <input type="hidden" name="varvalue2" value="">
     <input type="hidden" name="Action" value="">
   </form>
 </DIV>
 <!-- END CODE-->
 <script language="JavaScript">
    InitPage();
    
    
    cats_on = theMainScript.GetCookie('cats_tab_on');
    if (cats_on == 0) {
    	 toggleCategoriesB(document.getElementById('cats_tab'), true);
    }
    
    tabs_on = theMainScript.GetCookie('tabs_on');
    if (tabs_on == '1' || tabs_on == null) {
 	   if(default_tab.length == 0 || default_tab == 'categories' )
 	   { 
 	   		cookie_start = theMainScript.GetCookie('active_tab');
 	   		if (cookie_start != null) start_tab = cookie_start;
 	     if(start_tab!=null) {
 	     	//alert('ok');
 	       toggleTabB(start_tab, true);
 	     }
 	   }
 	   else
 	   {
 	   		//alert('ok');
 	       toggleTabB(default_tab,true);
 	   }
 	 }
    
 	d = document.getElementById('SearchWord');
 	if(d)
 	{
 		d.onkeyup = function(event) {
 			if(window.event.keyCode==13)
 			{
 				var el = document.getElementById('imgSearch');
 				el.onclick();
 			}
 		}
 	}   
 </script>
 
   <?php int_footer(); ?>

Property changes on: trunk/admin/browse.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.2
\ No newline at end of property
+1.3
\ No newline at end of property
Index: trunk/admin/include/tabs.js
===================================================================
--- trunk/admin/include/tabs.js	(revision 258)
+++ trunk/admin/include/tabs.js	(revision 259)
@@ -1,274 +1,274 @@
 //parses input tags looking for validation attributes	
 
 function DataIsValid(f)
 {
 	var ValType = '';
 	var span_id = '';
 	var form_result = true;
 	var field_result = true;
 	var j = 0;
 
   	for (var i = 0; i < f.elements.length; i++)
   	{
 		ValType = '';
   	   	Field = f.elements[i];
   	   	ValType = Field.getAttribute('ValidationType');
   	   	if(ValType)
   	   	{
   	   	  	ValType = TransformValidationType(ValType); // for capability with old forms
   	   	  	span_id = 'prompt_' + Field.name;
   	      	span = document.getElementById(span_id);
   	      	if(span)
   	      	{
   	        	field_result = true;
   	        	ValType = ValType.split(',');
   	        	
   	        	j = 0;
   	        	while(j < ValType.length)
   	        	{
   	        		//alert('Validating ['+Field.name+'] as ['+ValType[j]+']');
   	        		if(ValType[j] == 'password')
   	        		{
   	        			var repasswd = document.getElementById(Field.name + '_verify');
   	        			if(repasswd)
   	        			{
   	        				field_result &= ValidateField(Field.value, ValType[j], repasswd.value);
   	        				document.getElementById('prompt_' + Field.name + '_verify').className = field_result ? 'text' : 'validation_error';
   	        			}
   	        		}
   	        		else
   	        			field_result &= ValidateField(Field.value, ValType[j]);
   	        		j++;
   	        	}
   	        	span.className = field_result ? 'text' : 'validation_error';
   	        	form_result &= field_result;
   	      	}
   	   }
   	}
   	return form_result;
 }
 
 function TransformValidationType(OldType)
 {
 	// replace old validation types with new
 	// on the fly in case if we have some forms
 	// that still use old validation types
 	
 	var NewType = '';
 	switch(OldType)
 	{
 		case 'optional_date':
 			NewType = 'date';
 			break;
 		default:
 			NewType = OldType;
 			break;
 	}
 	return NewType;
 }
 
 function ValidateField(FieldValue, ValidateAs, RePasswdValue)
 {
 	// validate FieldValue based on ValidateAs rule specified;
 	// in case if password field compare it with RePasswdValue
 	var result = true;
 	switch(ValidateAs)
 	{
 		case 'exists': // field is required
 			if(FieldValue.length == 0) result = false;
 			break;
   	      	  
 		case 'integer': // field must be integer number
 			result = ValidateNumber(FieldValue, ValidateAs);
 			break;
 			
 		case 'password': // validate as password field
 			result = (FieldValue == RePasswdValue) || (FieldValue.length == 0);
 			break;
 		
 		case 'date': // text must be a formatted date
 			result = ValidDate(FieldValue);
 			break;
 			
 		case 'time': // text must be a formatted time
 			result = ValidTime(FieldValue);
 			break;
 	}
 	return result;
 }
 
 function MarkAsRequired(f)
 {
 	var ValType = '';
 	var span_id = '';
 	var result = true;
   	
 	for (var i = 0; i < f.elements.length; i++)
   	{
   		ValType = '';
   	   	Field = f.elements[i];
   	   	ValType = Field.getAttribute('ValidationType');
   	   	if(ValType)
   	   	{
   	   	  	ValType = ValType.split(',');
   	   	  	if( InArray(ValType,'exists') !== false )
   	   	  	{
   	   	  		span_id = 'prompt_' + Field.name;
   	      		span = document.getElementById(span_id);
   	      		span.innerHTML = span.innerHTML + '<span class="error">*</span>';
   	    	}
   	   	}  	   
   	}
 }
 
 function InArray(aArray, aValue)
 {
 	// checks if element in array
 	var k = 0;
 	while(k < aArray.length)
 	{
 		if(aArray[k] == aValue) return k;
 		k++;	
 	}
 	return false;
 }
 
 //Used to submit the form when a tab is clicked on	
 function edit_submit(formname, status_field, targetURL, save_value, env_str, new_target)
 {    
       var full_env = env;
       if( HasParam(env_str) ) full_env += env_str;
 
       if(full_env.substr(0,3)!="env")
         full_env = 'env='+full_env;
 	 
-      
       f = document.getElementById(formname);
      
       if(f)
       { 
         var valid = false;	
       	if(save_value != 2 && save_value !=-1)
       	{
           valid = DataIsValid(f);
       	}
       	else
       	{
       		var a = f.Action;
       		if(a)
       		{
       		  a.value='';
       		}
       	}
         if(valid || save_value==2 || save_value==-1)
         {      
           f.action = rootURL + targetURL + '?' + full_env;   
       	  if(status_field.length>0)
       	  {                 
           	f.elements[status_field].value = save_value; //0= stay in temp, 1=save to perm, 2 = purge no save          
       	  }	      
-	      
+	      alert('action: '+f.action);
       	  if(new_target != null && typeof(new_target) != 'undefined') f.target = new_target;
+	      
 	      f.submit();
         }
         else
           if(!valid)
               alert(ErrorMsg);
 
       }
       else
         alert('Form '+formname+' was not found.');
 }
 
 //Used when the save or cancel buttin is hit	
 function do_edit_save(formname, status_field, targetURL, save_value, env_str)
 {    
 	  var full_env = env;
 	  if( HasParam(env_str) ) full_env += env_str;
 	  if(full_env.substr(0,3)!="env")
         full_env = 'env='+full_env;		
         
     	f = document.getElementById(formname);
     	if(f)
     	{    
       		f.action = rootURL + targetURL + '?' + full_env;
       		//alert(f.action);
       		if(status_field.length>0)
       		{
       	 	  f.elements[status_field].value = save_value; //0= stay in temp, 1=save to perm, 2 = purge no save
       		}
 	  		f.submit();
     	}
     	else
         	alert('Form '+formname+' was not found.');	
 }
 
 function jump_to_url(targetURL, env_str)
 {
 	  var full_env = env;
       if( HasParam(env_str) ) full_env += env_str;
       
 	  if(full_env.substr(0,3)!="env")
         full_env = 'env='+full_env;		
 	
 	  document.location = rootURL + targetURL + '?' + full_env;
 }
 // -------------------------------------------------------------------------------------------------------------
 function submit_form(formname, status_field, targetURL, save_value, env_str)
 {    
 	// by Alex, submits form.      
       
       var full_env = env;
      if( HasParam(env_str) ) full_env += env_str;
       if(full_env.substr(0,3)!="env")
         full_env = 'env='+full_env;
 	  
       
       f = document.getElementById(formname);
     
       if(f)
       { 
         var valid = false;	
       	if(save_value != 2 && save_value !=-1)
       	{
           valid = DataIsValid(f);
       	}
       	else
       	{
       		var a = f.Action;
       		if(a)
       		{
       		  a.value='';
       		}
       	}
         if(valid || save_value==2 || save_value==-1)
         {      
           f.action = rootURL + targetURL + '?' + full_env;   
       	  if(status_field.length>0)
       	  {                 
           	f.elements[status_field].value = save_value; //0= stay in temp, 1=save to perm, 2 = purge no save          
       	  }
 	     
 	      f.submit();
         }
         else
           if(!valid)
               alert(ErrorMsg);
 
       }
       else
         alert('Form '+formname+' was not found.');
 }
 
 function HasParam(param)
 {
 	// checks of parameter is passed to function (cross-browser)
 	return typeof(param) == 'undefined' ? false : true;
 }
 
 function SetBackground(element_id, img_url)
 {
 	// set background image of element specified by id
 	var el = document.getElementById(element_id);
 	el.style.backgroundImage = 'url('+img_url+')';
 }
\ No newline at end of file

Property changes on: trunk/admin/include/tabs.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5
\ No newline at end of property
+1.6
\ No newline at end of property
Index: trunk/admin/advanced_view.php
===================================================================
--- trunk/admin/advanced_view.php	(revision 258)
+++ trunk/admin/advanced_view.php	(revision 259)
@@ -1,363 +1,363 @@
 <?php
 ##############################################################
 ##In-portal                                     			##
 ##############################################################
 ##                   In-portal                     			##
 ##             Intechnic Corporation               			##
 ##          All Rights Reserved, 1998-2002            		##
 ##                                           				##
 ## No portion of this code may be copied, reproduced or  	##
 ##    otherwise redistributed without proper written     	##
 ##   consent of Intechnic Corporation.  Violation will      ##
 ##    result in revocation of the license and support    	##
 ##  privileges along maximum prosecution allowed by law. 	##
 ##############################################################
 //$pathtoroot="";
 
 $b_topmargin = "0";
 //$b_header_addon = "<DIV style='position:relative; z-Index: 1; background-color: #ffffff; padding-top:1px;'><div style='position:absolute; width:100%;top:0px;' align='right'><img src='images/logo_bg.gif'></div><img src='images/spacer.gif' width=1 height=15><br><div style='z-Index:1; position:relative'>";
 
 if(!strlen($pathtoroot))
 {
   $path=dirname(realpath($_SERVER['SCRIPT_FILENAME']));
   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;
   }
 }
 
 $sub = substr($pathtoroot,strlen($pathchar)*-1);
 if($sub!=$pathchar)
 {
   $pathtoroot = $pathtoroot.$pathchar;
 }
 //echo $pathtoroot;
 
 require_once($pathtoroot."kernel/startup.php");
 
 if (!admin_login())
 {            
     if(!headers_sent())
       setcookie("sid"," ",time()-3600);
     $objSession->Logout();
     header("Location: ".$adminURL."/login.php");
     die();
 	//require_once($pathtoroot."admin/login.php");
 }
 
 $rootURL="http://".ThisDomain().$objConfig->Get("Site_Path");
 $admin = $objConfig->Get("AdminDirectory");
 if(!strlen($admin))
     $admin = "admin";
 
 $localURL=$rootURL."kernel/";
 $adminURL = $rootURL.$admin;
 $imagesURL = $adminURL."/images";
 $browseURL = $adminURL."/browse";
 $cssURL = $adminURL."/include";
 
 $indexURL = $rootURL."index.php";
 
 $m_var_list_update["cat"] = 0;
 $homeURL = "javascript:AdminCatNav('".$_SERVER["PHP_SELF"]."?env=".BuildEnv()."');";
 unset($m_var_list_update["cat"]);
 
 //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."/browse/toolbar.php");
 
 $mod_prefixes = Array();
 $m = GetModuleArray();
 foreach($m as $key=>$value)
 {
     $path = $pathtoroot.$value."admin/include/parser.php";
     if(file_exists($path))
     {
       //echo "<!-- $path -->";
       $mod_prefixes[] = $key;
       @include_once($path);
     }
 }
 
 if(!$is_install)
 {
   if (!admin_login())
   {            
     if(!headers_sent())
       setcookie("sid"," ",time()-3600);
     $objSession->Logout();
     header("Location: ".$adminURL."/login.php");
     die();
 	//require_once($pathtoroot."admin/login.php");
   }
 }
 //Set Section
 $section = 'in-portal:advanced_view';
 
 //Set Environment Variable
 
 // save last category visited
 $objSession->SetVariable('prev_category', $objSession->GetVariable('last_category') );
 $objSession->SetVariable('last_category', $objCatList->CurrentCategoryID() );
 
 $objSession->SetVariable("HasChanges", 0);
 // where should all edit popups submit changes
 $objSession->SetVariable("ReturnScript", basename($_SERVER['PHP_SELF']) );
 
 
 // common "Advanced View" tab php functions: begin
 function GetAdvView_SearchWord($prefix)
 {
 	global $objSession;
 	return $objSession->GetVariable($prefix.'_adv_view_search');
 }
 
 function SaveAdvView_SearchWord($prefix)
 {
 	global $objSession;
 	$SearchWord = $objSession->GetVariable($prefix.'_adv_view_search');
 	if( isset($_REQUEST['SearchWord']) )
 	{ 
 		$SearchWord = $_REQUEST['SearchWord'];
 		$objSession->SetVariable($prefix.'_adv_view_search', $SearchWord);
 	}
 }
 
 function ResetAdvView_SearchWord($prefix)
 {
 	global $objSession;
 	$objSession->SetVariable($prefix.'_adv_view_search', '');
 }
 
 function ShowSearchForm($prefix, $envar)
 {
 	global $imagesURL;
 	$btn_prefix = $imagesURL.'/toolbar/icon16_search';
 	$SearchWord = GetAdvView_SearchWord($prefix);
 	echo '<form method="post" action="'.$_SERVER["PHP_SELF"].'?'.$envar.'" name="'.$prefix.'_adv_view_search" id="'.$prefix.'_adv_view_search">
 			<input type="hidden" name="Action" value="">
 				<table cellspacing="0" cellpadding="0">
           			<tr>
           				<td>'.admin_language('la_SearchLabel').'&nbsp;</td>
 						<td><input id="SearchWord" type="text" value="'.$SearchWord.'" name="SearchWord" size="10" style="border-width: 1; border-style: solid; border-color: 999999"></td>
           				<td>
           					<img 
           						id="imgSearch" 
           						src="'.$btn_prefix.'.gif" 
           						alt="'.admin_language("la_ToolTip_Search").'" 
           						align="absMiddle"
           						onclick="SubmitSearch(\''.$prefix.'_adv_view_search\',\''.$prefix.'_adv_view_search\');"
           						onmouseover="this.src=\''.$btn_prefix.'_f2.gif\'" 
           						onmouseout="this.src=\''.$btn_prefix.'.gif\'" 
           						style="cursor:hand" 
           						width="22" 
           						height="22"
           					>
   							<img 
           						id="imgSearchReset" 
           						src="'.$btn_prefix.'_reset.gif" 
           						alt="'.admin_language("la_ToolTip_Search").'" 
           						align="absMiddle"
           						onclick="SubmitSearch(\''.$prefix.'_adv_view_search\',\''.$prefix.'_adv_view_search_reset\');"
           						onmouseover="this.src=\''.$btn_prefix.'_reset_f2.gif\'" 
           						onmouseout="this.src=\''.$btn_prefix.'_reset.gif\'" 
           						style="cursor:hand" 
           						width="22"
           						height="22" 
           						>&nbsp;        					
           					
           					
           				</td>
           			</tr>
           		</table>
           </form>';
 }
 // common "Advanced View" tab php functions: end
 
 /* page header */
 print <<<END
 <html>
 <head>
   <title>In-portal</title>
   <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
   <meta http-equiv="Pragma" content="no-cache">
   <script language="JavaScript">
     imagesPath='$imagesURL'+'/';
   </script> 
 
 END;
 
   require_once($pathtoroot.$admin."/include/mainscript.php");
 
 print <<<END
 <script type="text/javascript">
 	if (window.opener != null) {
     	theMainScript.CloseAndRefreshParent();
   	} 	
 </script>
 END;
 
 print <<<END
   <script src="$browseURL/toolbar.js"></script>
   <script src="$browseURL/checkboxes_new.js"></script>
   <script language="JavaScript1.2" src="$browseURL/fw_menu.js"></script>
   <link rel="stylesheet" type="text/css" href="$browseURL/checkboxes.css">
   <link rel="stylesheet" type="text/css" href="$cssURL/style.css">
   <link rel="stylesheet" type="text/css" href="$browseURL/toolbar.css">
 END;
 load_module_styles();
 if( !isset($list) ) $list = '';
 
 int_SectionHeader();
 
-$filter = false;
-$sessVars = $objConfig->GetSessionValues(0);
-//print_pre($sessVars);
-foreach ($sessVars as $key => $value) {
-	if (strstr($key, '_View')) {
-		//echo "$value<br>";
-		if ($value != 1) {
+	$bit_combo = $objModules->ExecuteFunction('GetModuleInfo', 'all_bitmask');
+	$bit_combo = $objModules->MergeReturn($bit_combo);
+	foreach($bit_combo['VarName'] as $mod_name => $VarName)
+	{
+		//echo "VarName: [$VarName] = [".$objConfig->Get($VarName)."], ALL = [".$bit_combo['Bits'][$mod_name]."]<br>";
+		if( $objConfig->Get($VarName) != $bit_combo['Bits'][$mod_name] )
+		{
 			$filter = true;
+			break;	
 		}
 	}
-}
 
 ?>
 </div>
 <!-- alex mark -->
 <table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
   <tbody>
    <tr>
    <td>
        <div name="toolBar" id="mainToolBar">
           <tb:button action="edit" alt="<?php echo admin_language("la_ToolTip_Edit"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="delete" alt="<?php echo admin_language("la_ToolTip_Delete"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="approve" alt="<?php echo admin_language("la_ToolTip_Approve"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="decline" alt="<?php echo admin_language("la_ToolTip_Decline"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:separator ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="print" alt="<?php echo admin_language("la_ToolTip_Print"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
           <tb:button action="view" alt="<?php echo admin_language("la_ToolTip_View"); ?>" ImagePath="<?php echo $imagesURL."/toolbar/";?>">
        </div>
    </td>
    </tr>
   </tbody>
 </table>
 
 <?php if ($filter) { ?>
 <table width="100%" border="0" cellspacing="0" cellpadding="0" class="toolbar">
   <tr>
     <td valign="top">
       <?php int_hint_red(admin_language("la_Warning_Filter")); ?>
     </td>
   </tr>
 </table>
 <?php } ?>
 <br>  
  <!-- CATEGORY DIVIDER -->
 
 </DIV>
 </div>
 <DIV style="background-color: #ffffff; position: relative; padding-top: 1px; top: -1px; z-Index:0" id="firstContainer">
   <DIV style="background-color: #ffffff; position: relative; padding-top: 1px; top: -1px; z-Index:2" id="secondContainer">
     
 
 
     <?php
        
         print $ItemTabs->TabRow();
        
         if(count($ItemTabs->Tabs))
         {        
     ?>
     <div class="divider" id="tabsDevider"><img width=1 height=1 src="images/spacer.gif"></div>
       <?php
         }
       ?>
   </DIV>
   
   <?php
   	unset($m);
     $m = GetModuleArray("admin");
     
     
     foreach($m as $key=>$value)
     {
         $path = $pathtoroot.$value."admin/advanced_view.php";
         //echo "Including File: $path<br>";
         if(file_exists($path))
         {
             //echo "\n<!-- $path -->\n";
             include_once($path);
         }
     }
   ?>
   <form method="post" action="advanced_view.php?env=<?php echo BuildEnv(); ?>" name="viewmenu">
     <input type="hidden" name="fieldname" value="">
     <input type="hidden" name="varvalue" value="">
     <input type="hidden" name="varvalue2" value="">
     <input type="hidden" name="Action" value="">
   </form>
 </DIV>
 <!-- END CODE-->
 <script language="JavaScript">
 	InitPage();
 	if(default_tab.length == 0)
 	{ 
 		cookie_start = theMainScript.GetCookie('active_tab');
 		if (cookie_start != null) start_tab = cookie_start;
 	  	if(start_tab!=null) toggleTabB(start_tab, true);
 	}
 	else
 	{
 	    toggleTabB(default_tab,true);
 	}
 </script>
 <?php int_footer(); ?>
\ No newline at end of file

Property changes on: trunk/admin/advanced_view.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 258)
+++ trunk/admin/install.php	(revision 259)
@@ -1,1926 +1,1920 @@
 <?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=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') && !defined('DEBUG_MODE') ) include_once($pathtoroot.'debug.php');
-if( defined('DEBUG_MODE') )
-{
-	error_reporting(E_ALL & E_NOTICE);
-	ini_set('display_errors', 1);
-}
-else
-	error_reporting(0);
+//if( !defined('DEBUG_MODE') ) 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($pathtoroot.$admin."/install/install_lib.php");
 
 $ini_file = $pathtoroot."config.php";
 if(file_exists($ini_file))
 {
     $write_access = is_writable($ini_file);
     $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;
       }
     }    
 }
 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", "");
     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">&nbsp;</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 <?php echo GetMaxPortalVersion($pathtoroot.$admin)?>: 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
       {
       	$act = '';
       	if (str_replace('.', '', $g_InPortal) >= 105) {
       		$act = 'check';
       	}
 		$rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['UserName'])."&password=".md5($_POST['UserPass'])."&action=$act&license_code=".base64_encode($g_LicenseCode)."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_SERVER['SERVER_NAME']), "r");
 		if (!$rfile) {
 			$login_err_mesg = "Unable to connect to the Intechnic server!";
 			$LoggedIn = false;		
 		}
 		else {
 			$rcontents = '';
 			while (!feof($rfile)) {
 				$line = fgets($rfile, 10000);
 				$rcontents .= $line;
 			}
 			@fclose($rfile);
 			
 			if (substr($rcontents, 0, 5) == 'Error') {
 				$login_err_mesg = substr($rcontents, 6);
 				$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 = $login_err_mesg;//"Invalid Username or Password - Try Again";
       }
 }
 
 if ($state == "upgrade") {
     $ado = inst_GetADODBConnection();
     
     $Modules = array();
     $Texts = array();    
     
     if (str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin)) >= 105 && $g_LicenseCode == '') {	
     	$state = 'reinstall';
     	$inst_error = "Your license must be updated before you can upgrade. Please don't use 'Existing License' option, instead either Download from Intechnic or Upload a new license file!";
     }
     else {
 		$sql = "SELECT Name, Version FROM ".$g_TablePrefix."Modules";
 		
 		$rs = $ado->Execute($sql);
 		//echo '<pre>'.print_r($rs->GetRows(), true).'</pre>';
 		
 		$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 != '' && !strstr($file, 'changelog') && !strstr($file, 'readme')) {
 		        		$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 = $pathtoroot.$admin."/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 != '' && !strstr($file, 'changelog') && !strstr($file, 'readme')) {
 	        		$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);
 				      		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 = 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 = $pathtoroot.$admin."/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 = 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 = $pathtoroot.$admin."/install/warning.php";
            }
 		}
 		else {
 			if ($_POST['backupdate'] != '') {
 				$include_file = $pathtoroot.$admin."/install/restore_select.php";
 		  		$restore_error = "$backupfile not found or could not be read";		
 			}
 			else {
 				$include_file = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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 = 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 = $pathtoroot.$admin."/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'])."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_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 = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/install/get_license.php";					
 			}
 			else {
 				if (substr($rcontents, 0, 3) == "SEL") {
 					$state = "download_license";
 					$license_select = substr($rcontents, 4);
 					$include_file = $pathtoroot.$admin."/install/download_license.php";
 				}
 				else {
 					// Here we get one license
 					$tmp_data = explode('Code==:', $rcontents);
 				
 	            	$data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $tmp_data[0]));				
 					inst_ParseLicense($data);
 		            $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
 		            if($ValidLicense)
 		            {
 		                set_ini_value("Intechnic","License",base64_encode($data));
 	                	set_ini_value("Intechnic","LicenseCode",$tmp_data[1]);		                
 		                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 = $pathtoroot.$admin."/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'])."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&domain=".base64_encode($_POST['domain']), "r");
 		if (!$rfile) {
 			$get_license_error = "Unable to connect to the Intechnic server! Please try again later!";
 			$state = "get_license";
 			$include_file = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/install/download_license.php";					
 			}
 			else {
 				$tmp_data = explode('Code==:', $rcontents);
 							
 	            $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $tmp_data[0]));				
 	            inst_ParseLicense($data);
 	            $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0));
 	            if($ValidLicense)
 	            {
 	                set_ini_value("Intechnic","License",base64_encode($data));
 	                set_ini_value("Intechnic","LicenseCode",$tmp_data[1]);
 	                save_values();
 	                $state="domain_select";
 	            }
 	            else {
 	              $license_error="Invalid License File";				
 	            }
 		        if(!$ValidLicense)
 		        {
 		            $state="license";
 		        }	            
 			}			
 		}
 	}
 }
 
 if($state=="license_process")
 {
     $ValidLicense = FALSE;    
     switch($_POST["lic_opt"])
     {
     case 1: /* download from intechnic */
         $include_file = $pathtoroot.$admin."/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);
             }      
             
             $tmp_data = inst_LoadLicense(FALSE,$pathtoroot."themes/tmp.lic");            
             $data = $tmp_data[0];
             
             @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));
                 set_ini_value("Intechnic","LicenseCode",$tmp_data[1]);
                 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 = $pathtoroot.$admin."/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 != '' && !strstr($file, 'changelog') && !strstr($file, 'readme')) {
 	        		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 = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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'];
         
         if (strstr($domain, $i_Keys[0]['domain']) || inst_IsLocalSite($domain)) {
         	set_ini_value("Intechnic","Domain",$domain);
         	save_values();
         	$state="runsql";
         }
         else {
         	$DomainError = 'Domain name selected does not match domain name in the license!';
         	$state = "domain_select";
         }        	
     }
     else
     {
         $domain = str_replace(" ", "", $_POST["other"]);
         if ($domain != '') {
         	if (strstr($domain, $i_Keys[0]['domain']) || inst_IsLocalSite($domain)) {
         		set_ini_value("Intechnic","Domain",$domain);
         		save_values();
         		$state="runsql";
         	}
 	        else {
 	        	$DomainError = 'Domain name entered does not match domain name in the license!';
 	        	$state = "domain_select";
 	        }         	
         }
         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 = $pathtoroot.$admin."/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']);
       	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 = $pathtoroot.$admin."/install/install_finish.php";
       $state="finish";
   }
 }
 
 if ($state == "finish") {
 	$include_file = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/install/lang_run.php";
   	  }
   	  else
   	  {
   	    if( !$force_finish )
   	    {
   	    	$state = 'lang_default';
   	    }
   	    else
   		{
   	    	$_POST['next_step'] = 4;
   	    	$state = 'finish';
 			$include_file = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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 != '' && !strstr($file, 'changelog') && !strstr($file, 'readme')) {
 	        		$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);
 				      	save_values();
 			    	}
     			}
     		}
     	}
     	
     	$rs->MoveNext();
     }    
     
     $state="lang_select";
 }
 
 if($state=="lang_select")
 {
 	$Packs = GetLanguageList();
 	$include_file = $pathtoroot.$admin."/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);
     $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '".$_SERVER['DOCUMENT_ROOT'].$sitepath."admin/backupdata' WHERE VariableName='Backup_Path'";
     $ado->Execute($sql);
     $Modules = inst_GetModuleList();
     $include_file = $pathtoroot.$admin."/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)."&license_code=".base64_encode($g_LicenseCode)."&version=".str_replace('.', '', GetMaxPortalVersion($pathtoroot.$admin))."&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 = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/install/postconfig.php";
     }
     else
         $state = "theme_sel";       
 }
 
 if($state=="theme_sel")
 {
     $objThemes->CreateMissingThemes();
     $include_file = $pathtoroot.$admin."/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 = $pathtoroot.$admin."/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 &copy; 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.34
\ No newline at end of property
+1.35
\ No newline at end of property
Index: trunk/index.php
===================================================================
--- trunk/index.php	(revision 258)
+++ trunk/index.php	(revision 259)
@@ -1,126 +1,121 @@
 <?php
 
 if( file_exists('debug.php') ) include_once('debug.php');
-if( defined('DEBUG_MODE') )
-{
-	error_reporting(E_ALL);
-}
-else
-	error_reporting(0);
+if( !defined('DEBUG_MODE') ) error_reporting(0);
 
 list($usec, $sec) = explode(" ",microtime());
 $timestart = (float)$usec + (float)$sec;
 
 $pathtoroot = "./";
 $pathtoroot = realpath($pathtoroot)."/";
 
 if (!file_exists($pathtoroot."config.php")) {
 	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>";
 	echo "<a href='admin/install.php'>Go to installation script</a><br><br>";
 	flush();
 	die();
 }
 
 ob_start();
 $FrontEnd=1;
 
 $indexURL="../../index.php"; //Set to relative URL from the theme directory
 
 /* initalize the in-portal system */
 include_once("kernel/startup.php");
 
 LogEntry("System Init Complete\n");
 /* load the current front-end language set */
 
 //$objLanguageCache->LoadLanguage($objSession->Get("Language"),0);
 
 $rootURL="http://".ThisDomain().$objConfig->Get("Site_Path");
 
 //$secureURL = "https://".ThisDomain().$objConfig->Get("Site_Path");
 $secureURL = $rootURL;
 
 $html="<HTML>No Template</HTML>";
 
 if( !$var_list['t'] ) $var_list['t'] = 'index';
 
 if( !isset($CurrentTheme) ) $CurrentTheme = null;
 if( !is_object($CurrentTheme) ) $CurrentTheme = $objThemes->GetItem($m_var_list["theme"]);
 
 if(is_object($CurrentTheme))
 {
 	if(!$CurrentTheme->Get("Enabled"))
 	{
 		$CurrentTheme = $objThemes->GetItem($objThemes->GetPrimaryTheme());
 	}
 	if((int)$CurrentTheme->Get("ThemeId")>0)
 	{
       $timeout = $CurrentTheme->Get("CacheTimeout");
       $objLanguageCache->LoadTemplateCache($var_list["t"],$timeout,$CurrentTheme->Get("ThemeId"));
       $objLanguageCache->LoadCachedVars($objSession->Get("Language"));
 
 	  LogEntry("Language Set Loaded\n");
 
   	  $TemplateRoot = $CurrentTheme->ThemeDirectory()."/";
 //	echo "Template Root: $TemplateRoot<br>\n";
 
 	  LogEntry("Parsing Templates in $TemplateRoot\n");
 	  $objTemplate = new clsTemplateList($TemplateRoot);
 	  $html = $objTemplate->ParseTemplate($var_list["t"]);	 
     }
     else 
     {
       echo "No Primary Theme Selected";
       die();
     }
 }
 else
 {
   echo "No Primary Theme Selected\n";
   die();
 } 
 
 
 
 if(is_object($objSession))
 {
 	
 	$objSession->SetVariable("Template_Referer", $_local_t);
 }
 if($objTemplate->ErrorNo == -1)
 {
     $html = $objTemplate->ParseTemplate("error_template");
     
 }
 //$html = replacePngTags($html);
 LogEntry("Output Start\n");
 $html .= "<!-- Page Execution Time: ".( isset($ptime) ? $ptime : 0 )." -->";
 header("Content-length: ".strlen($html));
 header("Connection-Type: Keep-Alive");
 echo $html;
 
 LogEntry("Output End\n");
 
 if( isset($template) && $template->ErrorNo != 0 )
 {
   print "\n(".$objTemplate->ErrorNo.") ".$objTemplate->ErrorStr."\n";
 }
 
 LogEntry("Output Complete\n");
 $objLanguageCache->SaveTemplateCache();
 LogEntry("Templates Cached\n");
 
 //if($objSession->SessionEnabled())
 //  $objSession->SaveSessionData();   
 //echo "Cookie: <PRE>"; print_r($_COOKIE); echo "</PRE><br>\n";
 ob_end_flush();
 $timeend = getmicrotime();
 $diff = $timeend - $timestart;
 
 LogEntry("\nTotal Queries Executed: $sqlcount in $totalsql seconds\n");
 LogEntry("\nPage Execution Time: $diff seconds\n", true);
 if($LogFile)
   fclose($LogFile);
 
 
 ?>

Property changes on: trunk/index.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1
\ No newline at end of property
+1.2
\ No newline at end of property