Exemplo n.º 1
0
Arquivo: Menu.php Projeto: pancke/yyaf
 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, '');
 }
Exemplo n.º 2
0
Arquivo: Uri.php Projeto: pancke/yyaf
 /**
  * 生成新的搜索URL
  *
  * @param unknown $aParam            
  * @param unknown $sReplaceKey            
  * @param unknown $sNewValue            
  */
 public static function makeSearchUrl($aParam, $sReplaceKey, $sNewValue, $iSelect = 0, $sUri = null)
 {
     unset($aParam['page']);
     if (!is_array($sReplaceKey)) {
         $sReplaceKey = array($sReplaceKey);
         $sNewValue = array($sNewValue);
     }
     foreach ($sReplaceKey as $k => $v) {
         $aParam = self::makeSearchParam($aParam, $sReplaceKey[$k], $sNewValue[$k], $iSelect);
     }
     return Yaf_G::getUrl($sUri, $aParam) . '.html';
 }
Exemplo n.º 3
0
 /**
  * 生成权限点
  */
 public function makeAction()
 {
     $aMenuList = Model_Menu::getMenus();
     $aCtrClass = array();
     $aMenuAction = array();
     foreach ($aMenuList as $aMenu) {
         if ($aMenu['bIsLeaf']) {
             $aRoute = Yaf_G::getRoute($aMenu['sUrl']);
             $aMenuAction[$aRoute['module'] . '_' . $aRoute['controller'] . '_' . $aRoute['action']] = $aMenu['sMenuName'];
             $aCtrClass[$aRoute['module'] . '_' . $aRoute['controller']] = array('iMenuID' => $aMenu['iMenuID'], 'sMenuName' => $aMenu['sMenuName'], 'sUrl' => $aMenu['sUrl']);
         }
     }
     $aPermission = array();
     foreach ($aCtrClass as $sCtrClass => $aMenu) {
         try {
             $sCtrClass = 'Controller_' . $sCtrClass;
             if (class_exists($sCtrClass)) {
                 $oCtr = new ReflectionClass($sCtrClass);
                 $aMethod = $oCtr->getMethods();
                 foreach ($aMethod as $oMethod) {
                     $sAction = $oMethod->getName();
                     if (substr($sAction, -6) === 'Action') {
                         $sAction = substr($sAction, 0, -6);
                         $aRow = array($aMenu['iMenuID']);
                         $aRow[] = Yaf_G::routeToUrl($sCtrClass . '_' . $sAction);
                         $sDoc = $oMethod->getDocComment();
                         $matches = null;
                         if (preg_match('/\\s+\\*\\s+(.+)/i', $sDoc, $matches)) {
                             $aRow[] = $matches[1];
                         } elseif (isset($aMenuAction[$sCtrClass . '_' . $sAction])) {
                             $aRow[] = $aMenuAction[$sCtrClass . '_' . $sAction];
                         } else {
                             $aRow[] = $aMenu['sMenuName'] . '::' . $sAction;
                         }
                         $aPermission[] = $aRow;
                     }
                 }
             }
         } catch (Exception $e) {
             $aPermission[] = array($aMenu['iMenuID'], Yaf_G::getUrl($aMenu['sUrl']), $aMenu['sMenuName']);
         }
     }
     $iCnt = 0;
     foreach ($aPermission as $v) {
         $aRow = Model_Permission::getRow(array('where' => array('sPath' => $v[1])));
         if (empty($aRow)) {
             $aRow = array('iMenuID' => $v[0], 'sPermissionName' => $v[2], 'sPath' => $v[1]);
             Model_Permission::addData($aRow);
             $iCnt++;
         } else {
             $aRow['iMenuID'] = $v[0];
             $aRow['sPermissionName'] = $v[2];
             Model_Permission::updData($aRow);
             $iCnt++;
         }
     }
     return $this->showMsg('本次生成权限点【' . $iCnt . '】个', true);
 }
Exemplo n.º 4
0
 public static function getUrl($sAction = null, $aParam = null, $bFullPath = false, $sDomain = null, $sPostfix = null)
 {
     return Yaf_G::getUrl($sAction, $aParam, $bFullPath, $sDomain, $sPostfix);
 }
Exemplo n.º 5
0
 public function permissionAction()
 {
     $aMenuList = Model_Menu::getMenus();
     $aCtrClass = array();
     $aMenuAction = array();
     foreach ($aMenuList as $aMenu) {
         if ($aMenu['bIsLeaf']) {
             $aRoute = Yaf_G::getRoute($aMenu['sUrl']);
             $aMenuAction[$aRoute['module'] . '_' . $aRoute['controller'] . '_' . $aRoute['action']] = $aMenu['sMenuName'];
             $aCtrClass[$aRoute['module'] . '_' . $aRoute['controller']] = array('iMenuID' => $aMenu['iMenuID'], 'sMenuName' => $aMenu['sMenuName'], 'sUrl' => $aMenu['sUrl']);
         }
     }
     $aPermission = array();
     foreach ($aCtrClass as $sCtrClass => $aMenu) {
         try {
             $sCtrClass = 'Controller_' . $sCtrClass;
             if (class_exists($sCtrClass)) {
                 $oCtr = new ReflectionClass($sCtrClass);
                 $aMethod = $oCtr->getMethods();
                 foreach ($aMethod as $oMethod) {
                     $sAction = $oMethod->getName();
                     if (substr($sAction, -6) === 'Action') {
                         $sAction = substr($sAction, 0, -6);
                         $aRow = array($aMenu['iMenuID']);
                         $aRow[] = Yaf_G::routeToUrl($sCtrClass . '_' . $sAction);
                         $sDoc = $oMethod->getDocComment();
                         $matches = null;
                         if (preg_match('/\\s+\\*\\s+(.+)/i', $sDoc, $matches)) {
                             $aRow[] = $matches[1];
                         } elseif (isset($aMenuAction[$sCtrClass . '_' . $sAction])) {
                             $aRow[] = $aMenuAction[$sCtrClass . '_' . $sAction];
                         } else {
                             $aRow[] = $aMenu['sMenuName'] . '::' . $sAction;
                         }
                         $aPermission[] = $aRow;
                     }
                 }
             }
         } catch (Exception $e) {
             $aPermission[] = array($aMenu['iMenuID'], Yaf_G::getUrl($aMenu['sUrl']), $aMenu['sMenuName']);
         }
     }
     $this->showMsg($aPermission, true);
 }