QyMenu.class.php 2.45 KB
<?php
/**
 * QyMenu.class.php
 * 初始化菜单类
 * $Author$
 */
namespace Com;

use VcySDK\EnterprisePlugin;
use VcySDK\Exception;
use VcySDK\Service;

class QyMenu
{

    protected $_sdkPlugin = null;

    /**
     * 获取一个验证权限类的实例
     * @return QyMenu
     */
    public static function &instance()
    {

        static $instance = null;
        if (! $instance) {
            $instance = new QyMenu();
        }

        return $instance;
    }

    public function __construct()
    {

        $this->_sdkPlugin = new EnterprisePlugin(Service::instance());
    }

    /**
     * 获取初始化菜单
     *
     * @return array
     */
    public function getMenu()
    {

        // 获取所有菜单
        $menu = C('MENU');

        try {
            // 获取所有应用列表
            $pluginList = $this->_sdkPlugin->listAll();
        } catch (Exception $e) {
            $pluginList = array();
        }

        // 循环应用,并取出已安装应用对应的配置菜单
        $app_menu = array();
        foreach ($pluginList as $_plugin) {
            // 如果不是已安装的就跳过
            if (! $this->_sdkPlugin->isInstall($_plugin['available'])) {
                continue;
            }

            $_app_menu_dir = APP_PATH . '..' . D_S . ucfirst($_plugin['plIdentifier']) . D_S . 'Common' . D_S . 'Conf' . D_S . 'menu.php';
            // 如果文件不存在就跳过
            if (! file_exists($_app_menu_dir)) {
                continue;
            }

            // 应用对应的Menu
            $_app_menu_temp = load_config($_app_menu_dir);
            if (isset($_app_menu_temp['ManageMenu']) && ! empty($_app_menu_temp['ManageMenu'])) {
                $app_menu[] = $_app_menu_temp['ManageMenu'];
            }
        }

        $menu[1]['subMenu'] = $app_menu;

        return $menu;
    }


    /**
     * 超级管理员获取菜单
     *
     * @param array $list 初始化菜单
     *
     * @return array
     */
    public function SuperAdmin($list = array())
    {

        // 初始化菜单
        $data = array();
        // 遍历菜单
        foreach ($list as $key => $item) {
            $item['auth'] = 1;
            $data[] = $item;
            // 如果子集菜单不为空
            if (! empty($item['subMenu'])) {
                // 递归获取菜单
                $data[$key]['subMenu'] = $this->SuperAdmin($item['subMenu']);
            }
        }

        return $data;
    }

}