/** * ShowStep_0 * This works out which upgrades are going to need to run, sets session variables and sets up javascript functionality to process the actions. * * @return Void Prints the page out, doesn't return it. */ function ShowStep_0() { $this->PrintHeader(); $api = $this->GetApi('Settings'); $current_db_version = $api->GetDatabaseVersion(); require_once(SENDSTUDIO_API_DIRECTORY . '/upgrade.php'); $upgrade_api = new Upgrade_API(); $upgrades_to_run = $upgrade_api->GetUpgradesToRun($current_db_version, SENDSTUDIO_DATABASE_VERSION); IEM::sessionSet('UpgradesToRun', $upgrades_to_run['upgrades']); $upgrades_done = array(); IEM::sessionSet('DatabaseUpgradesCompleted', $upgrades_done); $upgrades_failed = array(); IEM::sessionSet('DatabaseUpgradesFailed', $upgrades_failed); IEM::sessionSet('TotalSteps', $upgrades_to_run['number_to_run']); IEM::sessionSet('StepNumber', 1); IEM::sessionRemove('SendServerDetails'); $previous_version = 'NX1.0'; if (isset($upgrade_api->versions[$current_db_version])) { $previous_version = $upgrade_api->versions[$current_db_version]; } IEM::sessionSet('PreviousVersion', $previous_version); IEM::sessionSet('PreviousDBVersion', $current_db_version); ?> <br /><br /><br /><br /> <table style="margin:auto;"><tr><td style="border:solid 2px #DDD; padding:20px; background-color:#FFF; width:450px;"> <table> <tr> <td class="Heading1"> <img src="images/logo.jpg" /> </td> </tr> <tr> <td style="padding:10px 0px 5px 0px"> <div style="display: "> <strong><?php echo GetLang('Upgrade_Header'); ?></strong> <p><?php echo sprintf(GetLang('Upgrade_Introduction'), $previous_version, GetLang('SENDSTUDIO_VERSION')); ?></p> <p><?php echo GetLang('Upgrade_Introduction_Part2'); ?></p> <p> <label for="sendServerDetails"><input type="checkbox" name="sendServerDetails" id="sendServerDetails" value="1" checked="checked" style="vertical-align: middle;" /> <?php echo GetLang('Upgrade_SendAnonymous_Stats'); ?></label> <br /> <a href="javascript:void(0)" onclick="alert('<?php echo GetLang('Upgrade_SendAnonymous_Stats_Alert'); ?>');" style="color:gray"><?php echo GetLang('Upgrade_SendAnonymous_Stats_What'); ?></a> </p> <input type="button" value="<?php echo GetLang('Upgrade_Button_Start'); ?>" onclick="RunUpgrade()" class="FormButton_wide" /> </div> </td> </tr> </table> </td></tr></table> <script> function RunUpgrade() { var urlAppend = ''; if($('#sendServerDetails:checked').val()) { urlAppend = '&sendServerDetails=1'; } x = 'index.php?Page=UpgradeNX'+urlAppend+'&Step=1&keepThis=true&TB_iframe=true&height=240&width=400&modal=true&random='+new Date().getTime(); tb_show('', x, ''); } </script> <?php $this->PrintFooter(); }
/** * UpgradeDatabase * @return Void Returns nothing */ function UpgradeDatabase() { $disabled_functions = explode(',', str_replace(' ', '', SENDSTUDIO_DISABLED_FUNCTIONS)); if (!SENDSTUDIO_SAFE_MODE && !in_array('set_time_limit', $disabled_functions)) { set_time_limit(0); } define('SENDSTUDIO_DATABASE_TYPE', 'mysql'); define('SENDSTUDIO_DATABASE_HOST', $GLOBALS['DBHOST']); define('SENDSTUDIO_DATABASE_USER', $GLOBALS['DBUSER']); define('SENDSTUDIO_DATABASE_PASS', $GLOBALS['DBPASS']); define('SENDSTUDIO_DATABASE_NAME', $GLOBALS['DBNAME']); define('SENDSTUDIO_TABLEPREFIX', $GLOBALS['TABLEPREFIX']); if (!defined('SENDSTUDIO_DEFAULTCHARSET')) { define('SENDSTUDIO_DEFAULTCHARSET', $this->default_charset); } if (!class_exists(SENDSTUDIO_DATABASE_TYPE . 'Db', false)) { require_once(IEM_PATH . '/ext/database/' . SENDSTUDIO_DATABASE_TYPE . '.php'); } $db = new MySQLDb(); $connection = $db->Connect(SENDSTUDIO_DATABASE_HOST, SENDSTUDIO_DATABASE_USER, SENDSTUDIO_DATABASE_PASS, SENDSTUDIO_DATABASE_NAME); $GLOBALS['SendStudio']['Database'] = &$db; require_once(SENDSTUDIO_API_DIRECTORY . '/upgrade.php'); $upgrade_api = new Upgrade_API(); $upgrades_done = IEM::sessionGet('DatabaseUpgradesCompleted'); if (!$upgrades_done) { $upgrades_done = array(); IEM::sessionSet('DatabaseUpgradesCompleted', $upgrades_done); $upgrades_failed = array(); IEM::sessionSet('DatabaseUpgradesFailed', $upgrades_failed); $upgrades_to_run = $upgrade_api->GetUpgradesToRun('2004', SENDSTUDIO_DATABASE_VERSION); IEM::sessionSet('UpgradesToRun', $upgrades_to_run['upgrades']); IEM::sessionSet('UpgradeCount', $upgrades_to_run['number_to_run']); } $upgrades_failed = IEM::sessionGet('DatabaseUpgradesFailed'); $server_timeoffset = date('O'); $offset_direction = $server_timeoffset{0}; $offset_hours = $server_timeoffset{1} . $server_timeoffset{2}; $offset_minutes = $server_timeoffset{3} . $server_timeoffset{4}; $offset_query = "-(" . $offset_direction . (60 * 60) * (($offset_hours . $offset_minutes) / 100) . ")"; $upgrade_api->Set('offset_query', $offset_query); $running_upgrade = $upgrade_api->GetNextUpgrade(); if (!is_null($running_upgrade)) { // ----- Upgrade message $upgradeMessage = ''; $statusList = IEM::sessionGet('DatabaseUpgradeStatusList'); if (isset($statusList[$running_upgrade])) { $statusQuery = $statusList[$running_upgrade]; $upgradeMessage = " ({$statusQuery['Processed']}/{$statusQuery['Total']})"; } // ----- $totalUpgradeCount = IEM::sessionGet('UpgradeCount'); // Total queries processed $totalProcessed = count($upgrades_done); // Print message before update $percentProcessed = ceil(($totalProcessed / $totalUpgradeCount)*100); echo "<script>\n"; echo sprintf("self.parent.UpdateStatusReport('%s');", "Queries processed: {$totalProcessed}/{$totalUpgradeCount}"); echo sprintf("self.parent.UpdateStatus('%s', %d);", addcslashes("Executing query '{$running_upgrade}' {$upgradeMessage}", "'\n\r"), $percentProcessed); echo "</script>\n"; flush(); $upgrade_result = $upgrade_api->RunUpgrade($running_upgrade); $percentProcessed = ceil(($totalProcessed / $totalUpgradeCount)*100); echo "<script>\n"; echo sprintf("self.parent.UpdateStatusReport('%s');", "Queries processed: {$totalProcessed}/{$totalUpgradeCount}"); echo sprintf("self.parent.UpdateStatus('%s', %d);", addcslashes("Query '{$running_upgrade}' {$upgradeMessage} finished running", "'\n\r"), $percentProcessed); echo "</script>\n"; flush(); if ($upgrade_result === true || $upgrade_result === false) { $upgrades_done[] = $running_upgrade; IEM::sessionSet('DatabaseUpgradesCompleted', $upgrades_done); $upgrades_todo = IEM::sessionGet('UpgradesToRun', array()); $version = array_keys($upgrades_todo); do { if (empty($version)) { $upgrades_todo = array(); break; } if (empty($upgrades_todo[$version[0]])) { unset($upgrades_todo[$version[0]]); array_shift($version); continue; } array_shift($upgrades_todo[$version[0]]); break; } while(true); IEM::sessionSet('UpgradesToRun', $upgrades_todo); } if (!$upgrade_result) { $upgrades_failed[] = $upgrade_api->Get('error'); IEM::sessionSet('DatabaseUpgradesFailed', $upgrades_failed); } ?> <script> setTimeout('window.location="index.php?Page=Upgrade&Action=UpgradeDatabase"', 1); </script> <?php return; } ?> <script> self.parent.parent.location = 'index.php?Page=Upgrade&Step=4'; </script> <?php return; }