diff --git a/module/api/test/model/createdemodata.php b/module/api/test/model/createdemodata.php index 735bf53231..540ad1126a 100755 --- a/module/api/test/model/createdemodata.php +++ b/module/api/test/model/createdemodata.php @@ -17,10 +17,13 @@ title=测试 apiModel->createDemoData(); timeout=0 cid=1 +- 测试正常初始化数据。 @1 +- 测试错误初始化数据。 @0 + */ global $tester, $lang, $app; $tester->loadModel('api'); -$app->setAppRoot('', dirname(__FILE__, 5)); r($tester->api->createDemoData($lang->api->zentaoAPI, commonModel::getSysURL() . $app->config->webRoot . 'api.php/v1', '16.0')) && p() && e(1); // 测试正常初始化数据。 +r($tester->api->createDemoData($lang->api->zentaoAPI, commonModel::getSysURL() . $app->config->webRoot . 'api.php/v2', '16.0')) && p() && e(0); // 测试错误初始化数据。 diff --git a/module/api/test/model/getdemodata.php b/module/api/test/model/getdemodata.php index e58bf0428f..0012e74684 100755 --- a/module/api/test/model/getdemodata.php +++ b/module/api/test/model/getdemodata.php @@ -27,6 +27,5 @@ cid=1 global $tester; $tester->loadModel('api'); -$app->setAppRoot('', dirname(__FILE__, 5)); r($tester->api->getDemoData('apistruct', '16.0')) && p('0:id,lib,name,type') && e('1,853,user,json'); //获取数据结构表的初始化数据。 r($tester->api->getDemoData('module', '16.0')) && p('0:id,root,name;3:id,root,name') && e('2964,853,工单,2961,853,项目'); //获取模块表的初始化数据。 diff --git a/module/extension/model.php b/module/extension/model.php index a6858b4d03..9d78a5c513 100644 --- a/module/extension/model.php +++ b/module/extension/model.php @@ -406,17 +406,34 @@ class extensionModel extends model * @access public * @return array */ - public function removePackage(string $extension) + public function removePackage(string $extension): array { $extension = $this->getInfoFromDB($extension); - if($extension->type == 'patch') return true; // 无法删除补丁类型的插件包。 + if(empty($extension)) return array(); + if($extension->type == 'patch') return array(); // 无法删除补丁类型的插件包。 + $removeFilesTips = $this->removeExtensionFiles($extension->files); + $removeDirsTips = $this->removeExtensionDirs($extension->dirs); + + /* Clean model cache files. */ + $this->cleanModelCache(); + + return array_merge($removeFilesTips, $removeDirsTips); + } + + /** + * 删除安装插件时拷贝到禅道目录的插件文件。 + * Remove extension files. + * + * @param string $files + * @access private + * @return array + */ + private function removeExtensionFiles(string $files): array + { $commandTips = array(); $appRoot = $this->app->getAppRoot(); - $dirs = json_decode($extension->dirs); - $files = json_decode($extension->files); - - /* 删除安装插件时拷贝到禅道目录的插件文件, 如果没有权限或者删除失败则返回提示信息。*/ + $files = json_decode($files); if($files) { foreach($files as $file => $savedMD5) @@ -424,6 +441,7 @@ class extensionModel extends model $file = $appRoot . $file; if(!file_exists($file)) continue; + /* 如果没有权限或者删除失败则返回提示信息。 */ $parentDir = mb_substr($file, 0, strripos($file, '/')); if(!is_writable($file) || !is_writable($parentDir)) { @@ -440,7 +458,22 @@ class extensionModel extends model } } - /* 删除安装插件时在禅道目录新增的文件夹, 如果没有权限或者删除失败则返回提示信息。*/ + return $commandTips; + } + + /** + * 删除安装插件时在禅道目录新增的文件夹。 + * Remove extension dirs. + * + * @param string $dirs + * @access private + * @return array + */ + private function removeExtensionDirs(string $dirs): array + { + $commandTips = array(); + $appRoot = $this->app->getAppRoot(); + $dirs = json_decode($dirs); if($dirs) { rsort($dirs); // remove from the lower level directory. @@ -449,6 +482,7 @@ class extensionModel extends model $path = rtrim($appRoot . $dir, '/'); if(!is_dir($path)) continue; + /* 如果没有权限或者删除失败则返回提示信息。*/ $parentDir = mb_substr($path, 0, strripos($path, '/')); if(!is_writable($path) || !is_writable($parentDir)) { @@ -461,9 +495,6 @@ class extensionModel extends model } } - /* Clean model cache files. */ - $this->cleanModelCache(); - return $commandTips; } diff --git a/module/extension/test/model/removepackage.php b/module/extension/test/model/removepackage.php index 8d72f2d5f8..e3baf8437c 100755 --- a/module/extension/test/model/removepackage.php +++ b/module/extension/test/model/removepackage.php @@ -18,7 +18,6 @@ zdTable('extension')->gen(10); global $tester, $app; $tester->loadModel('extension'); -$app->setAppRoot('', dirname(__FILE__, 5)); $result = $tester->extension->removePackage('code1'); r(is_array($result)) && p() && e(1); // 删除安装的code1插件文件检查返回值是否是数组。 r($result) && p() && e(0); // 删除安装的code1插件文件并检查有没有错误信息。