diff --git a/src/IslandoraContextManager.php b/src/IslandoraContextManager.php index c7228195..a8f18772 100644 --- a/src/IslandoraContextManager.php +++ b/src/IslandoraContextManager.php @@ -60,7 +60,11 @@ class IslandoraContextManager extends ContextManager { $conditions = $context->getConditions(); // 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. $logic = $context->requiresAllConditions() @@ -88,6 +92,7 @@ class IslandoraContextManager extends ContextManager { * TRUE if conditions pass */ protected function applyContexts(ConditionPluginCollection &$conditions, array $provided = []) { + $passed = FALSE; foreach ($conditions as $condition) { if ($condition instanceof ContextAwarePluginInterface) { try { @@ -98,14 +103,15 @@ class IslandoraContextManager extends ContextManager { $contexts = $provided; } $this->contextHandler->applyContextMapping($condition, $contexts); + $passed = TRUE; } catch (ContextException $e) { - return FALSE; + continue; } } } - return TRUE; + return $passed; } }