/**
  * 取得所有后代节点ID
  *
  * @param integer $roleId
  * @return array
  */
 public function findDescendants($resourceId)
 {
     $relation = array();
     foreach ($this->_resourceDAO->fetchAll(array('resource_id > ?' => $resourceId)) as $row) {
         $relation[$row['resource_parent']][] = $row['resource_id'];
     }
     if (!array_key_exists($resourceId, $relation)) {
         $descendants = array();
     } else {
         $descendants = $relation[$resourceId];
         foreach ($relation as $parent => $resources) {
             if (in_array($parent, $descendants)) {
                 $descendants = array_merge($descendants, $resources);
             }
         }
     }
     return $descendants;
 }
示例#2
0
 /**
  * 取得角色所拥有的资源
  * 
  * @return ZtChart_Model_Db_Table_Rowset
  */
 public function getResources()
 {
     $resourceDAO = new ZtChart_Model_DbTable_Resource();
     $select = $resourceDAO->select()->order('resource_order');
     return $this->isAdmin() ? $resourceDAO->fetchAll($select->where('resource_parent = 0')) : (!empty($this->_roleRow) ? $this->_roleRow->findManyToManyRowset('ZtChart_Model_DbTable_Resource', 'ZtChart_Model_DbTable_Acl', null, null, $select) : array());
 }