PluginManager.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 plugins\Plugin;
  11. use yii\helpers\Json;
  12. class PluginManager extends PackageManager
  13. {
  14. public $paths = ['@plugins'];
  15. public $namespace = 'plugins\\';
  16. public $infoClass = 'Plugin';
  17. public function install(Plugin $plugin)
  18. {
  19. try {
  20. if ($plugin->install()) {
  21. $model = $plugin->getModel();
  22. $model->attributes = $plugin->info;
  23. $model->config = Json::encode($plugin->getInitConfig());
  24. $model->status = Module::STATUS_OPEN;
  25. return $model->save();
  26. }
  27. return false;
  28. } catch(\Exception $e) {
  29. return false;
  30. }
  31. }
  32. public function uninstall(Plugin $plugin)
  33. {
  34. try {
  35. if ($plugin->uninstall()) {
  36. $model = $plugin->getModel();
  37. return $model->delete();
  38. }
  39. return false;
  40. } catch(\Exception $e) {
  41. return false;
  42. }
  43. }
  44. public function open(Plugin $plugin)
  45. {
  46. $model = $plugin->getModel();
  47. $model->status = 1;
  48. return $model->save();
  49. }
  50. public function close(Plugin $plugin)
  51. {
  52. $model = $plugin->getModel();
  53. $model->status = 0;
  54. return $model->save();
  55. }
  56. public function upgrade()
  57. {
  58. }
  59. }