You are here

function context_condition_map in Context 6.3

Same name and namespace in other branches
  1. 6 context.module \context_condition_map()
  2. 6.2 context.module \context_condition_map()
  3. 7.3 context.module \context_condition_map()

Loads an associative array of conditions => context identifiers to allow contexts to be set by different conditions.

2 calls to context_condition_map()
context_condition::condition_used in plugins/context_condition.inc
Check whether this condition is used by any contexts. Can be used to prevent expensive condition checks from being triggered when no contexts use this condition.
context_condition::get_contexts in plugins/context_condition.inc
Retrieve all contexts with the condition value provided.

File

./context.module, line 383

Code

function context_condition_map($reset = FALSE) {
  static $condition_map;
  if (!isset($condition_map) || $reset) {
    if (!$reset && ($cache = context_cache_get('condition_map'))) {
      $condition_map = $cache;
    }
    else {
      $condition_map = array();
      foreach (array_keys(context_conditions()) as $condition) {
        if ($plugin = context_get_plugin('condition', $condition)) {
          foreach (context_enabled_contexts() as $context) {
            $values = $plugin
              ->fetch_from_context($context, 'values');
            foreach ($values as $value) {
              if (!isset($condition_map[$condition][$value])) {
                $condition_map[$condition][$value] = array();
              }
              $condition_map[$condition][$value][] = $context->name;
            }
          }
        }
      }
      context_cache_set('condition_map', $condition_map);
    }
  }
  return $condition_map;
}