. */ /** * Provide default layout module * * @license http://opensource.org/licenses/gpl-license.php GNU Public License */ require_once(FILESYSTEMROOTPATH."include/classes/Access.php"); class EventsAccess extends Access { /** * Define All Available Accesses of the Events Project * */ public static function eventsConsts() { $Service = $GLOBALS['ClassFactory']->getAccessService(); $accesses = $Service->loadAll(); foreach ( $accesses as $const => $access ){ define(strtoupper($const),$access); } } /** * Check if the current logged in user has a certain access level * * @param int requiredLevel: required access level * @param string BodyCode: BodyCode the access is required for * @return boolean: true in case user has required access level, false otherwise */ public static function hasAccess($requiredLevel, $BodyCode = NULL) { if( in_array($requiredLevel, $_SESSION['sess_access_bodyCodes']['ALL_BODIES']) ) return true; if( isset($_SESSION['sess_access_bodyCodes'][$BodyCode]) ) { if( self::isAccess($requiredLevel) ) { if( in_array($requiredLevel, $_SESSION['sess_access_bodyCodes'][$BodyCode]) ) return true; } } return false; } /** * Check if the provided access level exists * * @param int access: access level * @return boolean: true in case the access level exists, false otherwise */ public static function isAccess($access) { if ( ! is_numeric($access) ) return false; $accesses=array_merge(self::getAccesses(), self::getEventsAccesses()); sort($accesses); return in_array($access, $accesses); } /** * Register in the $_SESSION all accesses a person has for the Events Project * */ public static function loadEventsAccess() { if( ! $_SESSION['sess_access_events_set'] ) { $_SESSION['sess_access_events_set']=true; $Service = $GLOBALS['ClassFactory']->getAccessService(); if( is_array($_SESSION[sess_access_bodyCodes])){ foreach ($_SESSION[sess_access_bodyCodes] as $body=>$accesses){ foreach ($accesses as $name=>$value){ if(Access::isAccess($value)){//register pre-defined values of the core $_SESSION['sess_access_bodyCodes'][$body] = array_merge($_SESSION['sess_access_bodyCodes'][$body], $Service->loadStructural($value)); }else{ $_SESSION['sess_access_bodyCodes'][$body] = array_merge($_SESSION['sess_access_bodyCodes'][$body], $Service->loadNonStructural($name, 0)); $_SESSION['sess_access_bodyCodes']['ALL_BODIES'] = array_merge($_SESSION['sess_access_bodyCodes']['ALL_BODIES'], $Service->loadNonStructural($name, 1)); } } } } } } /** * Get an array of all access levels of the Events Project * * @return array: array of accesses */ public static function getEventsAccesses() { $Service = $GLOBALS['ClassFactory']->getAccessService(); return $Service->loadAllValues(); } } ?>