/** * 取得所有后代节点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; }
/** * 取得角色所拥有的资源 * * @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()); }