read()) { if ($file != "." && $file != ".." && !is_dir($admindirname.$file)) { if (strstr($file, 'inportal_upgrade_v')) { $upgrades_arr[] = $file; } } } usort($upgrades_arr, "VersionSort"); foreach($upgrades_arr as $file) { $file_tmp = str_replace("inportal_upgrade_v", "", $file); $file_tmp = str_replace(".sql", "", $file_tmp); if (ConvertVersion($file_tmp) > ConvertVersion($version)) { $version = $file_tmp; } } return $version; } function ConvertVersion($version) { $parts = explode('.', $version); $bin = ''; foreach ($parts as $part) { $bin .= str_pad(decbin($part), 8, '0', STR_PAD_LEFT); } $dec = bindec($bin); return $dec; } function TableExists($ado, $tables) { global $g_TablePrefix; $t = explode(",",$tables); $i = $ado->MetaTables(); for($x=0;$x\n\n"); foreach($ini_vars as $secname => $section) { fwrite($fp,"[".$secname."]\n"); foreach($section as $key => $value) fwrite($fp,"$key = \"$value\"\n"); fwrite($fp,"\n"); } fclose($fp); //} } function RunSchemaFile($ado,$filename) { if(file_exists($filename)) { $fp = fopen($filename, "r");//open file $sql = fread($fp, filesize($filename)); fclose($fp); if(strlen($sql)) RunSchemaText($ado,$sql); } } function RunSchemaText($ado,$sql) { global $g_TablePrefix; if(strlen($g_TablePrefix)) { $what = "CREATE TABLE "; $replace = "CREATE TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "DROP TABLE "; $replace = "DROP TABLE IF EXISTS ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "INSERT INTO "; $replace = "INSERT INTO ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "UPDATE "; $replace = "UPDATE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "ALTER TABLE "; $replace = "ALTER TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); } $commands = explode("# --------------------------------------------------------",$sql); if(count($commands)>0) { for($i=0;$i0) { $ado->Execute($cmd); if($ado->ErrorNo()!=0) { $db_error = $ado->ErrorMsg()." COMMAND:
$cmd
"; //echo "

$db_error

"; //break; } } } } } function RunSQLText($ado,$allsql) { global $g_TablePrefix; $line = 0; while($line0 && substr($sql,0,1)!="#") { if(strlen($g_TablePrefix)) { $what = "CREATE TABLE "; $replace = "CREATE TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "DELETE FROM "; $replace = "DELETE FROM ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "DROP TABLE "; $replace = "DROP TABLE IF EXISTS ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "DROP TABLE IF EXISTS "; $replace = "DROP TABLE IF EXISTS ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "INSERT INTO "; $replace = "INSERT INTO ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "UPDATE "; $replace = "UPDATE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); $what = "ALTER TABLE "; $replace = "ALTER TABLE ".$g_TablePrefix; $sql = ereg_replace($what, $replace, $sql); } $sql = trim($sql); if(strlen($sql)>0) { $ado->Execute($sql); if($ado->ErrorNo()!=0) { $db_error = $ado->ErrorMsg()." COMMAND:
$sql
"; //echo "

$db_error

"; $error = TRUE; } } } $line++; } } function RunSQLFile($ado,$filename) { if(file_exists($filename)) { $allsql = file($filename); RunSQLText($ado,$allsql); } } function RunRestoreFile($ado,$filename,$FileOffset,$MaxLines) { $size = filesize($filename); if($FileOffset > $size) return -2; $fp = fopen($filename,"r"); if(!$fp) return -1; if($FileOffset>0) { fseek($fp,$FileOffset); } else { $EndOfSQL = FALSE; $sql = ""; while(!feof($fp) && !$EndOfSQL) { $l = fgets($fp,16384); if(substr($l,0,11)=="INSERT INTO") { $EndOfSQL = TRUE; } else { $sql .= $l; $FileOffset = ftell($fp) - strlen($l); } } if(strlen($sql)) { RunSchemaText($ado,$sql); } fseek($fp,$FileOffset); } $LinesRead = 0; $sql = ""; $AllSql = array(); while($LinesRead < $MaxLines && !feof($fp)) { $sql = fgets($fp, 16384); if(strlen($sql)) { $AllSql[] = $sql; $LinesRead++; } } if(!feof($fp)) { $FileOffset = ftell($fp); } else { $FileOffset = $TotalSize; } fclose($fp); if(count($AllSql)>0) RunSQLText($ado,$AllSql); return (int)$FileOffset; } function inst_keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for ($i=0;$i15 && $p[1]<32) $localb=TRUE; } $localname = (strpos($domain,".")==0); if($domain=="localhost" || $domain=="127.0.0.1" || substr($domain,0,7)=="192.168" || substr($domain,0,3)=="10." || $localb || $localname) { return TRUE; } return FALSE; } function inst_ModuleLicensed($name) { global $i_Keys, $objConfig, $g_License, $g_Domain; //$lic = LoadLicense(); $lic = base64_decode($g_License); inst_ParseLicense($lic); //echo "Checking $g_Domain..
\n"; //echo "
";print_r($i_Keys); echo "

"; $modules = array(); if(!inst_IsLocalSite($g_Domain)) { for($x=0;$x\n") { $resave = true; } $ln++; $line = trim($line); $line = eregi_replace(';[.]*','',$line); if(strlen($line) > 0) { //echo $line . " - "; if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) { //echo 'section'; $section = substr($line,1,(strlen($line)-2)); if ($parse_section) { $retval[$section] = array(); } continue; } elseif(eregi('=',$line)) { //echo 'main element'; list($key,$val) = explode(' = ',$line); if (!$parse_section) { $retval[trim($key)] = str_replace('"', '', $val); } else { $retval[$section][trim($key)] = str_replace('"', '', $val); } } //end if //echo '
'; } //end if } //end foreach if ($resave) { $fp = fopen($file, "w"); reset($contents); fwrite($fp,'<'.'?'.'php die() ?'.">\n\n"); foreach($contents as $line) fwrite($fp,"$line"); fclose($fp); } return $retval; } function inst_GetModuleList() { global $rootpath,$pathchar,$admin, $pathtoroot; $path = $pathtoroot; $new = array(); if ($dir = @opendir($path)) { while (($file = readdir($dir)) !== false) { if($file !="." && $file !=".." && substr($file,0,1)!="_") { if(is_dir($path."/".$file)) { $ModuleAdminDir = $path.$file.'/admin/'; $inst_file = $ModuleAdminDir.'install.php'; if( file_exists($inst_file) && file_exists($ModuleAdminDir.'install/inportal_schema.sql') ) { if(inst_ModuleLicensed($file)) { $new[$file] = $inst_file; } } } } } closedir($dir); } return array_keys($new); } function GetDirList ($dirName) { $filedates = array(); $d = dir($dirName); while($entry = $d->read()) { if ($entry != "." && $entry != "..") { if (!is_dir($dirName."/".$entry)) { $filedate[]=$entry; } } } $d->close(); return $filedate; } function GetLanguageList() { global $pathtoroot, $admin; $packs = array(); $dir = $pathtoroot.$admin."/install/langpacks"; $files = GetDirList($dir); if(is_array($files)) { foreach($files as $f) { $p = pathinfo($f); if($p["extension"]=="lang") { $packs[] = $f; } } } return $packs; } function section_header($title, $return_result = false) { $ret = ''. '
 '.$title.''. ''. "". '
'; if( $return_result ) return $ret; else echo $ret; } function &VerifyDB($error_state, $next_state, $success_func = null, $db_must_exist = false) { // perform various check type to database specified // 1. user is allowed to connect to database // 2. user has all types of permissions in database global $state, $db_error; // enshure we use data from post & not from config $GLOBALS['g_DBType'] = $_POST["ServerType"]; $GLOBALS['g_DBHost'] = $_POST["ServerHost"]; $GLOBALS['g_DBName'] = $_POST["ServerDB"]; $GLOBALS['g_DBUser'] = $_POST["ServerUser"]; $GLOBALS['g_DBUserPassword'] = $_POST["ServerPass"]; // connect to database $ado =& inst_GetADODBConnection(); if($ado->ErrorNo() != 0) { // was error while connecting $db_error = "Connection Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg(); $state = $error_state; } elseif( $ado->ErrorNo() == 0 ) { // if connected, then check if all sql statements work $test_result = 1; $sql_tests[] = 'DROP TABLE IF EXISTS test_table'; $sql_tests[] = 'CREATE TABLE test_table(test_col mediumint(6))'; $sql_tests[] = 'INSERT INTO test_table(test_col) VALUES (5)'; $sql_tests[] = 'UPDATE test_table SET test_col = 12'; $sql_tests[] = 'ALTER TABLE test_table ADD COLUMN new_col varchar(10)'; $sql_tests[] = 'SELECT * FROM test_table'; $sql_tests[] = 'DELETE FROM test_table'; $sql_tests[] = 'DROP TABLE IF EXISTS test_table'; foreach($sql_tests as $sql_test) { $ado->Execute($sql_test); if( $ado->ErrorNo()!=0 ) { $test_result = 0; break; } } if($test_result == 1) { // if statements work & connection made, then check table existance $db_exists = TableExists($ado,"ConfigurationAdmin,Category,Permissions"); if($db_exists != $db_must_exist) { $state = $error_state; $db_error = $db_must_exist ? 'An In-Portal Database already exists at this location' : 'An In-Portal Database was not found at this location'; } else { $state = $next_state; if( isset($success_func) ) $success_func(); } } else { // user has insufficient permissions in database specified $db_error = "Permission Error: (".$ado->ErrorNo().") ".$ado->ErrorMsg(); $state = $error_state; } } return $ado; } function SaveDBConfig() { // save new database configuration set_ini_value("Database", "DBType",$_POST["ServerType"]); set_ini_value("Database", "DBHost",$_POST["ServerHost"]); set_ini_value("Database", "DBName",$_POST["ServerDB"]); set_ini_value("Database", "DBUser",$_POST["ServerUser"]); set_ini_value("Database", "DBUserPassword",$_POST["ServerPass"]); set_ini_value("Database","TablePrefix",$_POST["TablePrefix"]); save_values(); $GLOBALS['include_file'] = 'install/install_finish.php'; } function ReSetVar($var) { // define varible if not defined before if( !isset($GLOBALS[$var]) ) $GLOBALS[$var] = ''; } // if globals.php not yet included (1st steps of install), // then define GetVar function if( !function_exists('GetVar') ) { function GetVar($name, $post_priority = false) { if(!$post_priority) // follow gpc_order in php.ini return isset($_REQUEST[$name]) ? $_REQUEST[$name] : false; else // get variable from post 1stly if not found then from get return isset($_POST[$name]) && $_POST[$name] ? $_POST[$name] : ( isset($_GET[$name]) && $_GET[$name] ? $_GET[$name] : false ); } } function RadioChecked($name, $value) { // return " checked" word in case if radio is checked $submit_value = GetVar($name); return $submit_value == $value ? ' checked' : ''; } ?>