You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.6 KiB
169 lines
4.6 KiB
<?php
|
|
|
|
namespace addons\shopro;
|
|
|
|
use think\Addons;
|
|
use app\common\library\Menu;
|
|
use app\admin\model\AuthRule;
|
|
use addons\shopro\library\Hook;
|
|
|
|
/**
|
|
* Shopro插件 v3.0.0
|
|
*/
|
|
class Shopro extends Addons
|
|
{
|
|
|
|
/**
|
|
* 插件安装方法
|
|
* @return bool
|
|
*/
|
|
public function install()
|
|
{
|
|
// 创建菜单
|
|
$menu = self::getMenu();
|
|
Menu::create($menu['new']);
|
|
|
|
// 插入 {$VUE_ELEMENTPLUS} 标识
|
|
self::addScript();
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 插件卸载方法
|
|
* @return bool
|
|
*/
|
|
public function uninstall()
|
|
{
|
|
// 删除菜单
|
|
Menu::delete('shopro');
|
|
|
|
// 移除 {$VUE_ELEMENTPLUS} 标识
|
|
self::delScript();
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 插件启用方法
|
|
*/
|
|
public function enable()
|
|
{
|
|
// 启用菜单
|
|
Menu::enable('shopro');
|
|
|
|
// 插入 {$VUE_ELEMENTPLUS} 标识
|
|
self::addScript();
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 插件更新方法
|
|
*/
|
|
public function upgrade()
|
|
{
|
|
// 更新菜单
|
|
$menu = self::getMenu();
|
|
Menu::upgrade('shopro', $menu['new']);
|
|
|
|
// 插入 {$VUE_ELEMENTPLUS} 标识
|
|
self::addScript();
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 插件禁用方法
|
|
*/
|
|
public function disable()
|
|
{
|
|
// 禁用菜单
|
|
Menu::disable('shopro');
|
|
|
|
// 移除 {$VUE_ELEMENTPLUS} 标识
|
|
self::delScript();
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
/**
|
|
* 应用初始化
|
|
*/
|
|
public function appInit()
|
|
{
|
|
// 公共方法
|
|
require_once __DIR__ . '/helper/helper.php';
|
|
|
|
// 覆盖队列 redis 参数
|
|
$queue = \think\Config::get('queue');
|
|
$redis = \think\Config::get('redis');
|
|
if ($queue && strtolower($queue['connector']) == 'redis' && $redis) {
|
|
$queue = array_merge($redis, $queue); // queue.php 中的配置,覆盖 redis.php 中的配置
|
|
\think\Config::set('queue', $queue);
|
|
}
|
|
|
|
// database 增加断线重连参数
|
|
$database = \think\Config::get('database');
|
|
$database['break_reconnect'] = true; // 断线重连
|
|
\think\Config::set('database', $database);
|
|
|
|
// 设置 vue element script
|
|
\think\View::share('VUE_ELEMENTPLUS', '
|
|
<link rel="stylesheet" href="/assets/addons/shopro/libs/element-plus/index.css">
|
|
<script src="/assets/addons/shopro/libs/vue.js"></script>
|
|
<script src="/assets/addons/shopro/libs/element-plus/index.js"></script>
|
|
<script src="/assets/addons/shopro/libs/element-plus/zh-cn.js"></script>
|
|
<script src="/assets/addons/shopro/libs/element-plus/icons-vue.js"></script>
|
|
<script src="/assets/addons/shopro/libs/sortable.js"></script>
|
|
<script src="/assets/addons/shopro/libs/vuedraggable.js"></script>
|
|
<script src="/assets/addons/shopro/libs/socket.io.js"></script>
|
|
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_2385137_b8qygb2jne.css">
|
|
');
|
|
|
|
// 全局注册行为事件
|
|
Hook::register();
|
|
|
|
if (request()->isCli()) {
|
|
\think\Console::addDefaultCommands([
|
|
'addons\shopro\console\ShoproChat',
|
|
'addons\shopro\console\ShoproHelp'
|
|
]);
|
|
}
|
|
}
|
|
|
|
private static function getMenu()
|
|
{
|
|
$newMenu = [];
|
|
$config_file = ADDON_PATH . "shopro" . DS . 'config' . DS . "menu.php";
|
|
if (is_file($config_file)) {
|
|
$newMenu = include $config_file;
|
|
}
|
|
$oldMenu = AuthRule::where('name', 'like', "shopro%")->select();
|
|
$oldMenu = array_column($oldMenu, null, 'name');
|
|
return ['new' => $newMenu, 'old' => $oldMenu];
|
|
}
|
|
|
|
|
|
private static function addScript()
|
|
{
|
|
$script_path = APP_PATH . 'admin/view/common/script.html';
|
|
$script = file_get_contents($script_path);
|
|
if (strpos($script, '{$VUE_ELEMENTPLUS}') === false) {
|
|
$script = '{$VUE_ELEMENTPLUS}' . $script;
|
|
file_put_contents($script_path, $script);
|
|
}
|
|
}
|
|
|
|
|
|
private static function delScript()
|
|
{
|
|
$script_path = APP_PATH . 'admin/view/common/script.html';
|
|
$script = file_get_contents($script_path);
|
|
if (strpos($script, '{$VUE_ELEMENTPLUS}') !== false) {
|
|
$script = str_replace('{$VUE_ELEMENTPLUS}', '', $script);
|
|
file_put_contents($script_path, $script);
|
|
}
|
|
}
|
|
}
|
|
|