Index: trunk/core/kernel/event_handler.php =================================================================== diff -u -r4637 -r4689 --- trunk/core/kernel/event_handler.php (.../event_handler.php) (revision 4637) +++ trunk/core/kernel/event_handler.php (.../event_handler.php) (revision 4689) @@ -308,46 +308,10 @@ */ function CheckPermission(&$event) { - $section = $event->getSection(); - $main_prefix = $this->Application->GetTopmostPrefix($event->Prefix); - - $pefix_type = ($main_prefix == $event->Prefix) ? 'self' : 'subitem'; - $perm_mapping = getArrayValue($this->permMapping, $event->Name); - - if (!$perm_mapping[$pefix_type]) { - trigger_error('Permission mappings not defined for event '.$main_prefix.' <- '.$event->Prefix.':'.$event->Name.'', E_USER_ERROR); - } - - $perm_status = false; - if ($perm_mapping[$pefix_type] === true) { - // event is defined in mapping but is not checked by permissions - return true; - } - - $check_perms = explode('|', $perm_mapping[$pefix_type]); - - foreach ($check_perms as $perm_name) { - // check if at least one of required permissions is set - $perm_name = $section.'.'.$perm_name; - $perm_status = $this->Application->CheckPermission($perm_name, 1); - if (($perm_name == $section.'.add') && $perm_status && ($main_prefix == $event->Prefix)) { - // main item, add permission allowed, but ID is > 0, then deny permission - // how to get id here - } - if ($perm_status) { - return $perm_status; - } - } - - if (!$perm_status) { - // for debugging purposes - $event->SetRedirectParam('section', $section); - $event->SetRedirectParam('main_prefix', $main_prefix); - $event->SetRedirectParam('event_name', $event->Name); - $event->status = erPERM_FAIL; - } - return $perm_status; + $perm_helper =& $this->Application->recallObject('PermissionsHelper'); + return $perm_helper->CheckPermission($event, $this->permMapping); } + }