Browse Source

Implement solution for drupal issues 3089660 and 3045666

pull/931/head
Lucas van Schaik 2 years ago
parent
commit
74755f8074
  1. 12
      src/IslandoraContextManager.php

12
src/IslandoraContextManager.php

@ -48,7 +48,11 @@ class IslandoraContextManager extends ContextManager {
$conditions = $context->getConditions(); $conditions = $context->getConditions();
// Apply context to any context aware conditions. // Apply context to any context aware conditions.
$this->applyContexts($conditions, $provided); // Abort if the application of contexts has been unsuccessful
// similarly to BlockAccessControlHandler::checkAccess().
if (!$this->applyContexts($conditions, $provided)) {
return FALSE;
}
// Set the logic to use when validating the conditions. // Set the logic to use when validating the conditions.
$logic = $context->requiresAllConditions() $logic = $context->requiresAllConditions()
@ -76,6 +80,7 @@ class IslandoraContextManager extends ContextManager {
* TRUE if conditions pass * TRUE if conditions pass
*/ */
protected function applyContexts(ConditionPluginCollection &$conditions, array $provided = []) { protected function applyContexts(ConditionPluginCollection &$conditions, array $provided = []) {
$passed = FALSE;
foreach ($conditions as $condition) { foreach ($conditions as $condition) {
if ($condition instanceof ContextAwarePluginInterface) { if ($condition instanceof ContextAwarePluginInterface) {
try { try {
@ -86,14 +91,15 @@ class IslandoraContextManager extends ContextManager {
$contexts = $provided; $contexts = $provided;
} }
$this->contextHandler->applyContextMapping($condition, $contexts); $this->contextHandler->applyContextMapping($condition, $contexts);
$passed = TRUE;
} }
catch (ContextException $e) { catch (ContextException $e) {
return FALSE; continue;
} }
} }
} }
return TRUE; return $passed;
} }
} }

Loading…
Cancel
Save