123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- /**
- * Created by PhpStorm.
- * User: NODELOG
- * Date: 16/7/20
- * Time: 上午10:25
- */
- namespace common\components;
- use common\models\Module;
- use common\modules\ModuleInfo;
- use yii\helpers\Json;
- class ModuleManager extends PackageManager
- {
- public $paths = [
- '@common/modules'
- ];
- public $namespace = 'common\\modules\\';
- public $infoClass = 'ModuleInfo';
- public function findCore()
- {
- $all = $this->findAll();
- return array_filter($all, function ($val) {
- if (!$val->isCore) {
- return false;
- }
- return true;
- });
- }
- public function install(ModuleInfo $module)
- {
- $model = $module->getModel();
- $model->attributes = $module->info;
- $model->type = Module::TYPE_CORE;
- $model->config = Json::encode($module->getInitConfig());
- $model->status = Module::STATUS_OPEN;
- if ($model->save()) {
- if (method_exists($module, 'install')) {
- return call_user_func([$module, 'install']);
- }
- return true;
- }
- return false;
- }
- public function uninstall(ModuleInfo $module)
- {
- if ($module->isCore) {
- return false;
- }
- $model = $module->getModel();
- if ($model->delete()) {
- if (method_exists($module, 'uninstall')) {
- call_user_func([$module, 'uninstall']);
- }
- return true;
- }
- return false;
- }
- public function open(ModuleInfo $module)
- {
- $model = $module->getModel();
- $model->status = 1;
- if ($model->save()) {
- if (method_exists($module, 'open')) {
- call_user_func([$module, 'open']);
- }
- return true;
- }
- return false;
- }
- public function close(ModuleInfo $module)
- {
- if ($module->isCore) {
- return false;
- }
- $model = $module->getModel();
- $model->status = 0;
- if ($model->save()) {
- if (method_exists($module, 'close')) {
- call_user_func([$module, 'close']);
- }
- return true;
- }
- return false;
- }
- public function upgrade()
- {
- }
- }
|