From cf71799030154da5ed3cbf50537dd9c8a1f8a521 Mon Sep 17 00:00:00 2001 From: wangchunsheng Date: Wed, 28 Dec 2011 03:18:16 +0000 Subject: [PATCH] * finish task#611. * fix the bug of confilct with old package. --- module/extension/model.php | 65 ++++++++++++++++++++------- module/extension/view/browse.html.php | 2 +- module/extension/view/obtain.html.php | 2 +- module/extension/view/upload.html.php | 2 +- 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/module/extension/model.php b/module/extension/model.php index 9856052a84..630a826f79 100644 --- a/module/extension/model.php +++ b/module/extension/model.php @@ -206,19 +206,50 @@ class extensionModel extends model $data->license = 'unknown'; $data->zentaoVersion = ''; - /* Redad the info file of the package. */ - $infoFile = "ext/$extension/doc/copyright.txt"; - if(!file_exists($infoFile)) return $data; - - $info = (object)parse_ini_file($infoFile); - foreach($info as $key => $value) - { - if(isset($data->$key)) $data->$key = $value; - } + $info = $this->parseExtensionCFG($extension); + foreach($info as $key => $value) if(isset($data->$key)) $data->$key = $value; if(isset($info->zentaoversion)) $data->zentaoVersion = $info->zentaoversion; + return $data; } + /** + * Parse extension's config file. + * + * @param string $extension + * @access public + * @return object + */ + public function parseExtensionCFG($extension) + { + $info = new stdclass(); + + /* First, try ini file. before 2.5 version. */ + $infoFile = "ext/$extension/doc/copyright.txt"; + if(file_exists($infoFile)) return (object)parse_ini_file($infoFile); + + /** + * Then try parse yaml file. since 2.5 version. + */ + + /* Try the yaml of current lang, then try en. */ + $lang = $this->app->getClientLang(); + $infoFile = "ext/$extension/doc/$lang.yaml"; + if(!file_exists($infoFile)) $infoFile = "ext/$extension/doc/en.yaml"; + if(!file_exists($infoFile)) return $info; + + /* Load the yaml file and parse it into object. */ + $this->app->loadClass('spyc', true); + $info = (object)spyc_load(file_get_contents($infoFile)); + if(isset($info->releases)) + { + krsort($info->releases); + $info->version = key($info->releases); + foreach($info->releases[$info->version] as $key => $value) $info->$key = $value; + } + return $info; + } + /** * Get the full path of the zip file of a extension. * @@ -287,15 +318,11 @@ class extensionModel extends model */ public function getZentaoVersion($extension) { - $zentaoVersion = ''; - $infoFile = "ext/$extension/doc/copyright.txt"; - if(!file_exists($infoFile)) return $zentaoVersion; + $info = $this->parseExtensionCFG($extension); + if(isset($info->zentaoVersion)) return $info->zentaoVersion; + if(isset($info->zentaoversion)) return $info->zentaoversion; - $info = parse_ini_file($infoFile); - if(isset($info['zentaoVersion'])) return $info['zentaoVersion']; - if(isset($info['zentaoversion'])) return $info['zentaoversion']; - - return $zentaoVersion; + return ''; } /** @@ -480,6 +507,10 @@ class extensionModel extends model $return->result = 'ok'; $return->error = ''; + /* try remove pre extracted files. */ + $this->classFile->removeDir("ext/$extension"); + + /* Extract files. */ $packageFile = $this->getPackageFile($extension); $this->app->loadClass('pclzip', true); $zip = new pclzip($packageFile); diff --git a/module/extension/view/browse.html.php b/module/extension/view/browse.html.php index c5b097bc47..4a1503063f 100644 --- a/module/extension/view/browse.html.php +++ b/module/extension/view/browse.html.php @@ -13,7 +13,7 @@ - +
id $extension->name";?>name";?>
desc;?>
diff --git a/module/extension/view/obtain.html.php b/module/extension/view/obtain.html.php index 389d44e8e6..ae754959a7 100644 --- a/module/extension/view/obtain.html.php +++ b/module/extension/view/obtain.html.php @@ -44,7 +44,7 @@ ?>
-
name;?>
+
name . "($currentRelease->releaseVersion)";?>
releaseVersion != $currentRelease->releaseVersion) diff --git a/module/extension/view/upload.html.php b/module/extension/view/upload.html.php index fd90bb74b7..42eb9166de 100644 --- a/module/extension/view/upload.html.php +++ b/module/extension/view/upload.html.php @@ -13,7 +13,7 @@
- extension->upload);?> + extension->install);?>