From 443dabf7edf17465da14dbcc573e38d33cb03078 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 16 Jul 2013 04:07:21 +0000 Subject: [PATCH] * finish task #1567 --- db/update4.2.sql | 1 + module/extension/control.php | 6 +++--- module/extension/model.php | 28 +++++++++++++-------------- module/extension/view/obtain.html.php | 21 +++++++++++++++++--- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/db/update4.2.sql b/db/update4.2.sql index b2b44b0cba..8ab3e051f6 100644 --- a/db/update4.2.sql +++ b/db/update4.2.sql @@ -1 +1,2 @@ ALTER TABLE `zt_extension` ADD `depends` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `installedTime` ; +ALTER TABLE `zt_extension` CHANGE `zentaoVersion` `zentaoCompatible` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; diff --git a/module/extension/control.php b/module/extension/control.php index 9acd0d060d..563024970e 100644 --- a/module/extension/control.php +++ b/module/extension/control.php @@ -41,7 +41,7 @@ class extension extends control $extension = $extensions[$release->code]; $extension->viewLink = $release->viewLink; - if(isset($release->latestRelease) and $extension->version != $release->latestRelease->releaseVersion and $this->extension->checkVersion($release->latestRelease->zentaoVersion)) + if(isset($release->latestRelease) and $extension->version != $release->latestRelease->releaseVersion and $this->extension->checkVersion($release->latestRelease->zentaoCompatible)) { $upgradeLink = inlink('upgrade', "extension=$release->code&downLink=" . helper::safe64Encode($release->latestRelease->downLink) . "&md5={$release->latestRelease->md5}&type=$release->type"); $upgradeLink = ($release->latestRelease->charge or !$release->latestRelease->public) ? $release->latestRelease->downLink : $upgradeLink; @@ -254,8 +254,8 @@ class extension extends control } /* Check version compatible. */ - $zentaoVersion = $condition->zentao['compatible']; - if(!$this->extension->checkVersion($zentaoVersion) and $ignoreCompatible == 'no') + $zentaoCompatible = $condition->zentao['compatible']; + if(!$this->extension->checkVersion($zentaoCompatible) and $ignoreCompatible == 'no') { $ignoreLink = inlink('install', "extension=$extension&downLink=$downLink&md5=$md5&type=$type&overridePackage=$overridePackage&ignoreCompatible=yes&overrideFile=$overrideFile&agreeLicense=$agreeLicense&upgrade=$upgrade"); $returnLink = inlink('obtain'); diff --git a/module/extension/model.php b/module/extension/model.php index 1503b0e5eb..333ab57b39 100644 --- a/module/extension/model.php +++ b/module/extension/model.php @@ -214,22 +214,22 @@ class extensionModel extends model { /* Init the data. */ $data = new stdclass(); - $data->name = $extension; - $data->code = $extension; - $data->version = 'unknown'; - $data->author = 'unknown'; - $data->desc = $extension; - $data->site = 'unknown'; - $data->license = 'unknown'; - $data->zentaoVersion = ''; - $data->type = ''; - $data->depends = ''; + $data->name = $extension; + $data->code = $extension; + $data->version = 'unknown'; + $data->author = 'unknown'; + $data->desc = $extension; + $data->site = 'unknown'; + $data->license = 'unknown'; + $data->zentaoCompatible = ''; + $data->type = ''; + $data->depends = ''; $info = $this->parseExtensionCFG($extension); foreach($info as $key => $value) if(isset($data->$key)) $data->$key = $value; - if(isset($info->zentaoversion)) $data->zentaoVersion = $info->zentaoversion; - if(isset($info->zentao['compatible'])) $data->zentaoVersion = $info->zentao['compatible']; - if(isset($info->depends)) $data->depends = json_encode($info->depends); + if(isset($info->zentaoversion)) $data->zentaoCompatible = $info->zentaoversion; + if(isset($info->zentao['compatible'])) $data->zentaoCompatible = $info->zentao['compatible']; + if(isset($info->depends)) $data->depends = json_encode($info->depends); return $data; } @@ -801,7 +801,7 @@ class extensionModel extends model { $result = array(); $extensionInfo = $this->dao->select('*')->from(TABLE_EXTENSION)->where('code')->eq($extension)->fetch(); - $dependsExts = $this->dao->select('*')->from(TABLE_EXTENSION)->where('depends')->like("%$extension%")->fetchAll(); + $dependsExts = $this->dao->select('*')->from(TABLE_EXTENSION)->where('depends')->like("%$extension%")->andWhere('status')->ne('available')->fetchAll(); if($dependsExts) { foreach($dependsExts as $dependsExt) diff --git a/module/extension/view/obtain.html.php b/module/extension/view/obtain.html.php index d6dc78a098..d90e571f25 100644 --- a/module/extension/view/obtain.html.php +++ b/module/extension/view/obtain.html.php @@ -49,7 +49,7 @@ releaseVersion != $currentRelease->releaseVersion) { - printf($lang->extension->latest, $latestRelease->viewLink, $latestRelease->releaseVersion, $latestRelease->zentaoVersion); + printf($lang->extension->latest, $latestRelease->viewLink, $latestRelease->releaseVersion, $latestRelease->zentaoCompatible); }?> @@ -62,7 +62,22 @@ echo "{$lang->extension->downloads}: {$extension->downloads} "; echo "{$lang->extension->compatible}: {$lang->extension->compatibleList[$currentRelease->compatible]} "; echo "{$lang->extension->grade}: ", html::printStars($extension->stars); - echo " {$lang->extension->depends}: ", $currentRelease->depends; + echo " {$lang->extension->depends}: "; + if($currentRelease->depends) + { + foreach(json_decode($currentRelease->depends) as $code => $limit) + { + echo $code; + if($limit != 'all') + { + echo '('; + if(!empty($limit['min'])) echo '>= v' . $limit['min']; + if(!empty($limit['max'])) echo '<= v' . $limit['min']; + echo ')'; + } + echo ' '; + } + } ?> @@ -76,7 +91,7 @@ { if(isset($installeds[$extension->code])) { - if($installeds[$extension->code]->version != $extension->latestRelease->releaseVersion and $this->extension->checkVersion($extension->latestRelease->zentaoVersion)) + if($installeds[$extension->code]->version != $extension->latestRelease->releaseVersion and $this->extension->checkVersion($extension->latestRelease->zentaoCompatible)) { $upgradeLink = inlink('upgrade', "extension=$extension->code&downLink=" . helper::safe64Encode($currentRelease->downLink) . "&md5=$currentRelease->md5&type=$extension->type"); echo html::a($upgradeLink, $lang->extension->upgrade, '', 'class="iframe button-c"');