ContextHandlerInterface.php

Same filename and directory in other branches
  1. 9 core/lib/Drupal/Core/Plugin/Context/ContextHandlerInterface.php
  2. 10 core/lib/Drupal/Core/Plugin/Context/ContextHandlerInterface.php
  3. 11.x core/lib/Drupal/Core/Plugin/Context/ContextHandlerInterface.php

Namespace

Drupal\Core\Plugin\Context

File

core/lib/Drupal/Core/Plugin/Context/ContextHandlerInterface.php

View source
<?php

namespace Drupal\Core\Plugin\Context;

use Drupal\Core\Plugin\ContextAwarePluginInterface;

/**
 * Provides an interface for handling sets of contexts.
 */
interface ContextHandlerInterface {
    
    /**
     * Determines plugins whose constraints are satisfied by a set of contexts.
     *
     * @todo Use context definition objects after
     *   https://www.drupal.org/node/2281635.
     *
     * @param \Drupal\Component\Plugin\Context\ContextInterface[] $contexts
     *   An array of contexts.
     * @param array $definitions
     *   An array of plugin definitions.
     *
     * @return array
     *   An array of plugin definitions.
     */
    public function filterPluginDefinitionsByContexts(array $contexts, array $definitions);
    
    /**
     * Checks a set of requirements against a set of contexts.
     *
     * @todo Use context definition objects after
     *   https://www.drupal.org/node/2281635.
     *
     * @param \Drupal\Component\Plugin\Context\ContextInterface[] $contexts
     *   An array of available contexts.
     * @param \Drupal\Core\TypedData\DataDefinitionInterface[] $requirements
     *   An array of requirements.
     *
     * @return bool
     *   TRUE if all of the requirements are satisfied by the context, FALSE
     *   otherwise.
     */
    public function checkRequirements(array $contexts, array $requirements);
    
    /**
     * Determines which contexts satisfy the constraints of a given definition.
     *
     * @todo Use context definition objects after
     *   https://www.drupal.org/node/2281635.
     *
     * @param \Drupal\Component\Plugin\Context\ContextInterface[] $contexts
     *   An array of contexts.
     * @param \Drupal\Core\Plugin\Context\ContextDefinitionInterface $definition
     *   The definition to satisfy.
     *
     * @return \Drupal\Component\Plugin\Context\ContextInterface[]
     *   An array of matching contexts.
     */
    public function getMatchingContexts(array $contexts, ContextDefinitionInterface $definition);
    
    /**
     * Prepares a plugin for evaluation.
     *
     * @param \Drupal\Core\Plugin\ContextAwarePluginInterface $plugin
     *   A plugin about to be evaluated.
     * @param \Drupal\Core\Plugin\Context\ContextInterface[] $contexts
     *   An array of contexts to set on the plugin. They will only be set if they
     *   match the plugin's context definitions.
     * @param array $mappings
     *   (optional) A mapping of the expected assignment names to their context
     *   names. For example, if one of the $contexts is named 'current_user', but the
     *   plugin expects a context named 'user', then this map would contain
     *   'user' => 'current_user'.
     *
     * @throws \Drupal\Component\Plugin\Exception\ContextException
     *   Thrown when a context assignment was not satisfied.
     * @throws \Drupal\Component\Plugin\Exception\MissingValueContextException
     *   Thrown when a context is provided but has no value. Only thrown if
     *   no contexts are missing.
     */
    public function applyContextMapping(ContextAwarePluginInterface $plugin, $contexts, $mappings = []);

}

Interfaces

Title Deprecated Summary
ContextHandlerInterface Provides an interface for handling sets of contexts.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.