function ContextHandler::filterPluginDefinitionsByContexts
Same name in other branches
- 9 core/lib/Drupal/Core/Plugin/Context/ContextHandler.php \Drupal\Core\Plugin\Context\ContextHandler::filterPluginDefinitionsByContexts()
- 10 core/lib/Drupal/Core/Plugin/Context/ContextHandler.php \Drupal\Core\Plugin\Context\ContextHandler::filterPluginDefinitionsByContexts()
- 11.x core/lib/Drupal/Core/Plugin/Context/ContextHandler.php \Drupal\Core\Plugin\Context\ContextHandler::filterPluginDefinitionsByContexts()
Overrides ContextHandlerInterface::filterPluginDefinitionsByContexts
File
-
core/
lib/ Drupal/ Core/ Plugin/ Context/ ContextHandler.php, line 20
Class
- ContextHandler
- Provides methods to handle sets of contexts.
Namespace
Drupal\Core\Plugin\ContextCode
public function filterPluginDefinitionsByContexts(array $contexts, array $definitions) {
$checked_requirements = [];
return array_filter($definitions, function ($plugin_definition) use ($contexts, &$checked_requirements) {
$context_definitions = $this->getContextDefinitions($plugin_definition);
if ($context_definitions) {
// Generate a unique key for the current context definitions. This will
// allow calling checkRequirements() once for all plugins that have the
// same context definitions.
$context_definitions_key = hash('sha256', serialize($context_definitions));
if (!isset($checked_requirements[$context_definitions_key])) {
// Check the set of contexts against the requirements.
$checked_requirements[$context_definitions_key] = $this->checkRequirements($contexts, $context_definitions);
}
return $checked_requirements[$context_definitions_key];
}
// If this plugin doesn't need any context, it is available to use.
return TRUE;
});
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.