/** * 执行模块升级脚本 * @param type $module 模块名称 * @return boolean */ public function upgrade($module) { //检查模块是否安装 if ($this->isInstall($module) == false) { $this->error = '模块没进行安装,无法进行模块升级!'; return -10022; } //取得模块信息 $info = $this->where(array('module' => $module))->find(); if (empty($info)) { $this->error = '获取模块信息错误!'; return -10023; } //模块路径 $base = $this->appPath . $module . '/'; //SQL脚本文件 $exec = $base . 'Upgrade/upgrade.sql'; //phpScript $phpScript = $base . 'Upgrade/Upgrade.class.php'; //判断是否有数据库升级脚本 if (file_exists($exec)) { //获取全部参数 preg_match_all("/#\\[version=(.*?)\\](.+?)#\\[\\/version\\]/ism", file_get_contents($exec), $match); //遍历 foreach ($match[1] as $index => $version) { //比较模块版本,仅处理小于或等于当前版本 if ($version && version_compare($version, $info['version'], '>=')) { //记录最后一个更新的版本号 $upgradeVersion = $version; $sql = $this->sqlSplit($sql, C("DB_PREFIX")); if (!empty($sql) && is_array($sql)) { foreach ($sql as $sql_split) { $this->execute($sql_split); } } } } } //判断是否有升级程序脚本 if (file_exists($phpScript)) { require_cache($phpScript); if (class_exists('Upgrade')) { $Upgrade = new Upgrade(); if ($Upgrade->run() == false) { $this->error = $Upgrade->getError() ? $Upgrade->getError() : "执行模块升级脚本错误,升级未完成!"; return -10024; } } } //加载配置 $config = $this->getModuleInstallConfig($module); if (!empty($config)) { //更新版本号 $this->where(array('module' => $module))->save(array('version' => $config['version'], 'updatedate' => date('Y-m-d'))); } return true; }
break; } } private static function selectUpgrade(Smarty $smarty) { $upgrades = array(); foreach (Utils::getFilelist(SYSTEM_ROOT . '/upgrade/scripts/') as $file) { if (preg_match('~upgrade-(.*?)-(.*?).php~', $file, $matches)) { $upgrades[$file] = "Version " . $matches[1] . " -> " . $matches[2]; } } if (Utils::getPOST('submit', false) !== false) { $upgrade = Utils::getPOST('upgrade', ''); if (array_key_exists($upgrade, $upgrades) && file_exists(SYSTEM_ROOT . '/upgrade/scripts/' . $upgrade)) { include_once SYSTEM_ROOT . '/upgrade/scripts/' . $upgrade; } } $smarty->assign('upgrades', $upgrades); $smarty->assign('heading', 'Select upgrade'); $smarty->assign('curStep', 1); $smarty->display('upgrade.tpl'); } private static function success(Smarty $smarty) { $smarty->assign('heading', 'Upgrade finished'); $smarty->assign('curStep', 2); $smarty->display('success.tpl'); } } Upgrade::run(Utils::getGET('action', ''));
/** * Run Upgrade Process: * - do WP-Property settings backup. * * @author peshkov@UD */ public function run_upgrade_process() { Upgrade::run($this->old_version, $this->args['version']); }