Exemplo n.º 1
0
	/**
	 * ShowStep_4
	 * @return Void Returns nothing
	 */
	function ShowStep_4()
	{
		$upgrade_errors = IEM::sessionGet('DatabaseUpgradesFailed');

		if (!empty($upgrade_errors)) {
			?>
				<table cellspacing="0" cellpadding="0" width="95%" align="center">
					<tr>
						<td class="Heading1">Step 3: Upgrade Errors</TD>
					</tr>
					<tr>
						<td class="Text">
							<br/>There were problems upgrading your database.<br/><br/>
							<textarea cols="100" rows="5" onfocus="this.select();"><?php
								foreach ($upgrade_errors as $p => $upgrade_problem) {
									echo $upgrade_problem . "\n";
								}
							?></textarea>
							<br/>
						</TD>
					</TR>
				</TABLE>
			<?php
			return;
		}

		$backup_file = IEM::sessionGet('BackupFile');
		if ($backup_file) {
			$backup_files = list_files(TEMP_DIRECTORY);
			foreach ($backup_files as $p => $backupfile) {
				if (strpos($backupfile, 'system_backup.'.date('m-d-Y').'.txt') !== false) {
					unlink(TEMP_DIRECTORY . '/' . $backupfile);
				}
			}
		}

		require_once(SENDSTUDIO_API_DIRECTORY . '/settings.php');

		$settings_api = new Settings_API(false);

		$settings = array();
		// hardcode this in, for this upgrade it's always going to be mysql.
		$settings['DATABASE_TYPE'] = 'mysql';
		$settings['DATABASE_USER'] = $GLOBALS['DBUSER'];
		$settings['DATABASE_PASS'] = $GLOBALS['DBPASS'];
		$settings['DATABASE_HOST'] = $GLOBALS['DBHOST'];
		$settings['DATABASE_NAME'] = $GLOBALS['DBNAME'];
		$settings['TABLEPREFIX'] = $GLOBALS['TABLEPREFIX'];

		$settings['LICENSEKEY'] = $GLOBALS['LicenseKey'];

		$settings['APPLICATION_URL'] = substr($GLOBALS['ROOTURL'], 0, -1);

		$settings['CRON_ENABLED'] = $GLOBALS['ServerSending'];

		$timezone = date('O');
		if ($timezone == '+0000') {
			$timezone = 'GMT';
		} else {
			$minutes = substr($timezone, -2);
			$timezone = 'GMT' . substr_replace($timezone, ':' . $minutes, -2);
		}

		$settings['SERVERTIMEZONE'] = str_replace(array('GMT-0', 'GMT+0'), array('GMT-', 'GMT+'), $timezone);

		$settings['DEFAULTCHARSET'] = $this->default_charset;

		$empty_settings = array('SMTP_SERVER', 'SMTP_USERNAME', 'SMTP_PASSWORD', 'HTMLFOOTER', 'TEXTFOOTER', 'EMAIL_ADDRESS', 'BOUNCE_ADDRESS', 'BOUNCE_SERVER', 'BOUNCE_USERNAME', 'BOUNCE_PASSWORD', 'BOUNCE_EXTRASETTINGS');
		foreach ($empty_settings as $k => $set) {
			$settings[$set] = '';
		}

		$zero_settings = array('SMTP_PORT', 'FORCE_UNSUBLINK', 'MAXHOURLYRATE', 'MAXOVERSIZE', 'IPTRACKING', 'BOUNCE_IMAP');
		foreach ($zero_settings as $k => $set) {
			$settings[$set] = '0';
		}

		$settings['MAX_IMAGEWIDTH'] = 700;
		$settings['MAX_IMAGEHEIGHT'] = 400;

		$settings_api->Set('Settings', $settings);

		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('MySQLDb', false)) {
			require_once(IEM_PATH . '/ext/database/mysql.php');
		}
		$db_type = 'MySQLDb';
		$db = new $db_type();

		$connection = $db->Connect(SENDSTUDIO_DATABASE_HOST, SENDSTUDIO_DATABASE_USER, SENDSTUDIO_DATABASE_PASS, SENDSTUDIO_DATABASE_NAME);

		$settings_api->Db = &$db;

		$settings_api->Save();

		?>
			<table cellspacing="0" cellpadding="0" width="95%" align="center">
				<tr>
					<td class="Heading1">Step 4: Upgrade Complete</TD>
				</tr>
				<TR>
					<TD class="Text"><br/><br/></TD>
				</TR>
				<TR>
					<TD>
						<table class="Panel" border="0" cellpadding="2" cellspacing="0" width="100%">
							<tr class="Heading3">
								<td colspan="2">
									&nbsp;&nbsp;Important Notes. Please Read.
								</td>
							</tr>
							<tr>
								<td>
									&nbsp;
								</td>
								<td style="padding:10px">
									<br/>The upgrade wizard has been completed successfully. You can log in <a href="<?php echo $_SERVER['PHP_SELF']; ?>">here</a> - your login details have not changed.<br>It's very important that you read the notes below, so please do that now:<br/><br/>
									<ul>
										<li>The default character set is set to 'ISO-8859-1'. If you need to change this, you will need to edit your admin/includes/config.php file to change it to 'UTF-8'.</li>
										<li>Sendstudio now supports timezones. Please check the settings page and confirm the server timezone. Please also check the timezone for each user and adjust it accordingly, they have all been set to GMT.</li>
										<li>Information (such as the date a person unsubscribed) was not stored, so the upgrade had to "guess" when this happened and set all of that information to today's date.</li>
										<li>Existing autoresponder statistics are not accurate. Information about who was sent which type of autoresponder was previously not recorded. That is, whether a subscriber was sent the html version or the text version.</li>
										<li>Users &amp; settings have a lot of new options.</li>
										<li>Custom fields have been associated with all of a users mailing list. Please check these associations.</li>
										<li>All forms have been set to 'Classic White (Default)', please adjust as necessary.</li>
										<li>You may need to clear your browsers cache to see the new images and buttons.</li>
									</ul>
								</td>
							</tr>
						</table>
					</TD>
				</TR>
			</TABLE>
		<?php
	}
 /**
  * SaveDefaultSettings
  * Saves the default settings into the database.
  * Note that the database and required system settings must be set up before this is called.
  *
  * @return Array The first element is an error code indicating success (0) or failure (> 0). The second element is an error string.
  */
 public function SaveDefaultSettings()
 {
     if (!$this->CheckRequiredFields()) {
         return array(self::SETTINGS_MISSING, 'All required settings must be loaded first.');
     }
     if (!$this->_db) {
         return array(self::DB_MISSING, 'Database connection must be established first.');
     }
     require_once SENDSTUDIO_API_DIRECTORY . '/settings.php';
     $settings_api = new Settings_API(false);
     $settings = $this->_settings;
     $settings['DATABASE_UTF8PATCH'] = '1';
     $settings['SERVERTIMEZONE'] = self::GetTimezone();
     $settings['DEFAULTCHARSET'] = 'UTF-8';
     $settings['SMTP_PORT'] = '25';
     $settings['IPTRACKING'] = '1';
     $settings['MAXHOURLYRATE'] = '0';
     $settings['ALLOW_ATTACHMENTS'] = '1';
     $settings['USEMULTIPLEUNSUBSCRIBE'] = '0';
     $settings['CONTACTCANMODIFYEMAIL'] = '0';
     $settings['FORCE_UNSUBLINK'] = '0';
     $settings['MAXOVERSIZE'] = '0';
     $settings['MAX_IMAGEWIDTH'] = '700';
     $settings['MAX_IMAGEHEIGHT'] = '400';
     $settings['BOUNCE_IMAP'] = '0';
     $settings['ALLOW_EMBEDIMAGES'] = '1';
     $settings['ATTACHMENT_SIZE'] = '2048';
     $settings['CRON_ENABLED'] = '0';
     $settings['CRON_SEND'] = '5';
     $settings['CRON_AUTORESPONDER'] = '10';
     $settings['CRON_BOUNCE'] = '60';
     $settings['EMAILSIZE_WARNING'] = '500';
     $settings['EMAILSIZE_MAXIMUM'] = '2048';
     $settings['RESEND_MAXIMUM'] = '3';
     $settings['CREDIT_INCLUDE_AUTORESPONDERS'] = '1';
     $settings['CREDIT_INCLUDE_TRIGGERS'] = '1';
     $settings['CREDIT_WARNINGS'] = '0';
     $settings_api->Set('Settings', $settings);
     // set the table prefix constant for the API to work
     define('SENDSTUDIO_TABLEPREFIX', $this->_db->TablePrefix);
     $settings_api->Db =& $this->_db;
     $settings_api->Save();
     $username = $_POST['admin_username'];
     $usernameToken = API_USERS::generateUniqueToken($username);
     $password = API_USERS::generatePasswordHash($_POST['admin_password'], $usernameToken);
     // Set the admin user's settings
     $query = 'UPDATE [|PREFIX|]users SET ';
     $query .= " usertimezone='" . $this->_db->Quote($settings['SERVERTIMEZONE']) . "', ";
     $query .= " emailaddress='" . $this->_db->Quote($settings['EMAIL_ADDRESS']) . "', ";
     $query .= " textfooter='" . $this->_db->Quote(GetLang('Default_Global_Text_Footer')) . "', ";
     $query .= " htmlfooter='" . $this->_db->Quote(GetLang('Default_Global_HTML_Footer')) . "', ";
     $query .= " unique_token='" . $this->_db->Quote($usernameToken) . "', ";
     $query .= " username='******', ";
     $query .= " password='******'  ";
     $query .= ' WHERE userid=1';
     $result = $this->_db->Query($query);
     if (!$result) {
         return array(self::DB_QUERY_ERROR, $this->_db->GetErrorMsg());
     }
     return array(self::SUCCESS, null);
 }