| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?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);
- }
- }
- }
|