You are here

public function ContextAny::getCacheContexts in Context 8.4

The cache contexts associated with this object.

These identify a specific variation/representation of the object.

Cache contexts are tokens: placeholders that are converted to cache keys by the @cache_contexts_manager service. The replacement value depends on the request context (the current URL, language, and so on). They're converted before storing an object in cache.

Return value

string[] An array of cache context tokens, used to generate a cache ID.

Overrides ContextAwarePluginBase::getCacheContexts

See also

\Drupal\Core\Cache\Context\CacheContextsManager::convertTokensToKeys()

File

src/Plugin/Condition/ContextAny.php, line 67

Class

ContextAny
Provides a 'Context (any)' condition.

Namespace

Drupal\context\Plugin\Condition

Code

public function getCacheContexts() {
  $cache_contexts = parent::getCacheContexts();
  $contexts = array_filter(array_map('trim', explode("\n", $this->configuration['values'])));
  foreach ($contexts as $id) {

    // Strip out `~` for negated contexts.
    $id = ltrim($id, '~');

    /** @var \Drupal\context\ContextInterface $context */
    $context = $this->contextManager
      ->getContext($id);

    /** @var \Drupal\Core\Condition\ConditionInterface[] $context_conditions */
    $context_conditions = $context
      ->getConditions();
    foreach ($context_conditions as $condition) {
      $cache_contexts = Cache::mergeContexts($cache_contexts, $condition
        ->getCacheContexts());
    }
  }
  return $cache_contexts;
}