From cf945c23c552c1162492f7c3d73eff0c30bc66ba Mon Sep 17 00:00:00 2001 From: wangchunsheng Date: Thu, 18 Feb 2010 14:53:57 +0000 Subject: [PATCH] * adjust the upgrade feature. --- module/upgrade/control.php | 17 +++++- module/upgrade/lang/zh-cn.php | 14 ++++- module/upgrade/model.php | 43 ++++++++++++--- module/upgrade/view/confirm.html.php | 37 +++++++++++++ module/upgrade/view/execute.html.php | 4 +- module/upgrade/view/index.html.php | 37 +++++++++++++ module/upgrade/view/selectversion.html.php | 8 +-- www/install.php | 2 - www/upgrade.php | 63 ++++++++++++++++++++++ 9 files changed, 209 insertions(+), 16 deletions(-) create mode 100644 module/upgrade/view/confirm.html.php create mode 100644 module/upgrade/view/index.html.php create mode 100644 www/upgrade.php diff --git a/module/upgrade/control.php b/module/upgrade/control.php index cb0255a735..56fe98b6e4 100644 --- a/module/upgrade/control.php +++ b/module/upgrade/control.php @@ -26,14 +26,29 @@ class upgrade extends control /* 升级程序首页。*/ public function index() { - $this->locate(inlink('selectVersion')); + $this->display(); } /* 选择系统。*/ public function selectVersion() { + /* 处理版本号。*/ + $version = substr($this->config->installedVersion, 0, strpos($this->config->installedVersion, ' ')); + $version = str_replace('.', '_', $version); $this->view->header->title = $this->lang->upgrade->common . $this->lang->colon . $this->lang->upgrade->selectVersion; $this->view->position[] = $this->lang->upgrade->common; + $this->view->version = $version; + $this->display(); + } + + /* 确认。*/ + public function confirm() + { + $this->view->header->title = $this->lang->upgrade->confirm; + $this->view->position[] = $this->lang->upgrade->common; + $this->view->confirm = $this->upgrade->confirm($this->post->fromVersion); + $this->view->fromVersion = $this->post->fromVersion; + $this->display(); } diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index 4f483b8592..936f97c6d5 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -26,8 +26,20 @@ $lang->upgrade->result = '升级结果'; $lang->upgrade->fail = '升级失败'; $lang->upgrade->success = '升级成功'; $lang->upgrade->tohome = '返回首页'; - +$lang->upgrade->warnning= '警告'; +$lang->upgrade->warnningContent = << +备份方法:
+1. 可以通过phpMyAdmin进行备份。
+2. 使用mysql命令行的工具。
+ # mysqldump -u username -p dbname > filename
+ 要将上面红色的部分分别替换成对应的用户名和禅道系统的数据库名。
+ 比如: mysqldump -u root -p zentao >zentao.bak +EOT; $lang->upgrade->selectVersion = '选择版本'; $lang->upgrade->fromVersion = '升级版本'; +$lang->upgrade->confirm = '确认要执行的SQL语句'; +$lang->upgrade->sureExecute = '确认执行'; $lang->upgrade->fromVersions['0_3'] = '0.3 BETA'; +$lang->upgrade->fromVersions['0_4'] = '0.4 BETA'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 875489e857..c118578666 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -33,18 +33,43 @@ class upgradeModel extends model if($fromVersion == '0_3') { $this->upgradeFrom0_3To0_4(); + $this->upgradeFrom0_4To0_5(); + } + elseif($fromVersion == '0_4') + { + $this->upgradeFrom0_4To0_5(); } } + /* 确认。*/ + public function confirm($fromVersion) + { + $confirmContent = ''; + if($fromVersion == '0_3') + { + $confirmContent .= file_get_contents($this->getUpgradeFile('0.3')); + $confirmContent .= file_get_contents($this->getUpgradeFile('0.4')); + } + elseif($fromVersion == '0_4') + { + $confirmContent .= file_get_contents($this->getUpgradeFile('0.4')); + } + return str_replace('zt_', $this->config->db->prefix, $confirmContent); + } + + /* 从0.3版本升级到0.4版本。*/ private function upgradeFrom0_3To0_4() { - $upgradeFile = $this->app->getAppRoot() . 'db' . $this->app->getPathFix() . 'update0.3.sql'; - $this->execSQL($upgradeFile); - if(!$this->isError()) - { - $this->updateVersion('0.4 beta'); - } + $this->execSQL($this->getUpgradeFile('0.3')); + if(!$this->isError()) $this->updateVersion('0.4 beta'); + } + + /* 从0.4版本升级到0.5版本。*/ + private function upgradeFrom0_4To0_5() + { + $this->execSQL($this->getUpgradeFile('0.4')); + if(!$this->isError()) $this->updateVersion('0.5 beta'); } /* 更新PMS的版本设置。*/ @@ -70,6 +95,12 @@ class upgradeModel extends model } } + /* 获得要更新的sql文件。*/ + private function getUpgradeFile($version) + { + return $this->app->getAppRoot() . 'db' . $this->app->getPathFix() . 'update' . $version . '.sql'; + } + /* 执行SQL。*/ private function execSQL($sqlFile) { diff --git a/module/upgrade/view/confirm.html.php b/module/upgrade/view/confirm.html.php new file mode 100644 index 0000000000..6f75132b81 --- /dev/null +++ b/module/upgrade/view/confirm.html.php @@ -0,0 +1,37 @@ +. + * + * @copyright Copyright: 2009 Chunsheng Wang + * @author Chunsheng Wang + * @package upgrade + * @version $Id$ + */ +?> + +
+
'> + + + + + + + +
upgrade->confirm;?>
upgrade->sureExecute) . html::hidden('fromVersion', $fromVersion);?>
+
+
+ diff --git a/module/upgrade/view/execute.html.php b/module/upgrade/view/execute.html.php index 751e24539b..d8d8eb8670 100644 --- a/module/upgrade/view/execute.html.php +++ b/module/upgrade/view/execute.html.php @@ -21,8 +21,8 @@ * @version $Id$ */ ?> - -
+ +
diff --git a/module/upgrade/view/index.html.php b/module/upgrade/view/index.html.php new file mode 100644 index 0000000000..8754f062bd --- /dev/null +++ b/module/upgrade/view/index.html.php @@ -0,0 +1,37 @@ +. + * + * @copyright Copyright: 2009 Chunsheng Wang + * @author Chunsheng Wang + * @package upgrade + * @version $Id$ + */ +?> + +
+
upgrade->$result;?>
+ + + + + + + +
upgrade->warnning;?>
upgrade->warnningContent;?>
upgrade->common, inlink('selectVersion'));?>
+ +
+ diff --git a/module/upgrade/view/selectversion.html.php b/module/upgrade/view/selectversion.html.php index 0edaa82d3c..ddcbf8f036 100644 --- a/module/upgrade/view/selectversion.html.php +++ b/module/upgrade/view/selectversion.html.php @@ -21,14 +21,14 @@ * @version $Id$ */ ?> - -
-
'> + +
+ '> - + diff --git a/www/install.php b/www/install.php index 5c7800e08e..d5e83e30ce 100644 --- a/www/install.php +++ b/www/install.php @@ -2,8 +2,6 @@ /** * The install router file of ZenTaoMS. * - * All request should be routed by this router. - * * ZenTaoMS is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or diff --git a/www/upgrade.php b/www/upgrade.php new file mode 100644 index 0000000000..c68ab68768 --- /dev/null +++ b/www/upgrade.php @@ -0,0 +1,63 @@ +. + * + * @copyright Copyright: 2009 Chunsheng Wang + * @author Chunsheng Wang + * @package ZenTaoMS + * @version $Id$ + * @link http://www.zentao.cn + */ +error_reporting(E_ALL); + +/* ļ*/ +include '../../../framework/router.class.php'; +include '../../../framework/control.class.php'; +include '../../../framework/model.class.php'; +include '../../../framework/helper.class.php'; + +/* ʵ·ɶ󣬼ãӵݿ⡣*/ +$app = router::createApp('pms'); +$config = $app->loadConfig('common'); + +/* config*/ +$config->set('requestType', 'GET'); +$config->set('debug', true); +$config->set('default.module', 'upgrade'); + +/* ӵݿ⡣*/ +$dbh = $app->connectDB(); + +/* ÿͻʹõԡ*/ +$app->setClientLang(); +$app->setClientTheme(); + +/* ļعģ顣*/ +$lang = $app->loadLang('common'); +$common = $app->loadCommon(); + +/* Ӧlibļóȫֱá*/ +$app->loadClass('front', $static = true); +$app->loadClass('filter', $static = true); +$app->setSuperVars(); + +/* ǷѾµİ汾*/ +$config->installedVersion = $common->loadModel('setting')->getVersion(); +if(version_compare($config->version, $config->installedVersion) <= 0) die(header('location: index.php')); + +/* ֤ȨޣӦģ顣*/ +$app->parseRequest(); +$app->loadModule();
upgrade->selectVersion;?>
upgrade->fromVersion;?>upgrade->fromVersions, '', 'class=select-3');?>upgrade->fromVersions, $version, 'class=select-3');?>
upgrade->common);?>