Shopro.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. namespace addons\shopro;
  3. use think\Addons;
  4. use app\common\library\Menu;
  5. use app\admin\model\AuthRule;
  6. use addons\shopro\library\Hook;
  7. /**
  8. * Shopro插件 v3.0.0
  9. */
  10. class Shopro extends Addons
  11. {
  12. /**
  13. * 插件安装方法
  14. * @return bool
  15. */
  16. public function install()
  17. {
  18. // 创建菜单
  19. $menu = self::getMenu();
  20. Menu::create($menu['new']);
  21. return true;
  22. }
  23. /**
  24. * 插件卸载方法
  25. * @return bool
  26. */
  27. public function uninstall()
  28. {
  29. // 删除菜单
  30. Menu::delete('shopro');
  31. return true;
  32. }
  33. /**
  34. * 插件启用方法
  35. */
  36. public function enable()
  37. {
  38. // 启用菜单
  39. Menu::enable('shopro');
  40. return true;
  41. }
  42. /**
  43. * 插件更新方法
  44. */
  45. public function upgrade()
  46. {
  47. // 更新菜单
  48. $menu = self::getMenu();
  49. Menu::upgrade('shopro', $menu['new']);
  50. return true;
  51. }
  52. /**
  53. * 插件禁用方法
  54. */
  55. public function disable()
  56. {
  57. // 禁用菜单
  58. Menu::disable('shopro');
  59. return true;
  60. }
  61. /**
  62. * 应用初始化
  63. */
  64. public function appInit()
  65. {
  66. // 公共方法
  67. require_once __DIR__ . '/helper/helper.php';
  68. // 覆盖队列 redis 参数
  69. $queue = \think\Config::get('queue');
  70. $redis = \think\Config::get('redis');
  71. if ($queue && strtolower($queue['connector']) == 'redis' && $redis) {
  72. $queue = array_merge($redis, $queue); // queue.php 中的配置,覆盖 redis.php 中的配置
  73. \think\Config::set('queue', $queue);
  74. }
  75. // database 增加断线重连参数
  76. $database = \think\Config::get('database');
  77. $database['break_reconnect'] = true; // 断线重连
  78. \think\Config::set('database', $database);
  79. // 全局注册行为事件
  80. Hook::register();
  81. if (request()->isCli()) {
  82. \think\Console::addDefaultCommands([
  83. 'addons\shopro\console\ShoproChat',
  84. 'addons\shopro\console\ShoproHelp'
  85. ]);
  86. }
  87. // 全局共享 暗色类型 变量
  88. \think\View::share('DARK_TYPE', $this->getDarkType());
  89. }
  90. public function configInit(&$config)
  91. {
  92. // 全局 js共享 暗色类型 变量
  93. $config['dark_type'] = $this->getDarkType();
  94. }
  95. private static function getMenu()
  96. {
  97. $newMenu = [];
  98. $config_file = ADDON_PATH . "shopro" . DS . 'config' . DS . "menu.php";
  99. if (is_file($config_file)) {
  100. $newMenu = include $config_file;
  101. }
  102. $oldMenu = AuthRule::where('name', 'like', "shopro%")->select();
  103. $oldMenu = array_column($oldMenu, null, 'name');
  104. return ['new' => $newMenu, 'old' => $oldMenu];
  105. }
  106. /**
  107. * 获取暗黑类型
  108. *
  109. * @return string
  110. */
  111. private function getDarkType()
  112. {
  113. $dark_type = 'none';
  114. if (in_array('darktheme', get_addonnames())) {
  115. // 有暗黑主题
  116. $darkthemeConfig = get_addon_config('darktheme');
  117. $dark_type = $darkthemeConfig['mode'] ?? 'none';
  118. $thememode = cookie("thememode");
  119. if ($thememode && in_array($thememode, ['dark', 'light'])) {
  120. $dark_type = $thememode;
  121. }
  122. }
  123. return $dark_type;
  124. }
  125. }