Beispiel #1
0
	/**
	* 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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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();
	}
Beispiel #2
0
	/**
	 * 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;
	}