93 lines
2.0 KiB
PHP
93 lines
2.0 KiB
PHP
<?php
|
||
|
||
namespace plugin\admin\api;
|
||
|
||
class Install
|
||
{
|
||
/**
|
||
* 安装
|
||
*
|
||
* @param $version
|
||
* @return void
|
||
*/
|
||
public static function install($version)
|
||
{
|
||
// 导入菜单
|
||
Menu::import(static::getMenus());
|
||
}
|
||
|
||
/**
|
||
* 卸载
|
||
*
|
||
* @param $version
|
||
* @return void
|
||
*/
|
||
public static function uninstall($version)
|
||
{
|
||
// 删除菜单
|
||
foreach (static::getMenus() as $menu) {
|
||
Menu::delete($menu['name']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 更新
|
||
*
|
||
* @param $from_version
|
||
* @param $to_version
|
||
* @param $context
|
||
* @return void
|
||
*/
|
||
public static function update($from_version, $to_version, $context = null)
|
||
{
|
||
// 删除不用的菜单
|
||
if (isset($context['previous_menus'])) {
|
||
static::removeUnnecessaryMenus($context['previous_menus']);
|
||
}
|
||
// 导入新菜单
|
||
Menu::import(static::getMenus());
|
||
}
|
||
|
||
/**
|
||
* 更新前数据收集等
|
||
*
|
||
* @param $from_version
|
||
* @param $to_version
|
||
* @return array|array[]
|
||
*/
|
||
public static function beforeUpdate($from_version, $to_version)
|
||
{
|
||
// 在更新之前获得老菜单,通过context传递给 update
|
||
return ['previous_menus' => static::getMenus()];
|
||
}
|
||
|
||
/**
|
||
* 获取菜单
|
||
*
|
||
* @return array|mixed
|
||
*/
|
||
public static function getMenus()
|
||
{
|
||
clearstatcache();
|
||
if (is_file($menu_file = __DIR__ . '/../config/menu.php')) {
|
||
$menus = include $menu_file;
|
||
return $menus ?: [];
|
||
}
|
||
return [];
|
||
}
|
||
|
||
/**
|
||
* 删除不需要的菜单
|
||
*
|
||
* @param $previous_menus
|
||
* @return void
|
||
*/
|
||
public static function removeUnnecessaryMenus($previous_menus)
|
||
{
|
||
$menus_to_remove = array_diff(Menu::column($previous_menus, 'name'), Menu::column(static::getMenus(), 'name'));
|
||
foreach ($menus_to_remove as $name) {
|
||
Menu::delete($name);
|
||
}
|
||
}
|
||
|
||
} |