From 61968d79e31e564807846dc832ef01a5488c52fa Mon Sep 17 00:00:00 2001 From: Terry <2358269014@qq.com> Date: Tue, 27 Aug 2019 08:42:54 +0800 Subject: [PATCH] extension market manager --- .../System/block/extensionmarket/Manager.php | 30 ++- .../controllers/ExtensionmarketController.php | 177 +++++++++++++++++- .../system/extensionmarket/manager.php | 141 +++++++++++++- 3 files changed, 329 insertions(+), 19 deletions(-) diff --git a/app/appadmin/modules/System/block/extensionmarket/Manager.php b/app/appadmin/modules/System/block/extensionmarket/Manager.php index ec41c6e3..f77bea35 100644 --- a/app/appadmin/modules/System/block/extensionmarket/Manager.php +++ b/app/appadmin/modules/System/block/extensionmarket/Manager.php @@ -22,7 +22,9 @@ use Yii; */ class Manager { - + + public $nameSpaceArr; + public $versionArr; /** * init param function ,execute in construct. */ @@ -36,17 +38,37 @@ class Manager $addons = $info['addons']; $coll = isset($addons['coll']) ? $addons['coll'] : []; $count = isset($addons['count']) ? $addons['count'] : 0; + $this->initInstalledExtensions(); return [ 'addon_list'=> $coll, 'addon_count' => $count, - 'installed_extensions' => $this->getInstalledExtensions(), + 'installed_extensions_namespace' => $this->nameSpaceArr, + 'versionArr' => $this->versionArr, + ]; } // namespace - public function getInstalledExtensions() + public function initInstalledExtensions() { - return Yii::$service->extension->getAllNamespaces(); + $filter = [ + 'asArray' => true, + 'fetchAll' => true, + ]; + $data = Yii::$service->extension->coll($filter); + $arr = []; + $versionArr = []; + if (is_array($data['coll'])) { + foreach ($data['coll'] as $one) { + $namespace = $one['namespace']; + if ($namespace) { + $arr[] = $namespace; + $versionArr[$namespace] = $one['version']; + } + } + } + $this->versionArr = $versionArr; + $this->nameSpaceArr = $arr; } diff --git a/app/appadmin/modules/System/controllers/ExtensionmarketController.php b/app/appadmin/modules/System/controllers/ExtensionmarketController.php index 75edd003..b48450b6 100644 --- a/app/appadmin/modules/System/controllers/ExtensionmarketController.php +++ b/app/appadmin/modules/System/controllers/ExtensionmarketController.php @@ -62,10 +62,11 @@ class ExtensionmarketController extends SystemController { $namespace = Yii::$app->request->get('namespace'); $packageName = Yii::$app->request->get('packageName'); + $folderName = Yii::$app->request->get('folderName'); $addonName = Yii::$app->request->get('addonName'); // 进行zip文件下载到指定的文件路径 - $zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $addonName); + $zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $folderName, $addonName); if (!$zipFilePath) { echo json_encode([ 'statusCode' => '300', @@ -82,7 +83,8 @@ class ExtensionmarketController extends SystemController ]); exit; } - + // 删除zip压缩包 + unlink($zipFilePath); // 将addons信息写入数据库 /* @@ -95,8 +97,8 @@ class ExtensionmarketController extends SystemController string(7) "fecmall" ["name"]=> string(15) "furnilife_theme" - ["config_file_path"]=> - string(26) "furnilife_theme/config.php" + ["folder"]=> + string(26) "furnilife_theme" ["version"]=> string(5) "1.0.0" } @@ -126,17 +128,180 @@ class ExtensionmarketController extends SystemController ]); exit; } + // 进行插件的升级 + if (!Yii::$service->extension->administer->upgrade($namespace)) { + $errors = Yii::$service->helper->errors->get(); + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__($errors), + ]); + exit; + } + // 输入安装成功信息。 + echo json_encode([ + 'statusCode' => '200', + 'message' => Yii::$service->page->translate->__('addons install success'), + ]); + exit; + } + + // 升级 + public function actionUpgrade() + { + $namespace = Yii::$app->request->get('namespace'); + $packageName = Yii::$app->request->get('packageName'); + $addonName = Yii::$app->request->get('addonName'); + $folderName = Yii::$app->request->get('folderName'); + // 进行zip文件下载到指定的文件路径 + $zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $folderName, $addonName); + if (!$zipFilePath) { + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('download remote addons fail'), + ]); + exit; + } + // 进行zip文件的解压 + $dest_dir = dirname($zipFilePath); + if (!Yii::$service->helper->zipFile->unzip($zipFilePath, $dest_dir, true, true)) { + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('unzip addons fail'), + ]); + exit; + } + // 删除zip压缩包 + unlink($zipFilePath); + // 将addons信息写入数据库 + /* + array(6) { + ["id"]=> + string(2) "50" + ["namespace"]=> + string(13) "fectfurnilife" + ["package"]=> + string(7) "fecmall" + ["name"]=> + string(15) "furnilife_theme" + ["config_file_path"]=> + string(26) "furnilife_theme/config.php" + ["version"]=> + string(5) "1.0.0" + } + */ + $data = Yii::$service->extension->remoteService->getAddonsInfoByNamespace($namespace); + if (!is_array($data)) { + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('get remote addons info by namespace fail'), + ]); + exit; + } + // 将远程获取的数据,保存到数据库中。 + if (!Yii::$service->extension->upgradeInit($data)){ + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('init new install addon to db fail'), + ]); + exit; + } + // 进行插件的升级 + if (!Yii::$service->extension->administer->upgrade($namespace)) { + $errors = Yii::$service->helper->errors->get(); + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__($errors), + ]); + exit; + } + // 输入安装成功信息。 + echo json_encode([ + 'statusCode' => '200', + 'message' => Yii::$service->page->translate->__('addons install success'), + ]); + exit; + } + + + + // 卸载 + public function actionUninstall() + { + $namespace = Yii::$app->request->get('namespace'); + $packageName = Yii::$app->request->get('packageName'); + $addonName = Yii::$app->request->get('addonName'); + // 进行zip文件下载到指定的文件路径 + $zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $addonName); + if (!$zipFilePath) { + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('download remote addons fail'), + ]); + exit; + } + // 进行zip文件的解压 + $dest_dir = dirname($zipFilePath); + if (!Yii::$service->helper->zipFile->unzip($zipFilePath, $dest_dir, true, true)) { + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('unzip addons fail'), + ]); + exit; + } + // 删除zip压缩包 + unlink($zipFilePath); - + // 将addons信息写入数据库 + /* + array(6) { + ["id"]=> + string(2) "50" + ["namespace"]=> + string(13) "fectfurnilife" + ["package"]=> + string(7) "fecmall" + ["name"]=> + string(15) "furnilife_theme" + ["config_file_path"]=> + string(26) "furnilife_theme/config.php" + ["version"]=> + string(5) "1.0.0" + } + */ + $data = Yii::$service->extension->remoteService->getAddonsInfoByNamespace($namespace); + if (!is_array($data)) { + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('get remote addons info by namespace fail'), + ]); + exit; + } + // 将远程获取的数据,保存到数据库中。 + if (!Yii::$service->extension->upgradeInit($data)){ + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__('init new install addon to db fail'), + ]); + exit; + } + // 进行插件的升级 + if (!Yii::$service->extension->administer->upgrade($namespace)) { + $errors = Yii::$service->helper->errors->get(); + echo json_encode([ + 'statusCode' => '300', + 'message' => Yii::$service->page->translate->__($errors), + ]); + exit; + } + // 输入安装成功信息。 echo json_encode([ 'statusCode' => '200', 'message' => Yii::$service->page->translate->__('addons install success'), ]); exit; } - /* public function actionManagereditsave() { diff --git a/app/appadmin/theme/base/default/system/extensionmarket/manager.php b/app/appadmin/theme/base/default/system/extensionmarket/manager.php index aa4d2d64..953bc744 100644 --- a/app/appadmin/theme/base/default/system/extensionmarket/manager.php +++ b/app/appadmin/theme/base/default/system/extensionmarket/manager.php @@ -27,31 +27,56 @@ use fec\helpers\CRequest;

-
+
+
- 升级 + 需要升级 + + 最新版本 + + + - 安装 + 点击安装 +
+
最高版本:
+ +
当前版本:
+ +
- 最高版本:
+ + +
- - 刷新页面 - +