优化开启/关闭模块

This commit is contained in:
JaguarJack 2020-06-24 10:07:11 +08:00
parent f6783cb13e
commit 5f5260a639
3 changed files with 86 additions and 7 deletions

View File

@ -189,10 +189,10 @@ class CatchAdmin
foreach (self::getModulesDirectory() as $module) {
if (is_dir($module)) {
$moduleInfo = self::getModuleInfo($module);
if (isset($moduleInfo['services']) && !empty($moduleInfo['services'])) {
if ($moduleInfo['enable']) {
$services = array_merge($services, $moduleInfo['services']);
}
// 如果没有设置 module.json 默认加载
$moduleServices = $moduleInfo['services'] ?? [];
if (!empty($moduleServices) && $moduleInfo['enable']) {
$services = array_merge($services, $moduleServices);
}
}
}
@ -231,7 +231,7 @@ class CatchAdmin
* @param $module
* @return bool
*/
public function disableModule($module)
public static function disableModule($module)
{
$moduleJson = self::moduleDirectory($module) . 'module.json';
@ -241,7 +241,7 @@ class CatchAdmin
$info = \json_decode(file_get_contents($moduleJson), true);
$info['enable'] = true;
$info['enable'] = false;
file_put_contents($moduleJson, \json_encode($info, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE));
@ -280,7 +280,6 @@ class CatchAdmin
if (file_exists($module . DIRECTORY_SEPARATOR . 'module.json')) {
return \json_decode(file_get_contents($module. DIRECTORY_SEPARATOR . 'module.json'), true);
}
return [];
}

View File

@ -0,0 +1,41 @@
<?php
// +----------------------------------------------------------------------
// | CatchAdmin [Just Like ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2020 http://catchadmin.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt )
// +----------------------------------------------------------------------
// | Author: JaguarJack [ njphper@gmail.com ]
// +----------------------------------------------------------------------
namespace catcher\command\install;
use catcher\CatchAdmin;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
class DisableModuleCommand extends Command
{
protected function configure()
{
$this->setName('disable:module')
->addArgument('module', Argument::REQUIRED, 'module name')
->setDescription('disable catch module');
}
protected function execute(Input $input, Output $output)
{
$module = $input->getArgument('module');
//dd($module, 123);
if (empty(CatchAdmin::getModuleInfo(CatchAdmin::directory() .$module))) {
$output->error("module [$module] not exist");
} else {
CatchAdmin::disableModule($module);
$output->info("module [$module] disabled");
}
}
}

View File

@ -0,0 +1,39 @@
<?php
// +----------------------------------------------------------------------
// | CatchAdmin [Just Like ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2020 http://catchadmin.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt )
// +----------------------------------------------------------------------
// | Author: JaguarJack [ njphper@gmail.com ]
// +----------------------------------------------------------------------
namespace catcher\command\install;
use catcher\CatchAdmin;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\Output;
class EnableModuleCommand extends Command
{
protected function configure()
{
$this->setName('enable:module')
->addArgument('module', Argument::REQUIRED, 'module name')
->setDescription('enable catch module');
}
protected function execute(Input $input, Output $output)
{
$module = $input->getArgument('module');
if (empty(CatchAdmin::getModuleInfo(CatchAdmin::directory() .$module))) {
$output->error("module [$module] not exist");
} else {
CatchAdmin::enableModule($module);
$output->info("module [$module] enabled");
}
}
}