/** * Returns a permission identified by the given id. * * @param unknown_type $permission_id * @return unknown */ public function &getPermission($permission_id) { $return_value = null; $permission_id = strtoupper($permission_id); if (key_exists($permission_id, $this->_permissions)) { $return_value = $this->_permissions[$permission_id]; } else { //lazy initialization of special permission PERMISSION_ALL: if ($permission_id == 'PERMISSION_ALL') { //PERMISSION_ALL: $return_value = new __Permission('PERMISSION_ALL', 0); foreach ($this->_permissions as &$permission) { $return_value->addPermission($permission); unset($permission); } $this->_permissions[$return_value->getId()] =& $return_value; } else { throw __ExceptionFactory::getInstance()->createException('ERR_UNKNOW_PERMISSION_ID', array($permission_id)); } } return $return_value; }
/** * This method add a {@link __Permission} instance to current role. * * @param __Permission $permission The permission to add to the current role */ public function addPermission(__Permission &$permission) { $this->_permissions[$permission->getId()] =& $permission; $this->_recalculateEquivalentPermission(); }
public final function addJuniorPermission(__Permission &$junior_permission) { $this->_junior_permissions[$junior_permission->getId()] =& $junior_permission; $this->_binary_representation = $this->_binary_representation | $junior_permission->_binary_representation; }