Page MenuHomeIn-Portal Phabricator

D491.id.diff
No OneTemporary

File Metadata

Created
Sat, Jun 28, 7:20 PM

D491.id.diff

Index: core/units/helpers/permissions_helper.php
===================================================================
--- core/units/helpers/permissions_helper.php
+++ core/units/helpers/permissions_helper.php
@@ -65,27 +65,33 @@
/**
* Returns permission names to check based on event name and item prefix (main item or subitem)
*
- * @param kEvent $event
- * @param Array $perm_mapping
- * @return Array
+ * @param kEvent $event Event.
+ * @param array $perm_mapping Perm mapping.
+ *
+ * @return array|true
+ * @throws Exception When event isn't mapped to any permission.
*/
- function getPermissionByEvent($event, $perm_mapping)
+ protected function getPermissionByEvent(kEvent $event, array $perm_mapping)
{
$top_prefix = $event->getEventParam('top_prefix');
-
$prefix_type = ($top_prefix == $event->Prefix) ? 'self' : 'subitem';
- $perm_mapping = getArrayValue($perm_mapping, $event->Name);
- if (!$perm_mapping[$prefix_type]) {
- throw new Exception('Permission mappings not defined for event <strong>' . $top_prefix . ' <- ' . $event->Prefix . ':' . $event->Name . '</strong>');
- }
+ if ( array_key_exists($event->Name, $perm_mapping)
+ && array_key_exists($prefix_type, $perm_mapping[$event->Name])
+ ) {
+ if ( $perm_mapping[$event->Name][$prefix_type] === true ) {
+ // Event is defined in mapping but is not checked by permissions.
+ return true;
+ }
- if ($perm_mapping[$prefix_type] === true) {
- // event is defined in mapping but is not checked by permissions
- return true;
+ return explode('|', $perm_mapping[$event->Name][$prefix_type]);
}
- return explode('|', $perm_mapping[$prefix_type]);
+ throw new Exception(sprintf(
+ 'Permission mappings not defined for event <strong>%s <- %s</strong>',
+ $top_prefix,
+ (string)$event
+ ));
}
/**

Event Timeline