Index: branches/RC/admin/install.php =================================================================== diff -u -r13 -r8929 --- branches/RC/admin/install.php (.../trunk/admin/install.php) (revision 13) +++ branches/RC/admin/install.php (.../branches/RC/admin/install.php) (revision 8929) @@ -1,118 +1,70 @@ <?php -error_reporting(0); -//$new_version = '1.0.2'; +error_reporting(E_ALL); +set_time_limit(0); +ini_set('memory_limit', -1); -define("GET_LICENSE_URL", "http://www.in-portal.net/licensing/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']; -} +// new path detection without K4 init: begin +define('FULL_PATH', realpath(dirname(__FILE__).'/..') ); +define('BASE_PATH', rtrim(preg_replace('#/admin$#', '', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))), '/')); +$rootURL = 'http://'.$_SERVER['HTTP_HOST'].rtrim(BASE_PATH, '/').'/admin/'; +// new path detection without K4 init: end -$pathtoroot = ""; -if(!strlen($pathtoroot)) -{ - //$path=dirname(realpath($_SERVER['SCRIPT_FILENAME']));PATH_TRANSLATED - $path=dirname(realpath($_SERVER['PATH_TRANSLATED'])); - if(strlen($path)) - { - /* determine the OS type for path parsing */ - $pos = strpos($path,":"); - if ($pos === false) - { - $gOS_TYPE="unix"; - $pathchar = "/"; - } - else - { - $gOS_TYPE="win"; - $pathchar="\\"; - } - $p = $path.$pathchar; - /*Start looking for the root flag file */ - while(!strlen($pathtoroot) && strlen($p)) - { - $sub = substr($p,strlen($pathchar)*-1); - if($sub==$pathchar) - { - $filename = $p."root.flg"; - } - else - $filename = $p.$pathchar."root.flg"; - if(file_exists($filename)) - { - $pathtoroot = $p; - } - else - { - $parent = realpath($p.$pathchar."..".$pathchar); - if($parent!=$p) - { - $p = $parent; - } - else - $p = ""; - } - } - if(!strlen($pathtoroot)) - $pathtoroot = ".".$pathchar; - } - else - { - $pathtoroot = ".".$pathchar; - } -} -$path_char = GetPathChar(); -//phpinfo(INFO_VARIABLES); +$pathtoroot = FULL_PATH.'/'; +$admin = 'admin'; -$sub = substr($pathtoroot,strlen($pathchar)*-1); -if($sub!=$pathchar) -{ - $pathtoroot = $pathtoroot.$pathchar; -} +ini_set('include_path', '.'); -$is_install = TRUE; -$admin = substr($path,strlen($pathtoroot)); -$state = $_GET["state"]; +if (!defined('IS_INSTALL')) define('IS_INSTALL',1); +if( file_exists($pathtoroot.'debug.php') && !(defined('DEBUG_MODE') && DEBUG_MODE) ) include_once($pathtoroot.'debug.php'); + +$state = isset($_GET["state"]) ? $_GET["state"] : ''; if(!strlen($state)) { - $state = $_POST["state"]; + $state = isset($_POST['state']) ? $_POST['state'] : ''; } -include("install/install_lib.php"); +if (!defined("GET_LICENSE_URL")) { + define("GET_LICENSE_URL", "http://www.intechnic.com/myaccount/license.php"); +} + +require_once $pathtoroot.$admin.'/install/install_lib.php'; + +$install_type = GetVar('install_type', true); +$force_finish = isset($_REQUEST['ff']) ? true : false; + $ini_file = $pathtoroot."config.php"; if(file_exists($ini_file)) { $write_access = is_writable($ini_file); - $ini_vars = parse_ini_file($ini_file,TRUE); + $ini_vars = inst_parse_portal_ini($ini_file,TRUE); foreach($ini_vars as $secname => $section) { foreach($section as $key => $value) { - $key = "g_".$key; + $key = "g_".str_replace('-', '', $key); global $$key; $$key = $value; } - } + } } else { - $state=""; + $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(); } } @@ -129,9 +81,20 @@ $configs[3] = "in-portal:configure_categories"; $mods[3] = "In-Portal"; -if(strlen($g_DBType)>0 && strlen($state)>0 && $state !="dbinfo" && $state !="db_config_save") +// simulate rootURL variable: begin + $rootURL = 'http://'.dirname($_SERVER['HTTP_HOST'].$_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( isset($g_DBType) && $g_DBType && strlen($state)>0 && !in_array($state, $db_savings) ) { - require_once($pathtoroot."kernel/startup.php"); + define('REL_PATH', 'admin'); + require_once($pathtoroot."kernel/startup.php"); $localURL=$rootURL."kernel/"; $adminURL = $rootURL.$admin; $imagesURL = $adminURL."/images"; @@ -143,6 +106,8 @@ //require_once ($pathtoroot."kernel/admin/include/navmenu.php"); require_once ($pathtolocal."admin/include/navmenu.php"); require_once($pathtoroot.$admin."/toolbar.php"); + + set_cookie(SESSION_COOKIE_NAME, '', adodb_mktime() - 3600, rtrim(BASE_PATH, '/') ); } function GetPathChar($path = null) @@ -158,8 +123,10 @@ return stripslashes($str); } -require_once($pathtoroot.$admin."/install/inst_ado.php"); +$skip_step = false; +require_once($pathtoroot.$admin."/install/inst_ado.php"); +$helpURL = $rootURL.$admin.'/help/install_help.php?destform=popup&help_usage=install'; ?> <html> <head> @@ -174,53 +141,75 @@ 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(); } - </SCRIPT> + + 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" valign="top"><a href="http://www.in-portal.net" target="_top"><img title="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 title="In-portal" src="images/logo.gif" width="150" height="91" border="0"></a></td> <td rowspan="3" width="100000" align="right"> </td> - <td width="400"><img alt="" src="images/blocks.gif" width="400" height="73"></td> + <td width="400"><img title="" src="images/blocks.gif" width="400" height="73"></td> </tr> - <tr><td align="right" background="images/version_bg.gif" class="head_version" valign="top"><img alt="" src="images/spacer.gif" width="1" height="14">In-Portal Version 1.0.0: English US</td></tr> - <tr><td><img alt="" src="images/blocks2.gif" width="400" height="2"><br></td></tr> - <tr><td bgcolor="black" colspan="4"><img alt="" src="images/spacer.gif" width="1" height="1"><br></td></tr> + <tr><td align="right" background="images/version_bg.gif" class="head_version" valign="top"><img title="" src="images/spacer.gif" width="1" height="14">In-Portal Version <?php echo GetMaxPortalVersion($pathtoroot.$admin)?>: English US</td></tr> + <tr><td><img title="" src="images/blocks2.gif" width="400" height="2"><br></td></tr> + <tr><td bgcolor="black" colspan="4"><img title="" 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"); - } - + $ado =& inst_GetADODBConnection(); + $installed = $ado ? TableExists($ado,"ConfigurationAdmin,Category,Permissions") : false; + if(!minimum_php_version("4.1.2")) - { + { $general_error = "You have version ".phpversion()." - please upgrade!"; //die(); } @@ -242,72 +231,125 @@ $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."kernel/images/pending")) + { + if ($general_error != '') { + $general_error .= '<br /><br />'; + } + $general_error .= "In-portal's Pending Image Upload directory must be writable (".$pathtoroot."kernel/images/pending)."; + //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/)."; + $general_error .= "In-portal's Export directory must be writable (".$pathtoroot."admin/export/)."; //die(); - } - + } + + if(!is_writable($pathtoroot."kernel/stylesheets/")) + { + if ($general_error != '') { + $general_error .= '<br /><br />'; + } + $general_error .= "In-portal's stylesheets directory must be writable (".$pathtoroot."kernel/stylesheets/)."; + //die(); + } + + if(!is_writable($pathtoroot."kernel/user_files/")) + { + if ($general_error != '') { + $general_error .= '<br /><br />'; + } + $general_error .= "In-portal's CMS images directory must be writable (".$pathtoroot."kernel/user_files/)."; + //die(); + } + + if(!is_writable($pathtoroot."kernel/cache/")) + { + if ($general_error != '') { + $general_error .= '<br /><br />'; + } + $general_error .= "In-portal's templates cache directory must be writable (".$pathtoroot."kernel/cache/)."; + //die(); + } + if($installed) - { - $state="reinstall"; + { + $state="reinstall"; } else { $state="dbinfo"; } } + if($state=="reinstall_process") { + $login_err_mesg = ''; // always init vars before use + if( !isset($g_License) ) $g_License = ''; $lic = base64_decode($g_License); - if(strlen($lic)) - { - inst_ParseLicense($lic); - $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); - } + if(strlen($lic)) + { + a83570933e44bc66b31dd7127cf3f23a($lic); + $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); + } - $LoggedIn = FALSE; - if($_POST["UserName"]=="root") - { - $ado = inst_GetADODBConnection(); - $sql = "SELECT * FROM ".$g_TablePrefix."ConfigurationValues WHERE VariableName='RootPass'"; - - $rs = $ado->Execute($sql); - if($rs && !$rs->EOF) - { - $RootPass = $rs->fields["VariableValue"]; - - if(strlen($RootPass)>0) - $LoggedIn = ($RootPass==md5($_POST["UserPass"])); - } - } - else - { - $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['UserName'])."&password=".md5($_POST['UserPass'])."&domain=".$_SERVER['SERVER_NAME'], "r"); + $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) { + if (ConvertVersion($g_InPortal) >= ConvertVersion("1.3.0")) { + $LoggedIn = ($RootPass==md5(md5($_POST["UserPass"]).'b38')); + } + else { + $LoggedIn = ($RootPass==md5($_POST["UserPass"])); + } + } + } + else { + $login_err_mesg = 'Invalid username or password'; + } + } + else + { + $act = ''; + if (ConvertVersion($g_InPortal) >= ConvertVersion("1.0.5")) { + $act = 'check'; + } + $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['UserName'])."&password=".md5($_POST['UserPass'])."&action=$act&license_code=".base64_encode($g_LicenseCode)."&version=".GetMaxPortalVersion($pathtoroot.$admin)."&domain=".base64_encode($_SERVER['HTTP_HOST']), "r"); if (!$rfile) { - $LoggedIn = false; + $login_err_mesg = "Unable to connect to the Intechnic server!"; + $LoggedIn = false; } else { $rcontents = ''; @@ -316,233 +358,385 @@ $rcontents .= $line; } @fclose($rfile); - + if (substr($rcontents, 0, 5) == 'Error') { - $LoggedIn = false; + $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 = "Invalid Username or Password - Try Again"; - } + //$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); + + // removing other tables + $tables = $ado->MetaTables(); + + foreach($tables as $tab_name) { + if (stristr($tab_name, $g_TablePrefix."ses_")) { + $sql = "DROP TABLE IF EXISTS $tab_name"; + $ado->Execute($sql); + } + } + + /* 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; + case 7: + $install_type = 9; + $state = "fix_paths"; + break; + } + } + } + else + { + $state="reinstall"; + $login_error = $login_err_mesg;//"Invalid Username or Password - Try Again"; + } } if ($state == "upgrade") { - $ado = inst_GetADODBConnection(); - + $ado =& inst_GetADODBConnection(); + $Modules = array(); $Texts = array(); - $sql = "SELECT Name, Version FROM ".$g_TablePrefix."Modules"; - $rs = $ado->Execute($sql); - - while ($rs && !$rs->EOF) { - $p = strtolower($rs->fields['Name']); -// $modules .= strtolower($rs->fields['Name']).','; -// $rs->MoveNext(); -// } - -// $mod_arr = explode(",", substr($modules, 0, strlen($modules) - 1)); - -// foreach($mod_arr as $p) -// { - if ($p == 'in-portal') { - $p = ''; - } - - $dir_name = $pathtoroot.$p."/admin/install/upgrades/"; - $dir = @dir($dir_name); - //echo "<pre>"; print_r($dir); echo "</pre>"; - - while ($file = $dir->read()) { - if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) - { - $file = str_replace("inportal_upgrade_v", "", $file); - $file = str_replace(".sql", "", $file); - - if ($file != '') { - $sql = "SELECT count(*) AS count FROM ".$g_TablePrefix."Modules WHERE Name = '".$rs->fields['Name']."' AND Version = '$file'"; - $rs1 = $ado->Execute($sql); - - if ($rs1->fields['count'] == 0) { -// $sql = "SELECT Version FROM ".$g_TablePrefix."Modules WHERE Name = '".$p."'"; -// $rs2 = $ado->Execute($sql); - $Texts[] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")"; - $Modules[] = $rs->fields['Name']; - } - } - } - } - $rs->MoveNext(); + if (ConvertVersion(GetMaxPortalVersion($pathtoroot.$admin)) >= ConvertVersion("1.0.5") && ($g_LicenseCode == '' && $g_License != '')) { + $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!"; } - - $include_file = "install/upgrade.php"; + else { + $sql = "SELECT Name, Version, Path FROM ".$g_TablePrefix."Modules ORDER BY LoadOrder asc"; + + $rs = $ado->Execute($sql); + + $i = 0; + while ($rs && !$rs->EOF) { + $p = $rs->fields['Path']; + + if ($rs->fields['Name'] == 'In-Portal') { + $p = ''; + } + + $dir_name = $pathtoroot.$p."admin";///install/upgrades/"; + + if($rs->fields['Version'] != $newver = GetMaxPortalVersion($dir_name)) + { + +//////////////////// + + $mod_path = $rs->fields['Path']; + $current_version = $rs->fields['Version']; + if ($rs->fields['Name'] == 'In-Portal') $mod_path = ''; + + $dir_name = $pathtoroot.$mod_path."/admin/install/upgrades/"; + $dir = @dir($dir_name); + + if (!$dir) { + $rs->MoveNext(); + continue; + } + + $upgrades_arr = Array(); + + $new_version = ''; + while ($file = $dir->read()) { + if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) { + if (strstr($file, 'inportal_check_v')) { + $upgrades_arr[] = $file; + } + } + } + + usort($upgrades_arr, "VersionSort"); + + $result=0; + $failCheck=1; + $stopCheck=2; + $CheckErrors = Array(); + + foreach($upgrades_arr as $file) + { + $file_tmp = str_replace("inportal_check_v", "", $file); + $file_tmp = str_replace(".php", "", $file_tmp); + + if (ConvertVersion($file_tmp) > ConvertVersion($current_version)) { + $filename = $pathtoroot.$mod_path."/admin/install/upgrades/$file"; + if(file_exists($filename)) + { + include($filename); + if( $result & 2 ) break; + } + } + } + +//////////////////// + + $Modules[] = Array('module'=>$rs->fields['Name'],'curver'=>$rs->fields['Version'],'newver'=>$newver,'error'=>$result!='pass'); +// $Texts[] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".GetMaxPortalVersion($dir_name).")"; + } + + /*$dir = @dir($dir_name); + + while ($file = $dir->read()) { + if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) + { + if (strstr($file, 'inportal_upgrade_v')) { + $file = str_replace("inportal_upgrade_v", "", $file); + $file = str_replace(".sql", "", $file); + + //$sql = "SELECT count(*) AS count FROM ".$g_TablePrefix."Modules WHERE Name = '".$rs->fields['Name']."' AND Version = '$file'"; + //$rs1 = $ado->Execute($sql); + + if ($rs1->fields['count'] == 0 && ConvertVersion($file) > ConvertVersion($rs->fields['Version'])) { + if ($Modules[$i-1] == $rs->fields['Name']) { + $Texts[$i-1] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")"; + $i--; + } + else { + $Texts[$i] = $rs->fields['Name']." (".$rs->fields['Version']." ".prompt_language("la_to")." ".$file.")"; + $Modules[$i] = $rs->fields['Name']; + } + + $i++; + } + } + } + }*/ + + $rs->MoveNext(); + } + + $sql = 'DELETE FROM '.$g_TablePrefix.'Cache WHERE VarName IN ("config_files","configs_parsed","sections_parsed")'; + $ado->Execute($sql); + + $include_file = $pathtoroot.$admin."/install/upgrade.php"; + } } if ($state == "upgrade_process") { - + // K4 applition is now always available during upgrade process + if (!defined('FULL_PATH')) { + define('FULL_PATH', realpath(dirname(__FILE__).'/..')); + } + + include_once(FULL_PATH.'/core/kernel/startup.php'); + $application =& kApplication::Instance(); + $application->Init(); + + // force rereading of configs + $unit_config_reader =& $application->recallObject('kUnitConfigReader'); + $unit_config_reader->scanModules(MODULES_PATH); + + $ado =& inst_GetADODBConnection(); $mod_arr = $_POST['modules']; - + + $mod_str = ''; + foreach ($mod_arr as $tmp_mod) { + $mod_str .= "'$tmp_mod',"; + } + + $mod_str = substr($mod_str, 0, strlen($mod_str) - 1); + + $sql = "SELECT Name FROM ".$g_TablePrefix."Modules WHERE Name IN ($mod_str) ORDER BY LoadOrder"; + $rs = $ado->Execute($sql); + + $mod_arr = array(); + while ($rs && !$rs->EOF) { + $mod_arr[] = $rs->fields['Name']; + $rs->MoveNext(); + } + foreach($mod_arr as $p) { - $mod_name = strtolower($p); - + $mod_name = strtolower($p); + + $sql = "SELECT Version, Path FROM ".$g_TablePrefix."Modules WHERE Name = '$p'"; + $rs = $ado->Execute($sql); + + $current_version = $rs->fields['Version']; + if ($mod_name == 'in-portal') { - $mod_name = ''; + $mod_path = ''; } - - $dir_name = $pathtoroot.$mod_name."/admin/install/upgrades/"; - $dir = @dir($dir_name); - + else { + $mod_path = $rs->fields['Path']; + } + + $dir_name = $pathtoroot.$mod_path."/admin/install/upgrades/"; + $dir = @dir($dir_name); + + $upgrades_arr = Array(); + $new_version = ''; - $tmp1 = 0; - $tmp2 = 0; while ($file = $dir->read()) { - if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) - { - $file = str_replace("inportal_upgrade_v", "", $file); - $file = str_replace(".sql", "", $file); - - if ($file != '') { - $tmp1 = str_replace(".", "", $file); - if ($tmp1 > $tmp2) { - $new_version = $file; - } + if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) { + if (strstr($file, 'inportal_upgrade_v')) { + $upgrades_arr[] = $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(); - } - } - } + + usort($upgrades_arr, "VersionSort"); + + foreach($upgrades_arr as $file) + { + preg_match('/inportal_upgrade_v(.*).(php|sql)$/', $file, $rets); + $tmp_version = $rets[1]; + $tmp_extension = $rets[2]; + + if (ConvertVersion($tmp_version) > ConvertVersion($current_version) ) + { + $filename = $pathtoroot.$mod_path."/admin/install/upgrades/$file"; + //echo "Running: $filename<br>"; + + // SQL is processed FIRST (before corresponding PHP according to the sorting order in VersionSort() + if( file_exists($filename) ) + { + if($tmp_extension == 'sql') + { + RunSQLFile($ado, $filename); + } + else + { + include_once $filename; + } + } + } } + + set_ini_value("Module Versions", $p, GetMaxPortalVersion($pathtoroot.$mod_path."/admin/")); + save_values(); } - + + // compile stylesheets: begin + define('FULL_PATH', realpath(dirname(__FILE__).'/..')); + include_once(FULL_PATH.'/core/kernel/startup.php'); + $application =& kApplication::Instance(); + $application->Init(); + +// $objThemes->CreateMissingThemes(false); + $application->HandleEvent($theme_event, 'adm:OnRebuildThemes'); + + $css_hash = $application->Conn->GetCol('SELECT LOWER(Name) AS Name, StylesheetId FROM '.TABLE_PREFIX.'Stylesheets', 'StylesheetId'); + + $css_table = $application->getUnitOption('css','TableName'); + $css_idfield = $application->getUnitOption('css','IDField'); + + $theme_table = $application->getUnitOption('theme', 'TableName'); + $theme_idfield = $application->getUnitOption('theme', 'IDField'); + + $theme_update_sql = 'UPDATE '.$theme_table.' SET '.$css_idfield.' = %s WHERE LOWER(Name) = %s'; + foreach($css_hash as $stylesheet_id => $theme_name) + { + $css_item =& $application->recallObject('css', null, Array('skip_autoload' => true)); + $css_item->Load($stylesheet_id); + $css_item->Compile(); + $application->Conn->Query( sprintf($theme_update_sql, $stylesheet_id, $application->Conn->qstr( getArrayValue($css_hash,$stylesheet_id) ) ) ); + } + + // do redirect, because upgrade scripts can eat a lot or memory used for language pack upgrade operation + $application->Redirect('install', Array('state' => 'languagepack_upgrade'), '', 'install.php'); + // compile stylesheets: end + + $state = 'languagepack_upgrade'; +} + +// upgrade language pack +if($state=='languagepack_upgrade') +{ + $state = 'lang_install_init'; + if( is_object($application) ) $application->SetVar('lang', Array('english.lang') ); + $force_finish = true; +} + +if ($state == 'fix_paths') { + $ado = inst_GetADODBConnection(); + $sql = "SELECT * FROM ".$g_TablePrefix."ConfigurationValues WHERE VariableName = 'Site_Name' OR VariableName LIKE '%Path%'"; + $path_rs = $ado->Execute($sql); + $include_file = $pathtoroot.$admin."/install/fix_paths.php"; +} + +if ($state == 'fix_paths_process') { + $ado = inst_GetADODBConnection(); + //$state = 'fix_paths'; + //$include_file = $pathtoroot.$admin."/install/fix_paths.php"; + foreach($_POST["values"] as $key => $value) { + $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '".$value."' WHERE VariableName = '".$key."'"; + $ado->Execute($sql); + } + $state = "finish"; - $include_file = "install/install_finish.php"; } if($state=="db_reconfig_save") { - $ini_vars = parse_ini_file($ini_file,TRUE); + $ini_vars = inst_parse_portal_ini($ini_file,TRUE); foreach($ini_vars as $secname => $section) { foreach($section as $key => $value) { - $key = "g_".str_replace("-", "", $key); + $key = "g_".str_replace("-", "", $key); global $$key; $$key = $value; } } unset($ado); - $ado = inst_GetADODBConnection(); - if($ado->ErrorNo()!=0) - { - $db_error = "Connection Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg(); - $state = "db_reconfig"; - - } - else - { - if(!TableExists($ado,"ConfigurationAdmin,Category,Permissions")) - { - $state="db_reconfig"; - $db_error = "An In-Portal Database was not found at this location"; - } - else { - 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(); - - $state = "finish"; - $include_file = "install/install_finish.php"; - } - } + $ado = VerifyDB('db_reconfig', 'finish', 'SaveDBConfig', true); } if($state=="db_reconfig") { - $include_file = "install/db_reconfig.php"; + $include_file = $pathtoroot.$admin."/install/db_reconfig.php"; } if($state=="restore_file") @@ -553,26 +747,26 @@ $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(); + $ado =& inst_GetADODBConnection(); - $show_warning = false; - + $show_warning = false; + if (!$_POST['warning_ok']) { // Here we comapre versions between backup and config $file_contents = file_get_contents($backupfile); - + $file_tmp_cont = explode("#------------------------------------------", $file_contents); $tmp_vers = $file_tmp_cont[0]; - - $vers_arr = explode(";", $tmp_vers); - $ini_values = parse_ini_file($ini_file); - + + $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)) { @@ -584,26 +778,26 @@ } //$show_warning = true; } - + if (!$show_warning) { - $filename = $pathtoroot.$admin.$path_char.'install'.$path_char.'inportal_remove.sql'; - RunSchemaFile($ado,$filename); + $filename = $pathtoroot.$admin.$path_char.'install'.$path_char.'inportal_remove.sql'; + RunSchemaFile($ado,$filename); $state="restore_run"; } else { $state = "warning"; - $include_file = "install/warning.php"; + $include_file = $pathtoroot.$admin."/install/warning.php"; } } else { if ($_POST['backupdate'] != '') { - $include_file = "install/restore_select.php"; - $restore_error = "$backupfile not found or could not be read"; + $include_file = $pathtoroot.$admin."/install/restore_select.php"; + $restore_error = "$backupfile not found or could not be read"; } else { - $include_file = "install/restore_select.php"; - $restore_error = "No backup selected!!!"; - } + $include_file = $pathtoroot.$admin."/install/restore_select.php"; + $restore_error = "No backup selected!!!"; + } } } //echo $restore_error; @@ -612,17 +806,17 @@ if($state=="restore_select") { if( isset($_POST['backupdir']) ) $filepath = stripslashes($_POST['backupdir']); - $include_file = "install/restore_select.php"; + $include_file = $pathtoroot.$admin."/install/restore_select.php"; } if($state=="restore_run") { - $ado = inst_GetADODBConnection(); + $ado =& inst_GetADODBConnection(); $FileOffset = (int)$_GET["Offset"]; if(!strlen($backupfile)) $backupfile = SuperStrip($_GET['File'], true); - - $include_file = "install/restore_run.php"; + + $include_file = $pathtoroot.$admin."/install/restore_run.php"; } if($state=="db_config_save") @@ -632,58 +826,46 @@ 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"]); + set_ini_value("Database","TablePrefix",$_POST["TablePrefix"]); save_values(); - $ini_vars = parse_ini_file($ini_file,TRUE); + $ini_vars = inst_parse_portal_ini($ini_file,TRUE); foreach($ini_vars as $secname => $section) { foreach($section as $key => $value) { - $key = "g_".str_replace("-", "", $key); + $key = "g_".str_replace("-", "", $key); global $$key; $$key = $value; } } unset($ado); - $ado = inst_GetADODBConnection(); - if($ado->ErrorNo()!=0) - { - $db_error = "Connection Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg(); - $state = "dbinfo"; - - } - else - { - if(TableExists($ado,"ConfigurationAdmin,Category,Permissions")) - { - $state="dbinfo"; - $db_error = "An In-Portal Database already exists at this location"; - } - else - $state = "license"; - } + $ado = VerifyDB('dbinfo', 'license'); } if($state=="dbinfo") { if ($install_type == '') { $install_type = 1; } - $include_file = "install/dbinfo.php"; + $include_file = $pathtoroot.$admin."/install/dbinfo.php"; } if ($state == "download_license") { $ValidLicense = FALSE; - if ($_POST['login'] != '' && $_POST['password'] != '') { + + $lic_login = isset($_POST['login']) ? $_POST['login'] : ''; + $lic_password = isset($_POST['password']) ? $_POST['password'] : ''; + + if ($lic_login != '' && $lic_password != '') { // Here we determine weather login is ok & check available licenses - - $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['login'])."&password=".md5($_POST['password'])."&domain=".$_SERVER['SERVER_NAME'], "r"); + + $rfile = @fopen(GET_LICENSE_URL."?login=".md5($_POST['login'])."&password=".md5($_POST['password'])."&version=".GetMaxPortalVersion($pathtoroot.$admin)."&domain=".base64_encode($_SERVER['HTTP_HOST']), "r"); if (!$rfile) { $get_license_error = "Unable to connect to the Intechnic server! Please try again later!"; $state = "get_license"; - $include_file = "install/get_license.php"; + $include_file = $pathtoroot.$admin."/install/get_license.php"; } else { $rcontents = ''; @@ -692,54 +874,57 @@ $rcontents .= $line; } @fclose($rfile); - + if (substr($rcontents, 0, 5) == 'Error') { $get_license_error = substr($rcontents, 6); $state = "get_license"; - $include_file = "install/get_license.php"; + $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 = "install/download_license.php"; + $include_file = $pathtoroot.$admin."/install/download_license.php"; } else { // Here we get one license - $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $rcontents)); - inst_ParseLicense($data); + $tmp_data = explode('Code==:', $rcontents); + + $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $tmp_data[0])); + a83570933e44bc66b31dd7127cf3f23a($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"; + $license_error="Invalid License File"; } if(!$ValidLicense) { $state="license"; - } - } + } + } } } - + } else if ($_POST['licenses'] == '') { $state = "get_license"; $get_license_error = "Username and / or password not specified!!!"; - $include_file = "install/get_license.php"; + $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'])."&domain=".$_POST['domain'], "r"); + $rfile = @fopen(GET_LICENSE_URL."?license_id=".md5($_POST['licenses'])."&dlog=".md5($_POST['dlog'])."&dpass=".md5($_POST['dpass'])."&version=".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 = "install/get_license.php"; + $include_file = $pathtoroot.$admin."/install/get_license.php"; } else { $rcontents = ''; @@ -748,65 +933,76 @@ $rcontents .= $line; } @fclose($rfile); - + if (substr($rcontents, 0, 5) == 'Error') { $download_license_error = substr($rcontents, 6); $state = "download_license"; - $include_file = "install/download_license.php"; + $include_file = $pathtoroot.$admin."/install/download_license.php"; } else { - $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $rcontents)); - inst_ParseLicense($data); + $tmp_data = explode('Code==:', $rcontents); + + $data = base64_decode(str_replace("In-Portal License File - do not edit!\n", "", $tmp_data[0])); + a83570933e44bc66b31dd7127cf3f23a($data); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); if($ValidLicense) { set_ini_value("Intechnic","License",base64_encode($data)); + // old licensing script doen't return 2nd parameter (licanse code) + if( isset($tmp_data[1]) ) set_ini_value("Intechnic","LicenseCode",$tmp_data[1]); save_values(); $state="domain_select"; } else { - $license_error="Invalid License File"; + $license_error="Invalid License File"; } if(!$ValidLicense) { $state="license"; - } - } + } + } } } } if($state=="license_process") { $ValidLicense = FALSE; - switch($_POST["lic_opt"]) + $tmp_lic_opt = GetVar('lic_opt', true); + switch($tmp_lic_opt) { case 1: /* download from intechnic */ - $include_file = "install/get_license.php"; + $include_file = $pathtoroot.$admin."/install/get_license.php"; $state = "get_license"; //if(!$ValidLicense) //{ // $state="license"; //} break; - case 2: /* upload file */ + case 2: /* upload file */ $file = $_FILES["licfile"]; if(is_array($file)) { move_uploaded_file($file["tmp_name"],$pathtoroot."themes/tmp.lic"); + @chmod($pathtoroot."themes/tmp.lic", 0666); + $fp = @fopen($pathtoroot."themes/tmp.lic","rb"); if($fp) { $lic = fread($fp,filesize($pathtoroot."themes/tmp.lic")); fclose($fp); - } - $data = inst_LoadLicense(FALSE,$pathtoroot."themes/tmp.lic"); + } + + $tmp_data = ae666b1b8279502f4c4b570f133d513e(FALSE,$pathtoroot."themes/tmp.lic"); + $data = $tmp_data[0]; + @unlink($pathtoroot."themes/tmp.lic"); - inst_ParseLicense($data); + a83570933e44bc66b31dd7127cf3f23a($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"; } @@ -822,10 +1018,10 @@ if(strlen($g_License)) { $lic = base64_decode($g_License); - inst_ParseLicense($lic); + a83570933e44bc66b31dd7127cf3f23a($lic); $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); if($ValidLicense) - { + { $state="domain_select"; } else @@ -836,7 +1032,7 @@ } else { - $state="license"; + $state="license"; $license_error="Missing License File"; } if(!$ValidLicense) @@ -845,6 +1041,9 @@ } break; case 4: + //set_ini_value("Intechnic","License",base64_encode("local")); + //set_ini_value("Intechnic","LicenseCode",base64_encode("local")); + //save_values(); $state="domain_select"; break; } @@ -854,72 +1053,73 @@ if($state=="license") { - $include_file = "install/sel_license.php"; + $include_file = $pathtoroot.$admin."/install/sel_license.php"; } if($state=="reinstall") { - $ado = inst_GetADODBConnection(); - + $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); + + $dir = @dir($dir_name); //echo "<pre>"; print_r($dir); echo "</pre>"; - + + if ($dir === false) continue; + while ($file = $dir->read()) { if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) - { - $file = str_replace("inportal_upgrade_v", "", $file); - $file = str_replace(".sql", "", $file); - - if ($file != '') { - if ($p == '') { - $p = 'in-portal'; - } + { + if( preg_match('/inportal_upgrade_v(.*).(php|sql)$/', $file, $rets) ) + { + 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)) { + + if( ConvertVersion($rs->fields['Version']) < ConvertVersion( $rets[1] ) ) + { $show_upgrade = true; } } } - } + } } - - if ($install_type == '') { + + if ( !isset($install_type) || $install_type == '') { $install_type = 2; - } - - $include_file = "install/reinstall.php"; + } + + $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)); + a83570933e44bc66b31dd7127cf3f23a($lic); + $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } if(!$ValidLicense) @@ -932,44 +1132,58 @@ $state = "domain_select"; } else - { + { $state="getuser"; $login_error = "Invalid User Name or Password. If you don't know your username or password, contact Intechnic Support"; } - + //die(); } if($state=="getuser") { - $include_file = "install/login.php"; + $include_file = $pathtoroot.$admin."/install/login.php"; } if($state=="set_domain") { - if(!is_array($i_Keys)) + if( !is_array($i_Keys) || !count($i_Keys) ) { $lic = base64_decode($g_License); if(strlen($lic)) { - inst_ParseLicense($lic); - $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); + a83570933e44bc66b31dd7127cf3f23a($lic); + $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } } + if($_POST["domain"]==1) { $domain = $_SERVER['HTTP_HOST']; - set_ini_value("Intechnic","Domain",$domain); - save_values(); - $state="runsql"; + + if (strstr($domain, $i_Keys[0]['domain']) || de3ec1b7a142cccd0d51f03d24280744($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 != '') { - set_ini_value("Intechnic","Domain",$domain); - save_values(); - $state="runsql"; + if (strstr($domain, $i_Keys[0]['domain']) || de3ec1b7a142cccd0d51f03d24280744($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!'; @@ -985,41 +1199,47 @@ $lic = base64_decode($g_License); if(strlen($lic)) { - inst_ParseLicense($lic); - $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); + a83570933e44bc66b31dd7127cf3f23a($lic); + $ValidLicense = ((strlen($i_User)>0) && (strlen($i_Pswd)>0)); } } - - $include_file = "install/domain.php"; + + $include_file = $pathtoroot.$admin."/install/domain.php"; } if($state=="runsql") -{ - $ado = inst_GetADODBConnection(); +{ + $ado =& inst_GetADODBConnection(); $installed = TableExists($ado,"ConfigurationAdmin,Category,Permissions"); if(!$installed) - { - // create tables + { + // run core install script + K4_RunSQL('/core/install/install_schema.sql'); + K4_RunSQL('/core/install/install_data.sql'); + K4_SetModuleVersion('Core'); + + // run in-portal install script $filename = $pathtoroot.$admin."/install/inportal_schema.sql"; RunSchemaFile($ado,$filename); - - // insert default info $filename = $pathtoroot.$admin."/install/inportal_data.sql"; RunSQLFile($ado,$filename); - + + $sql = 'UPDATE '.$g_TablePrefix.'ConfigurationValues SET VariableValue = %s WHERE VariableName = %s'; + $ado->Execute( sprintf($sql, $ado->qstr('portal@'.$ini_vars['Intechnic']['Domain']), $ado->qstr('Smtp_AdminMailFrom') ) ); + $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"); @@ -1028,23 +1248,23 @@ $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); + $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("_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); + $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."); @@ -1053,26 +1273,22 @@ $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); - + $t->AddAttribute("_nodatatemplate","tpl","Template to include if the nodataexists condition is true","",FALSE); + $objTagList->ParseFile($pathtoroot.'kernel/parser.php'); // insert module tags - + if( is_array($ItemTagFiles) ) foreach($ItemTagFiles as $file) $objTagList->ParseItemFile($pathtoroot.$file); - + $state="RootPass"; } else { - $include_file = "install/install_finish.php"; + $include_file = $pathtoroot.$admin."/install/install_finish.php"; $state="finish"; } } -if ($state == "finish") { - $include_file = "install/install_finish.php"; -} - if($state=="RootSetPass") { $pass = $_POST["RootPass"]; @@ -1086,235 +1302,186 @@ $PassError = "Passwords does not match"; $state = "RootPass"; } - else + else { - $pass = md5($pass); - $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$pass' WHERE VariableName='RootPass' OR VariableName='RootPassVerify'"; - $ado = inst_GetADODBConnection(); + $pass = md5(md5($pass).'b38'); + $sql = ' UPDATE '.$g_TablePrefix.'ConfigurationValues + SET VariableValue = '.$ado->qstr($pass).' + WHERE VariableName = "RootPass";'; + $ado =& inst_GetADODBConnection(); $ado->Execute($sql); $state="modselect"; } } if($state=="RootPass") { - $include_file = "install/rootpass.php"; + $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 = $PhraseTag->attributes["LABEL"]; - $Translation = 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!'; - } + $ado =& inst_GetADODBConnection(); + + if( TableExists($ado, 'Language,Phrase') ) + { + // KERNEL 4 INIT: BEGIN + define('FULL_PATH', realpath(dirname(__FILE__).'/..')); + include_once(FULL_PATH.'/core/kernel/startup.php'); + + $application =& kApplication::Instance(); + $application->Init(); + // KERNEL 4 INIT: END + + $lang_xml =& $application->recallObject('LangXML'); + + if (defined('DBG_FAST_INSTALL') && DBG_FAST_INSTALL) { + $lang_xml->tables['phrases'] = TABLE_PREFIX.'Phrase'; + $lang_xml->tables['emailmessages'] = TABLE_PREFIX.'EmailMessage'; + } + else { + $lang_xml->renameTable('phrases', TABLE_PREFIX.'ImportPhrases'); + $lang_xml->renameTable('emailmessages', TABLE_PREFIX.'ImportEvents'); + } + + $lang_xml->lang_object->TableName = $application->getUnitOption('lang','TableName'); + + $languages = $application->GetVar('lang'); + if($languages) + { + $kernel_db =& $application->GetADODBConnection(); + $modules_table = $application->getUnitOption('mod','TableName'); + + $modules = $kernel_db->GetCol('SELECT Path, Name FROM '.$modules_table, 'Name'); + $modules['In-Portal'] = ''; + + foreach($languages as $lang_file) + { + foreach($modules as $module_name => $module_folder) + { + $lang_path = MODULES_PATH.'/'.$module_folder.'admin/install/langpacks'; + $lang_xml->Parse($lang_path.'/'.$lang_file, '|0|1|2|', ''); + if($force_finish) $lang_xml->lang_object->Update(); + } + } + + if (defined('DBG_FAST_INSTALL') && DBG_FAST_INSTALL) { + $state = 'lang_default'; + } + else { + $state = 'lang_install'; + } + } + else + { + $state = 'lang_select'; + } + + $application->Done(); + } + 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",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']; - } - + define('FORCE_CONFIG_CACHE', 1); + /* do pack install */ + $Offset = (int)$_GET["Offset"]; + $Status = (int)$_GET["Status"]; + + $PhraseTable = $g_TablePrefix."ImportPhrases"; + $EventTable = $g_TablePrefix."ImportEvents"; + + $Total = TableCount($Status == 0 ? $PhraseTable : $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; + } + + $next_step = GetVar('next_step', true); + + 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"; - $include_file = "install/lang_run.php"; - } - else - { - if(!is_object($objMessageList)) - $objMessageList = new clsEmailMessageList(); - - - $Offset = $objMessageList->ReadImportTable($EventTable,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']; - } - $NextUrl = $_SERVER['PHP_SELF']."?Offset=$Offset&Status=$Status&State=lang_install&next_step=$next_step&install_type=$install_type"; - $include_file = "install/lang_run.php"; - } - else - $state="lang_default"; - } + 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,300,$Offset); + + if($Offset > $Total) + { + $next_step = GetVar('next_step', true); + + 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 + { + $db =& GetADODBConnection(); + $prefix = $g_TablePrefix; + $db->Execute('DROP TABLE IF EXISTS '.$PhraseTable); + $db->Execute('DROP TABLE IF EXISTS '.$EventTable); + + 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(); + /*$ado =& inst_GetADODBConnection(); $PhraseTable = GetTablePrefix()."ImportPhrases"; - $EventTable = GetTablePrefix()."ImportEvents"; - $ado->Execute("DROP TABLE $PhraseTable"); - $ado->Execute("DROP TABLE $EventTable"); - + $EventTable = GetTablePrefix()."ImportEvents"; + $ado->Execute("DROP TABLE IF EXISTS $PhraseTable"); + $ado->Execute("DROP TABLE IF EXISTS $EventTable");*/ + $Id = $_POST["lang"]; - + $objLanguages->SetPrimary($Id); - $state="postconfig_1"; + if (defined('DBG_FAST_INSTALL')) { + $state = 'theme_sel'; + } + else { + $state="postconfig_1"; + } } if($state=="lang_default") { $Packs = Array(); $objLanguages->Clear(); - + $objLanguages->LoadAllLanguages(); foreach($objLanguages->Items as $l) { $Packs[$l->Get("LanguageId")] = $l->Get("PackName"); } - $include_file = "install/lang_default.php"; + $include_file = $pathtoroot.$admin."/install/lang_default.php"; } @@ -1324,64 +1491,64 @@ $doms = $_POST["domain"]; if(is_array($doms)) { - $ado = inst_GetADODBConnection(); + $ado =& inst_GetADODBConnection(); require_once $pathtoroot.'kernel/include/tag-class.php'; - if( !is_object($objTagList) ) $objTagList = new clsTagList(); + if( !isset($objTagList) || !is_object($objTagList) ) $objTagList = new clsTagList(); foreach($doms as $p) { - $filename = $pathtoroot.$p."/admin/install.php"; - if(file_exists($filename)) + $filename = $pathtoroot.$p.'/admin/install.php'; + if(file_exists($filename) ) { include($filename); } } - + } - - $sql = "SELECT Name FROM ".GetTablePrefix()."Modules"; + +/* $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); - + $dir = @dir($dir_name); + $new_version = ''; $tmp1 = 0; $tmp2 = 0; while ($file = $dir->read()) { if ($file != "." && $file != ".." && !is_dir($dir_name.$file)) - { + { $file = str_replace("inportal_upgrade_v", "", $file); $file = str_replace(".sql", "", $file); - - if ($file != '') { - $tmp1 = str_replace(".", "", $file); + + if ($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); @@ -1391,19 +1558,13 @@ } } } - + $rs->MoveNext(); - } - + } +*/ $state="lang_select"; } -if($state=="lang_select") -{ - $Packs = GetLanguageList(); - $include_file = "install/lang_select.php"; -} - if($state=="modselect") { /* /admin/install.php */ @@ -1412,11 +1573,11 @@ $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"]; + //set_ini_value("Site","DomainName",$_SERVER["HTTP_HOST"]); + //$g_DomainName= $_SERVER["HTTP_HOST"]; save_values(); - $ado = inst_GetADODBConnection(); + $ado =& inst_GetADODBConnection(); if(substr($sitepath,0,1)!="/") $sitepath="/".$sitepath; if(substr($sitepath,-1)!="/") @@ -1426,40 +1587,64 @@ $ado->Execute($sql); $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$g_Domain' WHERE VariableName='Server_Name'"; $ado->Execute($sql); - $Modules = inst_GetModuleList(); - $include_file = "install/modselect.php"; + $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '".$_SERVER['DOCUMENT_ROOT'].$sitepath."admin/backupdata' WHERE VariableName='Backup_Path'"; + $ado->Execute($sql); + $Modules = a48d819089308a9aeb447e7248b2587f(); + + if (count($Modules) > 0) { + $include_file = $pathtoroot.$admin."/install/modselect.php"; + } + else { + $state = "lang_select"; + $skip_step = true; + } } +if($state=="lang_select") +{ + $Packs = GetLanguageList(); + $include_file = $pathtoroot.$admin."/install/lang_select.php"; +} + if(substr($state,0,10)=="postconfig") { $p = explode("_",$state); $step = $p[1]; - + if ($_POST['Site_Path'] != '') { - //echo "ok<br>"; - $rfile = @fopen(GET_LICENSE_URL."?url=".base64_encode($_SERVER['SERVER_NAME'].$_POST['Site_Path'])."&domain=".md5($_SERVER['SERVER_NAME']), "r"); + $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['HTTP_HOST'].$_POST['Site_Path'])."&modules=".base64_encode($modules_str)."&license_code=".base64_encode($g_LicenseCode)."&version=".GetMaxPortalVersion($pathtoroot.$admin)."&domain=".md5($_SERVER['HTTP_HOST']), "r"); if (!$rfile) { - $get_license_error = "Unable to connect to the Intechnic server! Please try again later!"; - $state = "postconfig_1"; - $include_file = "install/postconfig.php"; + //$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 { + 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]; @@ -1472,32 +1657,32 @@ $title = $titles[$step]; $step++; - + if($step <= count($configs)+1) { - $include_file = "install/postconfig.php"; + $include_file = $pathtoroot.$admin."/install/postconfig.php"; } else - $state = "theme_sel"; + $state = "theme_sel"; } if($state=="theme_sel") { - $objThemes->CreateMissingThemes(); - $include_file = "install/theme_select.php"; + $objThemes->CreateMissingThemes(true); + $include_file = $pathtoroot.$admin."/install/theme_select.php"; } if($state=="theme_set") { - ## get & define Non-Blocking & Blocking versions ## + ## get & define Non-Blocking & Blocking versions ## $blocking_sockets = minimum_php_version("4.3.0")? 0 : 1; - - $ado = inst_GetADODBConnection(); + + $ado =& inst_GetADODBConnection(); $sql = "UPDATE ".$g_TablePrefix."ConfigurationValues SET VariableValue = '$blocking_sockets' WHERE VariableName='SocketBlockingMode'"; $ado->Execute($sql); - ## get & define Non-Blocking & Blocking versions ## + ## get & define Non-Blocking & Blocking versions ## - + $theme_id = $_POST["theme"]; $pathchar="/"; //$objThemes->SetPrimaryTheme($theme_id); @@ -1506,14 +1691,35 @@ $t->Set("PrimaryTheme",1); $t->Update(); $t->VerifyTemplates(); - $include_file = "install/install_finish.php"; + $include_file = $pathtoroot.$admin."/install/install_finish.php"; $state="finish"; } if ($state == "adm_login") { + $ado =& inst_GetADODBConnection(); + $sql = 'UPDATE '.TABLE_PREFIX.'UserSession + SET LastAccessed = 0 + WHERE PortalUserId IN (0,-2)'; + $ado->Execute($sql); + echo "<script>window.location='index.php';</script>"; } +if ($state == "finish") { + $ado =& inst_GetADODBConnection(); + $PhraseTable = $g_TablePrefix."ImportPhrases"; + $EventTable = $g_TablePrefix."ImportEvents"; + $ado->Execute("DROP TABLE IF EXISTS $PhraseTable"); + $ado->Execute("DROP TABLE IF EXISTS $EventTable"); + $ado->Execute('INSERT INTO '.$g_TablePrefix.'Cache (VarName, Data) VALUES (\'ForcePermCacheUpdate\', \'1\')'); + + $include_file = $pathtoroot.$admin."/install/install_finish.php"; +} + +// init variables +$vars = Array('db_error','restore_error','PassError','DomainError','login_error','inst_error'); +foreach($vars as $var_name) ReSetVar($var_name); + switch($state) { case "modselect": @@ -1526,14 +1732,19 @@ $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 .=" <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>"; + $help .="<p>The <i>Fix Paths</i> option should be used when the location of the In-portal files has changed. For example, if you moved them from one folder to another. It will update all settings and ensure the program is operational at the new location.</p>"; break; +case "fix_paths": + $title = "Fix Paths"; + $help = "<p>The <i>Fix Paths</i> option should be used when the location of the In-portal files has changed. For example, if you moved them from one folder to another. It will update all settings and ensure the program is operational at the new location.<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. "; @@ -1544,6 +1755,7 @@ $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>"; + $help.="<p>*Make sure to clean your browser' cache after upgrading In-portal version</p>"; break; case "license": $title = "License Configuration"; @@ -1558,7 +1770,7 @@ $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>"; + $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": @@ -1639,18 +1851,13 @@ break; } -if ($_POST['next_step']) { - $tmp_step = $_POST['next_step']; -} -else if ($_GET['next_step']) { - $tmp_step = $_GET['next_step']; -} +$tmp_step = GetVar('next_step', true); if (!$tmp_step) { $tmp_step = 1; } -if ($got_license == 1) { +if ( isset($got_license) && $got_license == 1) { $tmp_step++; } @@ -1668,7 +1875,7 @@ $title = ''; $help = ''; $filename = $pathtoroot.$admin."/install/inportal_remove.sql"; - RunSQLFile($ado,$filename); + RunSQLFile($ado,$filename); $general_error = 'Unexpected installation error! <br /><br />Installation has been stopped!'; } @@ -1695,15 +1902,20 @@ if ($state == "warning") { $tmp_step--; $next_step = $tmp_step + 1; -} +} + +if ($skip_step) { + $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> + <img src="images/spacer.gif" width="180" height="1" border="0" title=""><br> <span class="admintitle-white">Installation</span> <!--<ol class="install"> <li class="current">Licence Verification @@ -1713,18 +1925,21 @@ <li>Integrity Check </ol> </td>--> - <?php if ($general_error == '') { ?> + <?php + $lic_opt = isset($_POST['lic_opt']) ? $_POST['lic_opt'] : false; + 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 == 2 || $lic_opt == 1) { ?>class="current"<?php } ?>>Select License + <li <?php if ($tmp_step == 3 && $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> + </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 @@ -1735,7 +1950,7 @@ <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> + </ol> <?php } else if ($install_type == 3) { ?> <ol class="install"> <li>License Verification @@ -1747,55 +1962,62 @@ <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> + </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 == 2 && $login_error == '' && $inst_error == '') || $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> + </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 == 2 && $login_error == '' && $inst_error == '') || $lic_opt == 1) { ?>class="current"<?php } ?>>Select License + <li <?php if ($tmp_step == 3 && $lic_opt != 1) { ?>class="current"<?php } ?>>Select Domain <li <?php if ($tmp_step == 4) { ?>class="current"<?php } ?>>Finish - </ol> + </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> + </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> + </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 } else if ($install_type == 9) { ?> + <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 } ?>>Fix Paths <li <?php if ($tmp_step == 3) { ?>class="current"<?php } ?>>Finish - </ol> - <?php } ?> + </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> + <td class="subsectiontitle" style="border-bottom: 1px solid #000000; background-color:#999"><?php if( isset($title) ) echo $title;?></td> </tr> <tr> - <td class="text"><?php echo $help;?></td> + <td class="text"><?php if( isset($help) ) echo $help;?></td> </tr> </table> </td> @@ -1807,11 +2029,11 @@ </table> </td> </tr> - + <tr> <td id="footer"> - Powered by In-portal © 1997-2004, Intechnic Corporation. All rights reserved. - <br><img src="images/spacer.gif" width="1" height="10" alt=""> + Powered by In-portal © 1997-2007, Intechnic Corporation. All rights reserved. + <br><img src="images/spacer.gif" width="1" height="10" title=""> </td> </tr> </table>