public function ContextAny::evaluate in Context 8.4
Evaluates the condition and returns TRUE or FALSE accordingly.
Return value
bool TRUE if the condition has been met, FALSE otherwise.
Overrides ConditionInterface::evaluate
File
- src/
Plugin/ Condition/ ContextAny.php, line 122
Class
- ContextAny
- Provides a 'Context (any)' condition.
Namespace
Drupal\context\Plugin\ConditionCode
public function evaluate() {
$required_contexts = $negated_contexts = [];
$asterisk_context = '';
$values = array_filter(array_map('trim', explode("\n", $this->configuration['values'])));
if (empty($values)) {
return TRUE;
}
foreach ($values as $key) {
if (substr($key, 0, 1) == "~") {
$negated_contexts[] = substr($key, 1);
}
elseif (strpos($key, '*') !== FALSE) {
$asterisk_context = $key;
}
elseif (!empty($key)) {
$required_contexts[] = $key;
}
}
// Handle negated contexts first.
foreach ($negated_contexts as $name) {
/** @var \Drupal\context\ContextInterface $negated_context */
$negated_context = $this->contextManager
->getContext($name);
if ($this->contextManager
->evaluateContextConditions($negated_context) && !$negated_context
->disabled()) {
return FALSE;
}
}
// Now handle required contexts.
foreach ($required_contexts as $name) {
/** @var \Drupal\context\ContextInterface $required_context */
if ($required_context = $this->contextManager
->getContext($name)) {
if ($this->contextManager
->evaluateContextConditions($required_context) && !$required_context
->disabled()) {
return TRUE;
}
}
}
// Handle the asterisks/wildcard contexts.
/** @var \Drupal\context\ContextInterface $asterisk_contexts */
if ($asterisk_contexts = $this->contextManager
->getContext($asterisk_context)) {
foreach ($asterisk_contexts as $context) {
if ($this->contextManager
->evaluateContextConditions($context) && !$context
->disabled()) {
return TRUE;
}
}
}
return FALSE;
}