コード例 #1
0
ファイル: Mplugin.php プロジェクト: keyeMyria/YetCMS
 /**
  * 插件菜单注入
  */
 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;
 }