Пример #1
0
 public static function getTree($iAdminID = 0)
 {
     $aWhere = array('iStatus' => 1);
     $aList = self::getAll(array('where' => $aWhere, 'order' => 'iMenuID ASC'));
     // 权限判断
     if ($iAdminID > 0) {
         $aMenuPermission = Model_Permission::getMenuPermissions($iAdminID);
     }
     // 是否查找当前菜单
     $bFind = 0;
     if ($iAdminID > 0) {
         $sUri = Yaf_G::getUrl();
     } else {
         $sUri = null;
     }
     // 排序及整理
     $aParentID = array();
     $aOrder = array();
     $aData = array();
     foreach ($aList as $aMenu) {
         if ($iAdminID > 0) {
             if ($aMenuPermission != -1 && !isset($aMenuPermission[$aMenu['iMenuID']])) {
                 continue;
             }
             $aMenu['iCurr'] = Yaf_G::getUrl($aMenu['sUrl']) == $sUri ? 1 : 0;
             if (!$bFind && $aMenu['iCurr'] == 1) {
                 $bFind = 1;
             }
         }
         $aParentID[] = $aMenu['iParentID'];
         $aOrder[] = $aMenu['iOrder'];
         unset($aMenu['iOrder'], $aMenu['iStatus'], $aMenu['iCreateTime'], $aMenu['iUpdateTime']);
         $aData[] = $aMenu;
     }
     unset($aList);
     array_multisort($aParentID, SORT_NUMERIC, SORT_ASC, $aOrder, SORT_NUMERIC, SORT_ASC, $aData);
     // 如果没有匹配的菜单,则从Cookie中获取
     if ($iAdminID > 0) {
         if (!$bFind) {
             $sUri = Util_Cookie::get('menu');
         } else {
             Util_Cookie::set('menu', $sUri);
         }
     }
     // 整理父节点
     $aParent = [];
     foreach ($aData as $aMenu) {
         if (!$bFind) {
             $aMenu['iCurr'] = Yaf_G::getUrl($aMenu['sUrl']) == $sUri ? 1 : 0;
         }
         $aParent[$aMenu['iParentID']][] = $aMenu;
     }
     unset($aMenu);
     return self::_buildTree($aParent, 0, 0, '');
 }