Просмотр файла wordpress/wp-content/plugins/wordpress-automatic-upgrade/wordpress-automatic-upgrade.php

Размер файла: 51.37Kb
<?php
/*
Plugin Name: Автоматическое обновление WordPress
Plugin URI: http://techie-buzz.com/
Description: Автоматическое обновление Wordpress позволяет обновить Ваш блог, используя самую свежую версию с сайта mywordpress.ru всего лишь за 5 шагов. Перейдите на страницу <a href="edit.php?page=wordpress-automatic-upgrade/wordpress-automatic-upgrade.php">Автоматическое обновление Wordpress</a> для того, чтобы выполнить процедуру обновления. Спасибо, <a href="http://www.ronalfy.com">Ronald Huereca</a> за то, что заставил работать плагин в автоматизированном режиме.
Version: 0.5
Author: Keith Dsouza
Author URI: http://techie-buzz.com/

Wordpress automatic upgrade upgrades your wordpress installation by doing the following steps.

1. Backs up the files and makes available a link to download it.
2. Backs up the database and makes available a link to download it. 
3. Downloads the latest files from http://wordpress.org/latest.zip and unzips it.
4. Puts the site in maintenance mode.
5. De-activates all active plugins and remembers it.
6. Upgrades wordpress files.
7. Gives you a link that will open in a new window to upgrade installation.
8. Re-activates the plugins.

The plugin can  also can be run in a automated mode where in you do not have to click on any links to go to the next step.

Usage Instructions
-------------------------

Go to Manage -> Automatic Upgrade and either click on the link provided to run or use the automated version link to let the plugin run in a automated way.

Change Log
---------------

@version 0.4
1. Added a prelim check before starting the process to check whether or not we can write files to the server
2. Checks if previous version files were not cleared
3. If we cannot write the files to server asking user for ftp credentials so that we can make the permission changes
4. Fixed bug where task status was not reported on error thus showing a db error to the user
5. Fixed a bug where open_basedir restriction is on for a website hosted as virtual folder

@version 0.5 

1. Fixed bugs where user had a www folder with full write permissions but the public_html folder was not writable.
2. Fixed issue where while writing there were ftp errors while creating backup directory but still plugin said all ready to go
3. Fixed issue where plugins were not activating even if one plugin threw an error.
4. Fixed other issues with html and reporting

Thanks to all who reported the bugs and helped me make this plugin better, if you still see any bugs please email me at [email protected]

Copyright 2007  Keith Dsouza  (email : dsouza.keith at gmail.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/


@define('WPAU_PAGE', 'wordpress-automatic-upgrade/wordpress-automatic-upgrade.php');
@define('WPAU_BACKUP_DIR', 'wpau-backup');
@define('WPAU_FILES_ZIP', 'wpau-files-bak');
@define('WPAU_DB_ZIP', 'wpau-db-backup');
@define('WPAU_LOG_FILE', 'wpau-log-data.txt');
@define('WPAU_PLUGIN_TABLE', 'wpau_active_plugins_info');
@define('WPAU_LOG_TABLE', 'wpau_upgrade_log');
@define('WPAU_PLUGIN', 'wordpress-automatic-upgrade/wordpress-automatic-upgrade.php');

	$serverSoft = $_SERVER['SERVER_SOFTWARE'];
	$isNix = true;
	if(stristr($serverSoft, "win32") !== false) {
		$isNix = false;
	}
	
	if($isNix)
		@define('WPAU_FILEPATH', 'wp-content/plugins/wordpress-automatic-upgrade');
	else
		@define('WPAU_FILEPATH', 'wp-content\plugins\wordpress-automatic-upgrade');
	
	//the logger class
	require_once('wpau_helper.class.php');
	
	
	$wpauDirPath = get_bloginfo('wpurl') . WPAU_FILEPATH;
	$wpauFileDirPath = ABSPATH. WPAU_FILEPATH;
	$wpAbsPath = ABSPATH;
	$wpIncludeDirs = array('wp-admin', 'wp-includes');
	$wpAllowedExt = array('zip');
	$theFuncComplete = false;
	$wpauMessage = '';
	$isAutomated = false;
	
	$task_list = array(
		'files',
		'backupdbopt',
		'backupdb',
		'newversionoption',
		'getlatestfiles',
		'maintmode',
		'de-plugin',
		'upgrade',
		're-plugin',
	);
	

	$task_description = array(
		'Создание резервной копии всех файлов текущей установки WordPress',
		'Настройки для создания резервной копии базы данных',
		'Создание резервной копии базы данных',
		'Настройки для загрузки свежей версии',
		'Скачать / закачать свежие файлы для wordpress',
		'Переход сайта в режим обновления',
		'Деактивация всех плагинов',
		'Обновление всех файлов установки',
		'Повторная активация всех плагинов'
	);
	
	$automated_task_list = array(
		'files',
		'backupdb',
		'getlatestfiles',
		'maintmode',
		'de-plugin',
		'upgrade',
		're-plugin'
	);
	
	$automated_task_description = array(
		'Создание резервной копии всех файлов текущей установки WordPress',
		'Создание резервной копии базы данных',
		'Скачать / закачать свежие файлы для wordpress',
		'Переход сайта в режим обновления',
		'Деактивация всех плагинов',
		'Обновление всех файлов установки',
		'Повторная активация всех плагинов',
		'Очистка обновляемых файлов'
	);
	
	if( isset($_REQUEST['task']) ) {
		$task = $_REQUEST['task'];
	}
	
	if (isset($wpdb)) {
		wpau_init();
	}
	
	
	function wpau_manage_page() {
		//add_menu_page('Automatic Upgrade', 'Automatic Upgrade', 0, 'wordpress-automatic-upgrade/wordpress-automatic-upgrade.php' , 'wp_automatic_upgrade');
		add_submenu_page('edit.php', 'Автоматическое обновление', 'Автоматическое обновление', 2, 'wordpress-automatic-upgrade/wordpress-automatic-upgrade.php', 'wp_automatic_upgrade');
	}
	
	function wp_automatic_upgrade() {
		global $task;
		switch($task) {
			case 'start':
				show_upgrade_start();
				break;
			case 'files':
				wpau_backup_files();
				break;
			case 'backupdbopt':
				wpau_backup_db_options();
				break;
			case 'backupdb':
				wpau_backup_db();
				break;
			case 'newversionoption':
				wpau_show_new_version_forms();
				break;
			case 'getlatestfiles':
				wpau_get_latest_version();
				break;
			case 'maintmode':
				wpau_site_down();
				break;
			case 'de-plugin':
				wpau_deactivate_plugins();
				break;
			case 'upgrade':
				wpau_upgrade_installation();
				break;
			case 'updatedb':
				wpau_update_database();
				break;
			case 're-plugin':
				wpau_reactivate_plugins();
				break;
			case 'cleanup':
				wpau_cleanup();
				break;
			case 'done':
				wpau_show_backup_log();
				break;
			case 'logs':
				wpau_show_log();
				break;
			case 'prelimopts':
				wpau_prelim_opts_and_sanatize();
				break;
			default:
				wpau_run_prelims();
				break;
		}
	}
	
	/** adds the initial task to the database **/
	function wpauPersistNoLog($isUpdate, $showOutput = false, $automated = false) {
		global $isAutomated;
		$isAutomated = $automated;
		wpauPersist($isUpdate, '', false, '', $showOutput);
	}
	
	/** logs the output for a current task **/
	function wpauPersist($isUpdate, $theLog = '', $funcComplete = false, $message = '', $showOutput = true) {
		global $task, $wpdb, $task_list, $automated_task_list, $task_description, $automated_task_description, $isAutomated, $theFuncComplete;
		$datetime = date('Y-m-d H:i:s');
		if($isAutomated) {
			$currentPos = $task - 1;
			$taskname = $automated_task_list[$currentPos];
			$currentTaskDescription = $automated_task_description[$currentPos];
		}
		else {
			$currentPos = array_search($task, $task_list);
			$currentTaskDescription = $task_description[$currentPos];
			$taskname = $task;
		}
		
		if(! $isUpdate) {
			checkEntryAndDelete($task);
			//ok this is the first time the task is called so run a insert on the db
			$wpdb->query('INSERT into '.WPAU_LOG_TABLE.' (task_name, task_status, task_description, task_log, start_date) 
						values (\''.$taskname.'\', 0, \''.$currentTaskDescription.'\' , \'\', \''.$datetime.'\')');
			return;
		}
		else {
			if($theFuncComplete == true)
				$functionStatus = 1;
			else 
				$functionStatus = 0;
				
			$wpdb->query('UPDATE '.WPAU_LOG_TABLE.' set task_status = '.$functionStatus.', task_log = \''.mysql_real_escape_string($theLog).'\', end_date = \''.$datetime.'\' where task_name = \''.mysql_real_escape_string($taskname).'\'');
			if($isAutomated) return $theFuncComplete;
			if($theFuncComplete) {
				getWpauNextPage($task, $message, $showOutput);
			}
			else {
				echo 'Невозможно завершить обновление, попробуйте позже, <a href="?page='.WPAU_PAGE.'&task=logs">нажмите сюда</a> для просмотра лог-файла.';
			}
		}
	}
	
	/** start html **/
	function wpauStartHtml() {
?>
		<div align="left" style="margin-left:30px;"><br /><br />
			<div>
				<strong style="font-size:20px;">Автоматическое обновление Wordpress</strong>
				<p>Производится автоматическое обновление Вашей установки WordPress</p>
				<p><strong><u>ХОД ВЫПОЛНЕНИЯ ЗАДАЧИ</u></strong></p>
<?php
	}
	
	/** end html **/
	function wpauEndHtml() {
?>
			</div>
		</div>
		<div style="clear:both"></div>
<?php
	}
	
	/** if we are re-running the task we need to clear up old logs **/
	function checkEntryAndDelete($task) {
		//sometimes we need to retry tasks so we do it here such that we do not have duplicate entry for same task
		global $wpdb;
		$logs = $wpdb->get_results('SELECT id  from '.WPAU_LOG_TABLE.' where task_name = \''.$task.'\'');
		if(count($logs) > 0) {
			$wpdb->query('DELETE from '.WPAU_LOG_TABLE.' where task_name = \''.$task.'\'');
		}
	}
	
	/** clears all the upgraded data from the tables **/
	function clearUpgradeData() {
		global $wpdb;
		wpau_init();
		$wpdb->query('truncate table '. WPAU_LOG_TABLE);
		$wpdb->query('truncate table '. WPAU_PLUGIN_TABLE);
	}
	
	/** builds the output and creates a link to the next task if any exists **/
	function getWpauNextPage($task, $message, $showOutput = true) {
		global $task_list, $task_description, $theFuncComplete;
		//ensure multiple checks so that if previous task is not complete we 
		//do not do the next step as all are inter-dependent
		$currentPos = array_search($task, $task_list);
		
		$currentTaskDescription = $task_description[$currentPos];
		
		//check if we have more tasks
		if($currentPos + 1 < count($task_list)) {
			$nextTask = $task_list[$currentPos + 1];
			$nextTaskDescription = $task_description[$currentPos + 1];
		}
		else {
			$nextTask = 'done';
			$nextTaskDescription = 'Поздравляем, обновление прошло успешно.';
		}
		$nextLink = '?page='.WPAU_PAGE.'&task='.$nextTask;
		if($currentPost > count($task_list) || $currentPos < 0 ) {
			$message .= 'Извините, возникла попытка выполнения неизвестной задачи. Пожалуйста, <a href="?page='.WPAU_PAGE.'">нажмите сюда</a> для повторной попытки.';
			$theFuncComplete = false;
		}
		
		if($showOutput && $theFuncComplete) {
			wpauStartHtml();
			echo '<strong>'.$message.'</strong>';
			echo "<hr /><strong>СТАТУС ЗАДАЧИ</strong><br /><hr />";
			echo '<strong>Успешное завершение задачи:</strong>, '.$currentTaskDescription.'. <br /><br />
			<strong>Следующая задача -></strong> '.$nextTaskDescription.'
			<br /><br />Пожалуйста, <a href="'.$nextLink.'">НАЖМИТЕ СЮДА</a> для выполнения следующей задачи.';
			wpauEndHtml();
		}
		else if (! $theFuncComplete) {
			wpauStartHtml();
			echo '<strong>Извините, что-то пошло не так и мы не можем продолжить процесс обновления</strong>';
			echo '<p>Пожалуйста, <a href="?page='.WPAU_PAGE.'">нажмите сюда</a>, чтобы начать все сначала.</p>';
			wpauEndHtml();
		}
		
	}
	
	function wpau_show_reactivate_plugins($automated = false) {
		echo 'Ура-Ура!!! Все файлы были обновлены до послежней версии. Пожалуйтса, <a href="'.get_bloginfo('siteurl').'/wp-admin/upgrade.php" target="_blank">НАЖМИТЕ СЮДА ДЛЯ ЗАВЕРШЕНИЯ ОБНОВЛЕНИЯ БАЗЫ ДАННЫХ</a> (откроется новое окно, и если требуется обновдение базы данных, то там будет соответствующая ссылка) потом вернитесь для повторной активации всех плагинов<br>';
		echo '<strong><a href="?page='.WPAU_PAGE.'&task=re-plugin">НАЖМИТЕ СЮДА ДЛЯ ПОВТОРНОЙ АКТИВАЦИИ ПЛАГИНОВ. ПОСЛЕ ТОГО, КАК ВЫ ОБНОВИТЕ БАЗУ ДАННЫХ</a></strong>';
	}
	
	/** runs thorough preliminary checks to see if we can run WPAU on the user's server **/
	function wpau_run_prelims() {
		global $wbAbsPath, $isNix, $wpdb;
		$count = $wpdb->get_results('SELECT count(*) as counter from '.WPAU_LOG_TABLE);
		if($counter > 0) {
			if($count->counter > 0)
				clearUpgradeData();
		}
		
		//clearUpgradeData();
		$extra = '';
		require_once('wpau_prelimcheck.class.php');
		wpauStartHtml();
		echo "<hr /><strong>СТАТУС ЗАДАЧИ</strong><br />";
		echo "Мы произвели некоторую предварительную проверку Вашего сервера. И вот какие результаты получили<hr />";
		$canWPAURun = true;
		$ftpError = false;
		$allClear = true;
		$message = '';
		$severeError = '';
		$prelimCheck = new wpauPrelimHelper(ABSPATH, $isNix);
		
		if($prelimCheck->checkCleanUpRequired()) {
			echo 'Похоже, Вы не удалили файлы, оставшиеся после предыдущего обновления. Пожалуйста, <a href="?page='.WPAU_PAGE.'&task=cleanup&returnhome=1">нажмите сюда</a> для запуска процедуры очистки, перед следующим обновлением.<br>';
			wpauEndHtml();
			unset($prelimCheck);
			return false;
		}
		
		if(! $prelimCheck->runFTPPrelimChecks()) {
			$message .= 'Сервер не поддерживает запись в директорию с WordPress<br />
			Для продолжения , Вам необходимо выполнить одну из двух вещей<br />';
			$ftpError = true;
			$allClear = false;
		}
		else if(ini_get('safe_mode')) {
			//safe mode man cannot run
			$severeError =  'Ваш сервере использует &quot;safe mode&quot;. WPAU не может работать в &quot;safe mode&quot;. Вежливо попросите администратора сервера отключить &quot;safe mode&quot;';
			$canWPAURun = false;
		}
		else if (!function_exists('gzopen')) {
			//urgh no zip support can't run
			$severeError =  'Опа, но Ваш сервер не поддерживает функции для работы с zip, а это ведь одна из главных потребностей нашего плагина. Извините, но мы не можем продолжить. Вежливо попросите администратора Вашего сервера включить поддержку zip';
			$canWPAURun = false;
		}
		
		if(! $prelimCheck->canMakeBackupDir) {
			$extra = "mbd=true";
		}
		//site is running in safe mode so we cannot continue
		if(! $canWPAURun) {
			echo '<p style="color:red;font-weight:bold">'. $severeError.'</p>';
			echo '</p>';
			wpauEndHtml();
			unset($prelimCheck);
			return false;
		}
		
		/** 
			ok seems the site is having the ftp issue, show up the form to the user
			this happens when the ftp user and web users are different on a shared
			server running multiple sites
		**/
		if( $ftpError) {
			echo '<p style="color:red;font-weight:bold">'. $message.'</p>';
?>
	<ol>
			<li>Данные для доступа по FTP</li>
			</ol>
			<p><strong>На заметку:</strong> Мы не сохраняем данные для доступа по FTP из соображений безопасности. Эти данные будут использованы только для того, чтобы сделать директории доступными для записи. И это необходимо только один раз.</p>
		<p>Что такое базовая директория FTP.
		Если Вы установили wordpress в директорию <strong>public_html</strong>, тогда базовой директорией ftp является <strong>/public_html</strong><br />
		Если Вы установили wordpress в директорию <strong>public_html/wpau</strong>, тогда базовой директорией ftp является <strong>/public_html/wpau</strong><br />
		Если Вы установили wordpress в корневую директорию, то базовой директорией ftp является <strong>/</strong><br />
		</p>
	<form method="post" name="getftp" action="?page=<?php echo WPAU_PAGE; ?>&task=prelimopts&<?= $extra ?>">
		<table class="editform" width="500" cellspacing="2" cellpadding="5" align="left">
			<tr>
				<td colspan="2"><strong>Введите данные для доступа по FTP</strong></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Имя пользователя для FTP</label></td>
				<td><input type="text" id="wpau-ftpuser" name="wpau-ftpuser" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Пароль для FTP</label></td>
				<td><input type="password" id="wpau-ftppass" name="wpau-ftppass" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Базовая директория FTP (директория, в которой установлен wordpress)</label></td>
				<td><input type="text" id="wpau-ftpbasedir" name="wpau-ftpbasedir" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Адрес FTP (Host)</label></td>
				<td><input type="text" id="wpau-ftphost" name="wpau-ftphost" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" name="wpau-submit" id="wpau-submit" value="Вперед" /></td>
			</tr>			
			</table>
		</form>
<?php
		}
		else if($allClear) {
			echo 'Прекрасно! Проверка прошла успешно и мы готовы произвести автоматическое обновление. <a href="?page='.WPAU_PAGE.'&task=files">Нажмите сюда</a>, чтобы начать обновление.';
?>
			<div id="wpau-file-download"></div>
			<div id="wpau-db-download"></div>
			<div id="wpau-update-db"></div>
			Вы также можете выбрать <a href="#" id="wpau-automated">автоматическую версию</a>.<div id="wpau-status-bar"><div id="wpau-status-bar-indicator"></div></div><div id="wpau-status-message"></div></div>
<?
		}
?>
<?php
		wpauEndHtml();
		unset($prelimCheck);
	}
	
	/** gets the information entered by the user and sanitizes the server files so that we can run the 
	WPAU plugin without any errors **/
	function wpau_prelim_opts_and_sanatize() {
		global $wbAbsPath, $isNix;
		
		$options = get_settings('wpau-params');
		if ( $_POST['wpau-submit'] ) {
			$wpau_ftp['ftpuser'] = strip_tags(stripslashes($_POST['wpau-ftpuser']));
			$wpau_ftp['ftppass'] = strip_tags(stripslashes($_POST['wpau-ftppass']));
			$wpau_ftp['ftphost'] = strip_tags(stripslashes($_POST['wpau-ftphost']));
			$wpau_ftp['ftpbasedir'] = strip_tags(stripslashes($_POST['wpau-ftpbasedir']));
			//only saves it temporarily so that we can run post upgrade steps
			if ( $options != $wpau_ftp ) {
				$options = $wpau_ftp;
				update_option('wpau-params', $options);
			}
		}
		
		require_once('wpau_prelimcheck.class.php');
		$prelimCheck = new wpauPrelimHelper(ABSPATH, $isNix);
		$prelimCheck->ftpUser = $wpau_ftp['ftpuser'];
		$prelimCheck->ftpPass = $wpau_ftp['ftppass'];
		$prelimCheck->ftpHost = $wpau_ftp['ftphost'];
		$prelimCheck->ftpBaseDir = $wpau_ftp['ftpbasedir'];
		$prelimCheck->checkFtpMode();
		if($prelimCheck->checkFTPCredentials()) {
			$makeBackUpDir = $_REQUEST['mbd'];
			if($prelimCheck->runFTPOperation()) {
				if('true' == $makeBackUpDir) {
					if(! $prelimCheck->makeBackupDir()) {
						wpauStartHtml();
						echo '<strong>Ой, мы не можем запустить автоматическую обновление для Вашего сайта. В текущее время мы пытаемся решить проблемы для систем, вроде Вашей и постараемся выпустить новую версию как можно скорее.</strong>';
						wpauEndHtml();
						return false;
					}
				}	
				wpauStartHtml();
				echo 'Все готово и мы можем начать автоматическое обновление. <a href="?page='.WPAU_PAGE.'&task=files">Нажмите сюда</a> для запуска процесса обновления.';
?>
		<div id="wpau-file-download"></div>
		<div id="wpau-db-download"></div>
		<div id="wpau-update-db"></div>
		Вы также можете выбрать <a href="#" id="wpau-automated">автоматическую версию</a>.<div id="wpau-status-bar"><div id="wpau-status-bar-indicator"></div></div><div id="wpau-status-message"></div></div>
<?php
				wpauEndHtml();
			}
		}
		else {
			wpauStartHtml();
			echo '<p style="color:red;font-weight:bold">Ой-ой-ой!!!!! Мы не можем подключиться по ftp к Вашему сайту, проверьте внимательно данные для доступа.</p>';
?>
		<ol>
			<li>Данные для доступа по FTP</li>
			</ol>
			<p><strong>На заметку:</strong> Мы не сохраняем данные для доступа по FTP из соображений безопасности. Эти данные будут использованы только для того, чтобы сделать директории доступными для записи. И это необходимо только один раз.</p>
		<p>Что такое базовая директория FTP.
		Если Вы установили wordpress в директорию <strong>public_html</strong>, тогда базовой директорией ftp является <strong>/public_html</strong><br />
		Если Вы установили wordpress в директорию <strong>public_html/wpau</strong>, тогда базовой директорией ftp является <strong>/public_html/wpau</strong><br />
		Если Вы установили wordpress в корневую директорию, то базовой директорией ftp является <strong>/</strong><br />
		</p>
<form method="post" name="getftp" action="?page=<?php echo WPAU_PAGE; ?>&task=prelimopts">
	<table class="editform" width="500" cellspacing="2" cellpadding="5" align="left">
		<tr>
				<td colspan="2"><strong>Введите данные для доступа по FTP</strong></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Имя пользователя для FTP</label></td>
				<td><input type="text" id="wpau-ftpuser" name="wpau-ftpuser" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Пароль для FTP</label></td>
				<td><input type="password" id="wpau-ftppass" name="wpau-ftppass" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Базовая директория FTP (директория, в которой установлен wordpress)</label></td>
				<td><input type="text" id="wpau-ftpbasedir" name="wpau-ftpbasedir" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td><label for="disclosurepolicy-title">Адрес FTP (Host)</label></td>
				<td><input type="text" id="wpau-ftphost" name="wpau-ftphost" value="" style="width: 95%" /></td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" name="wpau-submit" id="wpau-submit" value="Вперед" /></td>
			</tr>			
		</table>
	</form>
<?php
			wpauEndHtml();
		}
	}

	/**
	* FUnction to back up the existing wordpress installation files
	**/
	function wpau_backup_files($automated = false) {
		global $wpauDirPath, $wpAbsPath, $theFuncComplete, $isNix, $wpIncludeDirs;
		$dirName = trailingslashit(ABSPATH);
		$dirName = $dirName . WPAU_BACKUP_DIR;
		$dirName = trailingslashit($dirName);
		if(!$basedir = @opendir($dirName)) {
			mkdir ($dirName);
			chmod($dirName, 0757);
		}
		
		@chmod($dirName, 0757);
		
		
		wpauPersistNoLog(false, false, $automated);
		$message = '';
		require_once('wpau_zip.class.php');
		$extension = '.zip';
		$zipFuncs = new wpauZipFuncs($wpAbsPath, $isNix, WPAU_FILES_ZIP, WPAU_BACKUP_DIR, $wpIncludeDirs, $extension);
		$zipFuncs->createArchive();
		if($zipFuncs->isFileWritten) {
			$message = '<br />Все файлы были удачно упакованы. <a href="'.get_bloginfo('siteurl').'/'.WPAU_BACKUP_DIR.'/'.WPAU_FILES_ZIP.'.zip">СКАЧАЙТЕ ИХ</a> ОБЯЗАТЕЛЬНО. <br/>ПРОДОЛЖАЙТЕ обновление только после того, как скачаете файлы себе на компьютер<br />';
			$theFuncComplete = true;
		}
		else {
			$message = 'Файлы не могут быть упакованы и процесс не может быть продолжен.';
			$theFuncComplete = false;
		}
		wpauPersist(true, $zipFuncs->loggedData, $theFuncComplete, $message, true);
		unset($zipFuncs);
		if($automated) { return $theFuncComplete; }
	}
	
	/** 
	Shows the database backup options 
	Taken from the plugin Wordpress Database backup created byAustin Matzko.
	**/
	function wpau_backup_db_options() {
		global $wpAbsPath, $isNix, $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		$backupDir = WPAU_BACKUP_DIR;
		$backupFile = 'wpau-db-backup.zip';
		require_once('wpau_db_backup.class.php');
		$wpauDbBackup = new wpauBackup($backupDir);
		$wpauDbBackup->backup_menu();
		$message = '<br />Выбор таблиц завершен, продолжите, чтобы сделать резервную копию Вашей базы данных.<br />';
		$theFuncComplete = true;
		wpauPersist(true, $wpauDbBackup->loggedData, $theFuncComplete, $message, false);
		unset($wpauDbBackup);
	}
	
	/** 
	Backs up the database tables and saves it to a file
	Taken from the plugin Wordpress Database backup created byAustin Matzko.
	**/
	function wpau_backup_db($automated = false) {
		global $wpAbsPath, $isNix, $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		$backupDir = WPAU_BACKUP_DIR;
		$backupFile = 'wpau-db-backup.zip';
		require_once('wpau_db_backup.class.php');
		$wpauDbBackup = new wpauBackup($backupDir);
		if($wpauDbBackup->perform_backup($automated)) {
			if($wpauDbBackup->zip_backup($backupFile)) {
				$theFuncComplete = true;
				$message = 'Была создана резервная копия базы данных. <a href="'.get_bloginfo('siteurl').'/'.WPAU_BACKUP_DIR.'/'.WPAU_DB_ZIP.'.zip">ЗАГРУЗИТЕ ЕЕ</a> ОБЯЗАТЕЛЬНО. <br/>ПОДОЛЖАЙТЕ обновление только после того, как скачаете файлы себе на компьютер<br />';
			}
			else {
				$theFuncComplete = false;
				$message = 'Невозможно создать резервную копию БД и процесс не может быть продолжен.';
			}
		}
		else {
			$theFuncComplete = false;
			$message = 'Невозможно создать резервную копию БД и процесс не может быть продолжен.';
		}
		wpauPersist(true, $wpauDbBackup->loggedData, $theFuncComplete, $message, true);
		unset($wpauDbBackup);
		if($automated) { return $theFuncComplete; }
	}

/**
	* Function to show user an option whether to download files from wordpress site
	* or allow them to upload a file from their local machine
	**/
	function wpau_show_new_version_forms() {
		global $theFuncComplete;
		$theFuncComplete = true;
		
		wpauPersistNoLog(false, false, false);
	?>
		<script type="text/javascript" language="JavaScript">
			function showUpload(layerName) {
				document.getElementById(layerName).style.visibility = 'visible';
				document.getElementById(layerName).style.display = 'inline';
			}
			
			function hideUpload(layerName) {
				document.getElementById(layerName).style.visibility = 'hidden';
				document.getElementById(layerName).style.display = 'none';
			}
		</script>
		<div style="padding:left:20px;margin-left:30px;"><br /><br />
			<span><strong>Загрузить свежую версию Wordpress</strong></span>
			<p>Все нормално, у нас есть резервная копия Вашего блога. Если Вы еще не загрузили файлы себе на компьютер, Вы можете сделать это прямо сейчас.</p>
			<p>Для продолжения процесса нам нужна копия свежей версии WordPress. Вы можете выбрать один из двух вариантов
			<ol>
				<li>Мы можем автоматически загрузить Wordpress, вот с этого адреса: <br />http://mywordpress.ru/latest.zip</li>
				<li>Вы можете сами загрузить необходимый файл.</li>
			</ol>
			</p>
			<p>Пожалуйста, заполните форму перед тем, как продолжить</p>
			<p>НА ЗАМЕТКУ: Это может занять от 15 до 300 секунд, НЕ ОБНОВЛЯЙТЕ СТРАНИЦУ.</p>
			<p>
			<form name="wpaunewversion" method="post" enctype="multipart/form-data" action="?page=<?php echo WPAU_PAGE ?>&task=getlatestfiles">
				<input type="Radio" name="subtask" value="wp-latest-ver" checked="checked" onchange="hideUpload('fileupload');" /> <strong>Получить свежую версию с сайта mywordpress.ru</strong> (рекомендуется)<br />
				<input type="Radio" name="subtask" value="wp-upped-ver" onchange="showUpload('fileupload');"  disabled="true" /> Загрузить файл со свежей версией самому. Недоступно в этой версии<br /><br />
				<div id="fileupload" style="visibility:hidden;display:none;">
				<input type="File" name="thefile" accept="application/x-zip-compressed" /> Выберите файл для загрузки<br /><br />
				</div>
				<input type="Submit" name="doversiondownload" value="Вперед" />
			</form>
			</p>
		</div>
	<?php
		$loggedData = '';
		//$message = 'Select the option to start the files download';
		wpauPersist(true, $loggedData, $theFuncComplete, $message, false);
	}

	/**
	* Function to download the latest version from wordpress.org
	**/
	function wpau_get_latest_version($automated = false) {
		global $wpAbsPath, $isNix, $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		require_once('wpau_upgrade.class.php');
		$upgradeHelper = new wpauUpgradeHelper($wpAbsPath, $isNix, WPAU_BACKUP_DIR, ABSPATH);
		$subtask = 'wp-latest-ver';
		if( isset($_REQUEST['subtask']) ) {
			$subtask = $_REQUEST['subtask'];
		}
		if(strcasecmp($subtask, 'wp-upped-ver')) {
			if (ini_get('allow_url_fopen') == '1') {
				$downloadURL = 'http://mywordpress.ru/latest.zip';
				if($upgradeHelper->getFilesFromWP($downloadURL)) {
					$upgradeHelper->recursive_chmod_directory(ABSPATH . WPAU_BACKUP_DIR);
					$theFuncComplete = true;
					$message = 'Файлы удачно загружены и распакованы с адреса '.$downloadURL.'<br />';
				}
				else {
					$theFuncComplete = false;
					$message = 'Не могу загрузить и распаковать файл с '.$downloadURL.'<br />';
				}
			}
			else {
				$url = 'mywordpress.ru';
				$filename = 'latest.zip';
				if($upgradeHelper->downloadFilesFromWP($url, $filename)) {
					$upgradeHelper->recursive_chmod_directory(ABSPATH . WPAU_BACKUP_DIR);
					$theFuncComplete = true;
					$message = 'Файлы удачно загружены и распакованы с адреса '.$downloadURL.'<br />';
				}
				else {
					$theFuncComplete = false;
					$message = 'Не могу загрузить и распаковать файл с '.$downloadURL.'<br />';
				}
			}
		}
		else {
			//read and upload the user file
			if($upgradeHelper->getUploadedFilesFromUser($_FILES)) {
				$theFuncComplete = true;
				$message = 'Все файлы удачно загружены и распакованы <br />';
			}
			else {
				$theFuncComplete = false;
				$message = 'Не могу загрузить и распаковать файлы <br />';
			}
		}
		wpauPersist(true, $upgradeHelper->loggedData, $theFuncComplete, $message, true);
		unset($upgradeHelper);
		if($automated) { return $theFuncComplete; }
	}

	/**
	* Function to show site downtime
	**/
	function wpau_site_down($automated = false) {
		global $wpauFileDirPath, $wpAbsPath, $isNix, $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		require_once('wpau_upgrade.class.php');
		$upgradeHelper = new wpauUpgradeHelper($wpAbsPath, $isNix, WPAU_BACKUP_DIR, ABSPATH);
		if($upgradeHelper->doMaintenanceMode($wpauFileDirPath, 'temp-index.php')) {
			$theFuncComplete = true;
			$message = 'Сайт будет переведен в режим обновления, <a href="'.get_bloginfo('wpurl').'" target="_blank">нажмите сюда</a> (в новом окне) для подтверждения';
		}
		else {
			$theFuncComplete = false;
			$message = 'Сайт не можете быть переведе в режим обновления.';
		}
		wpauPersist(true, $upgradeHelper->loggedData, $theFuncComplete, $message, true);
		unset($upgradeHelper);
		if($automated) { return $theFuncComplete; }
	}
	
	/**
	* Function to de-activate all plugins
	**/	
	function wpau_deactivate_plugins($automated = false) {
		global $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		$thePlugs = array();
		require_once('wpau_plugin.class.php');
		$path = "../";
		if ($automated) { $path = "../../"; }
		$currentPlugs = get_option('active_plugins');
		foreach($currentPlugs as $plugin) {
			
			if ( wpau_validate_file($path.$plugin) ) {
				//another wp guys check
				if (in_array($plugin, $currentPlugs)) {
					array_push($thePlugs, $plugin);
				}
			}
		}
		$wpauPluginsHandler = new wpauPluginHandler($thePlugs);
		if($wpauPluginsHandler->deActivatePlugins()) {
			$theFuncComplete = true;
			$message = 'Все плагины, за исключением <strong>Автоматического обновления Wordpress</strong>, были деактивированы.';
		}
		else {
			$theFuncComplete = false;
			$message = 'Плагины не могут быть деактивированы. Нажмите сюда для ручной деактивации. Не отключайте плагин <strong>Автоматического обновления Wordpress</strong>';
		}
		wpauPersist(true, $wpauPluginsHandler->loggedData, $theFuncComplete, $message, true);
		unset($wpauPluginsHandler);
		if($automated) { return $theFuncComplete; }
	}

	/**
	* Function to upgrade the latest files and run the upgrade.php
	**/
	function wpau_upgrade_installation($automated = false) {
		global $wpAbsPath, $isNix, $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		require_once('wpau_upgrade.class.php');
		$upgradeHelper = new wpauUpgradeHelper($wpAbsPath, $isNix, WPAU_BACKUP_DIR, ABSPATH);
		if($upgradeHelper->upgradeFiles()) {
			$theFuncComplete = true;
			$message = 'Наши поздравления!!! Все файлы были обновлены до последней версии. Пожалуйста, <a href="'.get_bloginfo('siteurl').'/wp-admin/upgrade.php" target="_blank">НАЖМИТЕ СЮДА ДЛЯ ЗАВЕРШЕНИЯ</a> (откроется в новом окне и Вы увидите ссылку, если требуется обновление базы данных), затем вернитесь и активируйте заново Ваши плагины';
		}
		else {
			$theFuncComplete = false;
			$message = 'Ой-ой!! мы не можем обновить Ваши файлы. Все файлы были возвращены к оригинальному виду. Нажмите сюда и попробуйте еще раз';
		}
		
		wpauPersist(true, $upgradeHelper->loggedData, $theFuncComplete, $message, true);
		unset($upgradeHelper);
		if($automated) { return $theFuncComplete; }
	}
	
	function wpau_update_database($automated = false) {
		global $wpAbsPath, $isNix, $theFuncComplete;
		wpauPersistNoLog(false, false, $automated);
		require_once('wpau_upgrade.class.php');
		$upgradeHelper = new wpauUpgradeHelper($wpAbsPath, $isNix, WPAU_BACKUP_DIR, ABSPATH);
		if($upgradeHelper->updateDatabase()) {
			$theFuncComplete = true;
			$message = 'Ваша база данных была удачно обновлена!';
		}
		else {
			$theFuncComplete = false;
			$message = 'Ваша база данных не может быть обновлена. <a href="'.get_bloginfo('siteurl').'/wp-admin/upgrade.php" target="_blank">Нажмите сбда</a>, чтобы вручную обновить базу данных, перед активацией всех плагинов.';
		}
		wpauPersist(true, $upgradeHelper->loggedData, $theFuncComplete, $message, true);
		unset($upgradeHelper);
		if($automated) { return $theFuncComplete; }
	}
	
	/**
	* Function to activate the plugins
	**/
	function wpau_reactivate_plugins($automated = false) {
		global $theFuncComplete, $wpdb;
		wpauPersistNoLog(false, false, $automated);
		require_once('wpau_plugin.class.php');
		$thePlugs = array();
		$wpauPluginsHandler = new wpauPluginHandler($thePlugs);
		if($wpauPluginsHandler->reActivatePlugins($automated)) {
			$plugins = $wpdb->get_results("select plugin_name from ".WPAU_PLUGIN_TABLE." where fatal_plugin = 1");
			if(count($plugins) > 0)  {
				foreach($plugins as $plugin) {
					$message .= '<span style="color:red">Плагин <strong>'.$plugin->plugin_name.'</strong> не может быть активирован. Вы должны активировать его вручную.</span><br>';
				}
			}
			else {
				$message = 'Все плагины были удачно активированы';
			}
			$theFuncComplete = true;
		}
		else {
			$theFuncComplete = true;
			$message = 'Плагин не может быть активирован. Пожалуйста, активируйте его вручную.';
		}
		$wpau_ftp = get_settings('wpau-params');
		if($wpau_ftp['ftpuser'] != '') {
			do_ftp_sanitize_operations($wpau_ftp);
		}
		$wpau_ftp['ftpuser'] = '';
		$wpau_ftp['ftppass'] = '';
		$wpau_ftp['ftphost'] = '';
		$wpau_ftp['ftpbasedir'] = '';
		//remove the ftp information from the db
		update_option('wpau-params', $wpau_ftp);

		wpauPersist(true, $wpauPluginsHandler->loggedData, $theFuncComplete, $message, true);
		unset($wpauPluginsHandler);
		if($automated) { return $theFuncComplete; }
	}
	
	function do_ftp_sanitize_operations($wpau_ftp, $automated = false) {
		require_once('wpau_prelimcheck.class.php');
		$prelimCheck = new wpauPrelimHelper(ABSPATH, $isNix, true);
		$prelimCheck->ftpUser = $wpau_ftp['ftpuser'];
		$prelimCheck->ftpPass = $wpau_ftp['ftppass'];
		$prelimCheck->ftpHost = $wpau_ftp['ftphost'];
		$prelimCheck->ftpBaseDir = $wpau_ftp['ftpbasedir'];
		$prelimCheck->checkFtpMode();
		if($prelimCheck->checkFTPCredentials()) {
			$prelimCheck->runFTPOperation();
		}
		unset($prelimCheck);
	}
	
	/** cleans up all the upgradation files**/
	function wpau_cleanup($automated = false) {
		global $wpAbsPath, $isNix, $theFuncComplete;
		$loggedData =  '<strong>Поздравляем! Обновление WordPress произведено успешно!</strong>';
		require_once('wpau_upgrade.class.php');
		$upgradeHelper = new wpauUpgradeHelper($wpAbsPath, $isNix, WPAU_BACKUP_DIR, ABSPATH);
		$upgradeHelper->cleanUpProcess();
		$returnHome = $_REQUEST['returnhome'];
		if($returnHome) {
			unset($upgradeHelper);
			//the wp_redirect does not work on some sites
			//as we already included header above while loading the plugin use plain old js
			//wp_redirect('?page='.WPAU_PAGE); 
?>
		<script language="JavaScript" type="text/javascript">
			window.location = "<?php echo '?page='.WPAU_PAGE;?>";
		</script>
<?
		}
		
		$loggedData .= '<p>Мы очистили все файлы обновления</p>';
		$message = '<p>Мы очистили все файлы обновления</p>';
		wpauStartHtml();
		$theFuncComplete = true;
		echo '<strong>'.$message.'</strong>';
		echo "<hr /><strong>СТАТУС ЗАДАЧИ</strong><br /><hr />";
		echo $loggedData.'<br /><br />';
		unset($upgradeHelper);
		wpauEndHtml();
		if($automated) { return $theFuncComplete; }
	}
	
	/**
	* Function to show the log for the upgrade
	**/
	function wpau_show_backup_log($automated = false) {
		global $wpdb;
		$logData = '';
		wpauStartHtml();
		echo '<strong>Наши поздравления!!! Ваш WordPress был удачно обновлен.</strong>';
		echo '<br /><strong>Загрузите резервную копию Вашего блога, если Вы еще не сделали этого.</strong><br />';
		echo '<a href="'.get_bloginfo('siteurl').'/'.WPAU_BACKUP_DIR.'/'.WPAU_FILES_ZIP.'.zip">ЗАГРУЗИТЬ ФАЙЛЫ</a><br />';
		echo '<a href="'.get_bloginfo('siteurl').'/'.WPAU_BACKUP_DIR.'/'.WPAU_DB_ZIP.'.zip">ЗАГРУЗИТЬ БАЗУ ДАННЫХ</a><br />';
		echo 'Не забудьте запустить <a href="'.get_bloginfo('siteurl').'/wp-admin/upgrade.php" target="_blank">обновление базы данных</a>, если Вы еще не сделали этого.';
		echo 'Вы можете <a href="?page='.WPAU_PAGE.'&task=cleanup">удалить</a> файлы, после того, как все будет готово';
		echo "<hr /><strong>Вот как проходило обновление</strong><br /><hr />";
		$logData = getDBLog();
		$wpauHelper = new wpauHelper;
		$dirName = trailingslashit(ABSPATH);
		$dirName = trailingslashit($dirName);
		if($wpauHelper->writeLogToDisk($dirName, WPAU_LOG_FILE, $logData)) {
			echo '<strong>Нажмите <a href="'.get_bloginfo('siteurl').'/'.WPAU_LOG_FILE.'" target="_blank">сюда</a>, чтобы скачать файл с историей обновления</strong><br>';
		}
		unset($wpauHelper);
		echo $logData;
		wpauEndHtml();
	}
	
	/**
	* Function to show the log on failure
	**/
	function wpau_show_log($automated = false) {
		global $wpdb;
		$logData = '';
		wpauStartHtml();
		echo '<strong>Некоторые проблемы мешают нам обновить Ваш блог. Вы можете <a href="mailto:[email protected]">прислать мне</a> историю обновления, чтобы я смог решить проблему. ТАкже укажите, использовали Вы автоматизированную версию или пошаговую.</strong>';
		echo "<hr /><strong>А вот и стория обновления</strong><br /><hr />";
		echo getDBLog();
		wpauEndHtml();
	}
	
	function getDBLog() {
		global $wpdb;
		$logData = '';
		$logged = $wpdb->get_results('SELECT task_name, task_status, task_description, task_log, start_date, end_date from  '.WPAU_LOG_TABLE);
		if(count($logged) > 0) {
			foreach($logged as $log) {
				$taskStatus = $log->task_status;
				if($taskStatus) { $taskStatus = 'Complete'; }
				else { $taskStatus = '<span style="color:red">Failed</span>'; }
				$logData .= '<strong>Task Name:</strong>  '. $log->task_name.'<br>';
				$logData .= '<strong>Task Description:</strong> '. $log->task_description.'<br>';
				$logData .= '<strong>Task Status:</strong> '. $taskStatus.'<br>';
				$logData .= '<strong>Task Start Date:</strong> '. $log->start_date.'<br>';
				$logData .= '<strong>Task End Date:</strong> '. $log->end_date.'<br>';
				$logData .= '<strong>Task Log:</strong> '. $log->task_log.'<br><br>';
			}
		}
		return $logData;
	}
	
	/** show start instructions **/
	function show_upgrade_start() {
	?>
		<div style="padding:left:20px;margin-left:30px;"><br /><br />
			<span><strong>Начало автоматического обновления Wordpress. <a href="?page=<?php echo WPAU_PAGE ?>&task=prelim">Для старта нажмите сюда</a>. Вот, что мы будем делать</strong></span>
			<ol>
				<li>Проверим готовность Вашего сервера. <br />Мы можем попросить предоставить данные для FTP доступа.<br />А если Ваш сервер работает в safe mode, то мы вообще не сможем обновить.</li>
				<li>Сохраним все текущие файлы блога и предоставим ссылку для их загрузки</li>
				<li>Сделаем резервную копию базы данных и также предоставим ссылку для загрузки</li>
				<li>Возьмем свежие файлы одним из двух вариантов
					<ul>
						<li>Автоматически скачаем их по ссылке ИЛИ</li>
						<li>Вы можете предоставить нам свой файл. (НЕ РАБОТАЕТ В ЭТОЙ ВЕРСИИ)</li>
					</ul>
				</li>
				<li>Деактивируем все плагины</li>
				<li>Переведем Ваш сайт в режим обновления</li>
				<li>Обновим файлы</li>
				<li>Снова активируем все плагины</li>
				<li>Переведем Ваш сайт в обычный режим</li>
				<li>Предоставим историю обновления</li>
			</ol>	
			<span><strong><a href="?page=<?php echo WPAU_PAGE ?>&task=files">Нажмите сюда, чтобы начать!</a></strong></span>
			<div>
			<div id="wpau-file-download"></div>
			<div id="wpau-db-download"></div>
			<div id="wpau-update-db"></div>
			Вы также можете выбрать <a href="#" id="wpau-automated">автоматизированную версию</a>.<div id="wpau-status-bar"><div id="wpau-status-bar-indicator"></div></div><div id="wpau-status-message"></div></div>
			
		</div>
		
	<?php
	}
	
	function install() {
		global $wpdb;
		$result = mysql_query("DROP TABLE if exists `wpau_active_plugins_info`");
		$result = mysql_query("
			CREATE TABLE `wpau_active_plugins_info` (
			  `id` int(4) NOT NULL auto_increment,
			  `plugin_name` varchar(255) NOT NULL default '',
			  `plugin_status` varchar(255) NOT NULL default '',
				`plugin_deactive_response` smallint(2) NULL default '0',
				`plugin_reactive_response` smallint(2) NULL default '0',
				`fatal_plugin` smallint(2) NULL default '0',
			  PRIMARY KEY  (`id`)
			) TYPE=MyISAM; 
		") or die(mysql_error().' on line: '.__LINE__);
		
		if (!$result) {
			return false;
		}
		
		$result = mysql_query("DROP TABLE if exists `wpau_upgrade_log`");
		$result = mysql_query("
			CREATE TABLE `wpau_upgrade_log` (
			  `id` int(4) NOT NULL auto_increment,
			  `task_name` varchar(150) NOT NULL default '',
			  `task_status` varchar(150) NOT NULL default '',
			  `task_description` varchar(150) NOT NULL default '',
			  `task_log` text,
			  `start_date` datetime NOT NULL default '0000-00-00 00:00:00',
			  `end_date` datetime default NULL,
			  PRIMARY KEY  (`id`)
			) TYPE=MyISAM;
		") or die(mysql_error().' on line: '.__LINE__);
		
			if (!$result) {
				return false;
			}
		
	}
	
	
	function wpau_validate_file($file, $allowed_files = '') {
		if ( false !== strpos($file, './'))
			return 1;
		
		if (':' == substr($file,1,1))
			return 2;
	
		if ( !empty($allowed_files) && (! in_array($file, $allowed_files)) )
			return 3;
	
		return 0;
	}
	
	/**
	* checks to see if everything is set first up so that it can be logged properly
	**/
	function wpau_init() {
		global $wpdb, $table_prefix;
		$wpdb->upgrade_log = $table_prefix.'upgrade_log';
		$wpdb->active_plugins_info = $table_prefix.'active_plugins_info';
	
		if (isset($_GET['activate']) && $_GET['activate'] == 'true') {
			$result = mysql_list_tables(DB_NAME);
			$tables = array();
			while ($row = mysql_fetch_row($result)) {
				$tables[] = $row[0];
			}
			if (!in_array($wpdb->upgrade_log, $tables) && !in_array($wpdb->active_plugins_info, $tables)) {
				install();
			}
		}
	}
	
	/**
	* Adds in the necessary JavaScript files for the automated version
	**/
	function wpau_add_scripts() {
		if (function_exists('wp_enqueue_script') && function_exists('wp_register_script')) {
			wp_register_script('jquery', get_bloginfo('wpurl') . '/wp-content/plugins/wordpress-automatic-upgrade/js/jquery.js');
			wp_enqueue_script('wpau_auto_update', get_bloginfo('wpurl') . '/wp-content/plugins/wordpress-automatic-upgrade/js/wp-wpau.js.php', array('jquery'), '0.1');
		} else {
			wpau_add_scripts_legacy();
		}
	}
	function wpau_add_scripts_legacy() {
		if (function_exists('wp_enqueue_script') && function_exists('wp_register_script')) { wpau_add_scripts(); return; }
		print('<script type="text/javascript" src="'.get_bloginfo('wpurl') . '/wp-content/plugins/wordpress-automatic-upgrade/js/jquery.js"></script>'."\n");
		print('<script type="text/javascript" src="'.get_bloginfo('wpurl') . '/wp-content/plugins/wordpress-automatic-upgrade/js/wp-wpau.js.php"></script>'."\n");
	}
	add_action('admin_print_scripts', 'wpau_add_scripts');
	add_action('admin_head', 'wpau_add_scripts_legacy');
	add_action('admin_menu', 'wpau_manage_page');

?>