/** * 插件菜单注入 */ public static function PluginInjectMenu(array $conf) { $pluginId = $conf['id']; $lastPuginId = 0; if (isset($conf['menus']) && is_array($conf['menus']) && !empty($conf['menus'])) { foreach ($conf['menus'] as $cfg_name => $menu) { if (!self::CheckMenuCfgName($cfg_name)) { continue; } $params = array('cfg_value' => isset($menu['cfg_value']) ? $menu['cfg_value'] : '', 'cfg_comment' => isset($menu['cfg_comment']) ? $menu['cfg_comment'] : '', 'cfg_pid' => isset($menu['cfg_pid']) ? $menu['cfg_pid'] : 0, 'cfg_order' => isset($menu['cfg_order']) ? $menu['cfg_order'] : 0); if (empty($params['cfg_value']) || empty($params['cfg_comment'])) { continue; } $lastPuginId = SystemConfig::Set($cfg_name, $params); //if cfg_name == MAINMENU,需要设置 icon if ('MAINMENU' == $cfg_name) { $icon = isset($menu['icon']) ? $menu['icon'] : ''; if ($icon) { $iconid = SystemConfig::Set("ICONS", array('cfg_value' => $menu['cfg_comment'], 'cfg_comment' => $icon)); $pluginCfgName = strtoupper("plugin_{$pluginId}_ICON"); $pluginParams = array('cfg_value' => $iconid, 'cfg_comment' => $params['cfg_comment'] . ":ICON"); $lastid = SystemConfig::Set($pluginCfgName, $pluginParams); } } //对菜单项做记录 if ($lastPuginId > 0) { $pluginCfgName = strtoupper("plugin_{$pluginId}_{$cfg_name}"); $pluginParams = array('cfg_value' => $lastPuginId, 'cfg_comment' => $params['cfg_comment'] . ":" . $cfg_name); $lastid = SystemConfig::Set($pluginCfgName, $pluginParams); } //递归迭代写入子菜单,支持三级菜单 if ($lastPuginId && isset($menu['SUBMENU']) && !empty($menu['SUBMENU'])) { if (is_array($menu['SUBMENU'])) { foreach ($menu['SUBMENU'] as &$submenu) { $submenu['cfg_pid'] = $lastPuginId; $submenuconf = array('id' => $pluginId, 'menus' => array('SUBMENU' => $submenu)); $lastSubmenuId = self::PluginInjectMenu($submenuconf); if ($lastSubmenuId && isset($submenu['THIRDMENU']) && !empty($submenu['THIRDMENU'])) { if (is_array($submenu['THIRDMENU'])) { foreach ($submenu['THIRDMENU'] as &$thirdmenu) { $thirdmenu['cfg_pid'] = $lastSubmenuId; $thirdmenuconf = array('id' => $pluginId, 'menus' => array('THIRDMENU' => $thirdmenu)); $lastThirdmenuId = self::PluginInjectMenu($thirdmenuconf); } } } } } } } } return $lastPuginId; }