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, ''); }