ModuleManager.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: NODELOG
  5. * Date: 16/7/20
  6. * Time: 上午10:25
  7. */
  8. namespace common\components;
  9. use common\models\Module;
  10. use common\modules\ModuleInfo;
  11. use yii\helpers\Json;
  12. class ModuleManager extends PackageManager
  13. {
  14. public $paths = [
  15. '@common/modules'
  16. ];
  17. public $namespace = 'common\\modules\\';
  18. public $infoClass = 'ModuleInfo';
  19. public function findCore()
  20. {
  21. $all = $this->findAll();
  22. return array_filter($all, function ($val) {
  23. if (!$val->isCore) {
  24. return false;
  25. }
  26. return true;
  27. });
  28. }
  29. public function install(ModuleInfo $module)
  30. {
  31. $model = $module->getModel();
  32. $model->attributes = $module->info;
  33. $model->type = Module::TYPE_CORE;
  34. $model->config = Json::encode($module->getInitConfig());
  35. $model->status = Module::STATUS_OPEN;
  36. if ($model->save()) {
  37. if (method_exists($module, 'install')) {
  38. return call_user_func([$module, 'install']);
  39. }
  40. return true;
  41. }
  42. return false;
  43. }
  44. public function uninstall(ModuleInfo $module)
  45. {
  46. if ($module->isCore) {
  47. return false;
  48. }
  49. $model = $module->getModel();
  50. if ($model->delete()) {
  51. if (method_exists($module, 'uninstall')) {
  52. call_user_func([$module, 'uninstall']);
  53. }
  54. return true;
  55. }
  56. return false;
  57. }
  58. public function open(ModuleInfo $module)
  59. {
  60. $model = $module->getModel();
  61. $model->status = 1;
  62. if ($model->save()) {
  63. if (method_exists($module, 'open')) {
  64. call_user_func([$module, 'open']);
  65. }
  66. return true;
  67. }
  68. return false;
  69. }
  70. public function close(ModuleInfo $module)
  71. {
  72. if ($module->isCore) {
  73. return false;
  74. }
  75. $model = $module->getModel();
  76. $model->status = 0;
  77. if ($model->save()) {
  78. if (method_exists($module, 'close')) {
  79. call_user_func([$module, 'close']);
  80. }
  81. return true;
  82. }
  83. return false;
  84. }
  85. public function upgrade()
  86. {
  87. }
  88. }