Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0 / 0 |
|
100.00% |
0 / 0 |
CRAP | |
100.00% |
0 / 0 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Plugin\Context\ContextProviderInterface. | |
*/ | |
namespace Drupal\Core\Plugin\Context; | |
/** | |
* Defines an interface for providing plugin contexts. | |
* | |
* Implementations only need to deal with unqualified context IDs so they only | |
* need to be unique in the context of a given service provider. | |
* | |
* The fully qualified context ID then includes the service ID: | |
* @{service_id}:{unqualified_context_id}. | |
* | |
* @see \Drupal\Core\Plugin\Context\ContextRepositoryInterface | |
*/ | |
interface ContextProviderInterface { | |
/** | |
* Gets runtime context values for the given context IDs. | |
* | |
* For context-aware plugins to function correctly, all of the contexts that | |
* they require must be populated with values. So this method should set a | |
* value for each context that it adds. For example: | |
* | |
* @code | |
* // Determine a specific node to pass as context to a block. | |
* $node = ... | |
* | |
* // Set that specific node as the value of the 'node' context. | |
* $context = new Context(new ContextDefinition('entity:node'), $node); | |
* return ['node' => $context]; | |
* @endcode | |
* | |
* On the other hand, there are cases, on which providers no longer are | |
* possible to provide context objects, even without the value, so the caller | |
* should not expect it. | |
* | |
* @param string[] $unqualified_context_ids | |
* The requested context IDs. The context provider must only return contexts | |
* for those IDs. | |
* | |
* @return \Drupal\Core\Plugin\Context\ContextInterface[] | |
* The determined available contexts, keyed by the unqualified context_id. | |
* | |
* @see \Drupal\Core\Plugin\Context\ContextProviderInterface:getAvailableContexts() | |
*/ | |
public function getRuntimeContexts(array $unqualified_context_ids); | |
/** | |
* Gets all available contexts for the purposes of configuration. | |
* | |
* When a context aware plugin is being configured, the configuration UI must | |
* know which named contexts are potentially available, but does not care | |
* about the value, since the value can be different for each request, and | |
* might not be available at all during the configuration UI's request. | |
* | |
* For example: | |
* @code | |
* // During configuration, there is no specific node to pass as context. | |
* // However, inform the system that a context named 'node' is | |
* // available, and provide its definition, so that context aware plugins | |
* // can be configured to use it. When the plugin, for example a block, | |
* // needs to evaluate the context, the value of this context will be | |
* // supplied by getRuntimeContexts(). | |
* $context = new Context(new ContextDefinition('entity:node')); | |
* return ['node' => $context]; | |
* @endcode | |
* | |
* @return \Drupal\Core\Plugin\Context\ContextInterface[] | |
* All available contexts keyed by the unqualified context ID. | |
* | |
* @see \Drupal\Core\Plugin\Context\ContextProviderInterface::getRuntimeContext() | |
*/ | |
public function getAvailableContexts(); | |
} |