/** * 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; }