QyMenu.class.php
2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?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;
}
}