You are here

function context_condition_context::execute in Context 7.3

Same name and namespace in other branches
  1. 6.3 plugins/context_condition_context.inc \context_condition_context::execute()
  2. 6 plugins/context_condition_context.inc \context_condition_context::execute()

Execute.

Overrides context_condition_path::execute

File

plugins/context_condition_context.inc, line 7

Class

context_condition_context
Expose active contexts as a context condition.

Code

function execute() {
  if ($this
    ->condition_used()) {
    $active_contexts = array_keys(context_active_contexts());
    foreach ($this
      ->get_contexts() as $context) {
      if (!in_array($context->name, $active_contexts, TRUE) && ($values = $this
        ->fetch_from_context($context, 'values'))) {

        // Always check against the active contexts.
        if ($this
          ->match(array_keys(context_active_contexts()), $values)) {
          $this
            ->condition_met($context);
        }
      }
    }

    // If the list of active contexts has changed, we need to recurse.
    if ($active_contexts != array_keys(context_active_contexts())) {
      $this
        ->execute();
    }
  }
}