From cd1c98cf3ef4d45d1d7de004efa88f8dac38b7e4 Mon Sep 17 00:00:00 2001 From: "shiyangyangwork@yahoo.cn" Date: Sat, 18 Feb 2012 03:03:11 +0000 Subject: [PATCH] * finish task #696. --- module/extension/control.php | 39 ++++++++++++++++++--------- module/extension/lang/en.php | 33 ++++++++++++----------- module/extension/lang/zh-cn.php | 33 ++++++++++++----------- module/extension/model.php | 2 +- module/extension/view/header.html.php | 1 + 5 files changed, 62 insertions(+), 46 deletions(-) diff --git a/module/extension/control.php b/module/extension/control.php index ecebc9223c..2f6829901d 100644 --- a/module/extension/control.php +++ b/module/extension/control.php @@ -38,7 +38,7 @@ class extension extends control $extension->viewLink = $release->viewLink; if($extension->version != $release->latestRelease->releaseVersion and $this->extension->checkVersion($release->latestRelease->zentaoVersion)) { - $extension->upgradeLink = inlink('upgrade', "extension=$release->code&downLink=" . helper::safe64Encode($release->downLink) . "&md5=$release->md5&type=$release->type"); + $extension->upgradeLink = ($release->latestRelease->charge or !$release->latestRelease->public) ? $release->latestRelease->downLink : inlink('upgrade', "extension=$release->code&downLink=" . helper::safe64Encode($release->latestRelease->downLink) . "&md5={$release->latestRelease->md5}&type=$release->type"); } } } @@ -99,12 +99,13 @@ class extension extends control * @param string $type * @param string $overridePackage * @param string $ignoreCompatible - * @param string $overrideFile - * @param string $agreeLicense + * @param string $overrideFile + * @param string $agreeLicense + * @param int $upgrade * @access public * @return void */ - public function install($extension, $downLink = '', $md5 = '', $type = '', $overridePackage = 'no', $ignoreCompatible = 'no', $overrideFile = 'no', $agreeLicense = 'no') + public function install($extension, $downLink = '', $md5 = '', $type = '', $overridePackage = 'no', $ignoreCompatible = 'no', $overrideFile = 'no', $agreeLicense = 'no', $upgrade = 0) { $this->view->error = ''; $this->view->header->title = $this->lang->extension->install . $this->lang->colon . $extension; @@ -125,7 +126,7 @@ class extension extends control /* Check file exists or not. */ if(file_exists($packageFile) and $overridePackage == 'no') { - $overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=yes&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=$agreeLicense"); + $overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=yes&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade"); $this->view->error = sprintf($this->lang->extension->errorPackageFileExists, $packageFile, $overrideLink); die($this->display()); } @@ -173,7 +174,7 @@ class extension extends control $zentaoVersion = $this->extension->getZentaoVersion($extension); if(!$this->extension->checkVersion($zentaoVersion) and $ignoreCompatible == 'no') { - $ignoreLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=yes"); + $ignoreLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=yes&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade"); $returnLink = inlink('obtain'); $this->view->error = sprintf($this->lang->extension->errorCheckIncompatible, $ignoreLink, $returnLink); die($this->display()); @@ -185,7 +186,7 @@ class extension extends control $return = $this->extension->checkFile($extension); if($return->result != 'ok') { - $overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=yes"); + $overrideLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=yes&agreeLicense=$agreeLicense&upgrade=$upgrade"); $returnLink = inlink('obtain'); $this->view->error = sprintf($this->lang->extension->errorFileConflicted, $return->error, $overrideLink, $returnLink); die($this->display()); @@ -197,15 +198,24 @@ class extension extends control { $extensionInfo = $this->extension->getInfoFromPackage($extension); $license = $this->extension->processLicense($extensionInfo->license); - $agreeLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=yes"); + $agreeLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=$ignoreCompatible&overrideFile=$overrideFile&agreeLicense=yes&upgrade=$upgrade"); $this->view->license = $license; $this->view->author = $extensionInfo->author; $this->view->agreeLink = $agreeLink; die($this->display()); } + if($upgrade) + { + $info = $this->extension->parseExtensionCFG($extension); + $this->post->upgradeVersion = isset($info->version) ? $info->version : ''; + $info = $this->extension->getInfoFromDB($extension); + $this->post->installedVersion = $info ? $info->version : ''; + } + /* The preInstall hook file. */ - if($preInstallHook = $this->extension->getHookFile($extension, 'preinstall')) include $preInstallHook; + $hook = $upgrade ? 'preupgrade' : 'preinstall'; + if($preHookFile = $this->extension->getHookFile($extension, $hook)) include $preHookFile; /* Save to database. */ $this->extension->saveExtension($extension, $type); @@ -236,7 +246,8 @@ class extension extends control $this->view->downloadedPackage = !empty($downLink); /* The postInstall hook file. */ - if($postInstallHook = $this->extension->getHookFile($extension, 'postinstall')) include $postInstallHook; + $hook = $upgrade ? 'postupgrade' : 'postinstall'; + if($postHookFile = $this->extension->getHookFile($extension, $hook)) include $postHookFile; $this->display(); } @@ -306,10 +317,11 @@ class extension extends control /** * Upload an extension * + * @param string $type * @access public * @return void */ - public function upload() + public function upload($type = 'install') { if($_FILES) { @@ -317,7 +329,8 @@ class extension extends control $fileName = $_FILES['file']['name']; $extension = basename($fileName, '.zip'); move_uploaded_file($tmpName, $this->app->getTmpRoot() . "/extension/$fileName"); - $this->locate(inlink('install', "extension=$extension")); + $param = $type == 'install' ? "extension=$extension" : "extension=$extension&downLink=&md5=&type=&overridePackage=no&ignoreCompatible=yes&overrideFile=no&agreeLicense=no&upgrade=1"; + $this->locate(inlink('install', $param)); } $this->display(); } @@ -349,7 +362,7 @@ class extension extends control public function upgrade($extension, $downLink, $md5, $type) { $this->extension->removePackage($extension); - $this->locate(inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=no&ignoreCompatible=yes")); + $this->locate(inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=no&ignoreCompatible=yes&overrideFile=no&agreeLicense=no&upgrade=1")); } /** diff --git a/module/extension/lang/en.php b/module/extension/lang/en.php index d94b5ca447..6a64f8db2e 100644 --- a/module/extension/lang/en.php +++ b/module/extension/lang/en.php @@ -9,22 +9,23 @@ * @version $Id$ * @link http://www.zentao.net */ -$lang->extension->common = 'Extension'; -$lang->extension->browse = 'Browse'; -$lang->extension->install = 'Install'; -$lang->extension->installAuto = 'AutoInstall'; -$lang->extension->installForce = 'ForceInstall'; -$lang->extension->uninstall = 'Uninstall'; -$lang->extension->activate = 'Activate'; -$lang->extension->deactivate = 'Deactivate'; -$lang->extension->obtain = 'Obtain'; -$lang->extension->view = 'Info'; -$lang->extension->download = 'Download'; -$lang->extension->downloadAB = 'Down'; -$lang->extension->upload = 'Upload and install'; -$lang->extension->erase = 'Erase'; -$lang->extension->upgrade = 'Upgrade'; -$lang->extension->agreeLicense = 'I agree the license'; +$lang->extension->common = 'Extension'; +$lang->extension->browse = 'Browse'; +$lang->extension->install = 'Install'; +$lang->extension->installAuto = 'AutoInstall'; +$lang->extension->installForce = 'ForceInstall'; +$lang->extension->uninstall = 'Uninstall'; +$lang->extension->activate = 'Activate'; +$lang->extension->deactivate = 'Deactivate'; +$lang->extension->obtain = 'Obtain'; +$lang->extension->view = 'Info'; +$lang->extension->download = 'Download'; +$lang->extension->downloadAB = 'Down'; +$lang->extension->upload = 'Upload and install'; +$lang->extension->uploadUpgrade = 'Upload and upgrade'; +$lang->extension->erase = 'Erase'; +$lang->extension->upgrade = 'Upgrade'; +$lang->extension->agreeLicense = 'I agree the license'; $lang->extension->structure = 'Structure'; $lang->extension->installed = 'Installed'; diff --git a/module/extension/lang/zh-cn.php b/module/extension/lang/zh-cn.php index ad80fcb28a..6fc7d54708 100644 --- a/module/extension/lang/zh-cn.php +++ b/module/extension/lang/zh-cn.php @@ -9,22 +9,23 @@ * @version $Id$ * @link http://www.zentao.net */ -$lang->extension->common = '插件管理'; -$lang->extension->browse = '浏览插件'; -$lang->extension->install = '安装插件'; -$lang->extension->installAuto = '自动安装'; -$lang->extension->installForce = '强制安装'; -$lang->extension->uninstall = '卸载'; -$lang->extension->activate = '激活'; -$lang->extension->deactivate = '禁用'; -$lang->extension->obtain = '获得插件'; -$lang->extension->view = '详情'; -$lang->extension->download = '下载插件'; -$lang->extension->downloadAB = '下载'; -$lang->extension->upload = '本地安装'; -$lang->extension->erase = '清除'; -$lang->extension->upgrade = '升级'; -$lang->extension->agreeLicense = '我同意该授权'; +$lang->extension->common = '插件管理'; +$lang->extension->browse = '浏览插件'; +$lang->extension->install = '安装插件'; +$lang->extension->installAuto = '自动安装'; +$lang->extension->installForce = '强制安装'; +$lang->extension->uninstall = '卸载'; +$lang->extension->activate = '激活'; +$lang->extension->deactivate = '禁用'; +$lang->extension->obtain = '获得插件'; +$lang->extension->view = '详情'; +$lang->extension->download = '下载插件'; +$lang->extension->downloadAB = '下载'; +$lang->extension->upload = '本地安装'; +$lang->extension->uploadUpgrade = '本地升级'; +$lang->extension->erase = '清除'; +$lang->extension->upgrade = '升级'; +$lang->extension->agreeLicense = '我同意该授权'; $lang->extension->structure = '目录结构'; $lang->extension->installed = '已安装'; diff --git a/module/extension/model.php b/module/extension/model.php index 32276ce3c6..3d86ad1b76 100644 --- a/module/extension/model.php +++ b/module/extension/model.php @@ -184,7 +184,7 @@ class extensionModel extends model */ public function getInfoFromDB($extension) { - return $this->dao->select('*')->from(TABLE_EXTENSION)->where('code')->eq($extension)->fi()->fetch(); + return $this->dao->select('*')->from(TABLE_EXTENSION)->where('code')->eq($extension)->fetch(); } /** diff --git a/module/extension/view/header.html.php b/module/extension/view/header.html.php index ec7143481a..95146f872d 100644 --- a/module/extension/view/header.html.php +++ b/module/extension/view/header.html.php @@ -8,6 +8,7 @@ echo '' . html::a(inlink('browse', "type=available"), $lang->extension->available ) . ''; echo ' ' . html::a(inlink('obtain'), $lang->extension->obtain) . ''; echo '' . html::a(inlink('upload'), $lang->extension->upload, '', "class='iframe'") . ''; + echo '' . html::a(inlink('upload', 'type=upgrade'), $lang->extension->uploadUpgrade, '', "class='iframe'") . ''; ?>