Mercurial > hg > isophonics-drupal-site
annotate core/lib/Drupal/Component/Plugin/Definition/ContextAwarePluginDefinitionTrait.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@17 | 1 <?php |
Chris@17 | 2 |
Chris@17 | 3 namespace Drupal\Component\Plugin\Definition; |
Chris@17 | 4 |
Chris@17 | 5 use Drupal\Component\Plugin\Context\ContextDefinitionInterface; |
Chris@17 | 6 use Drupal\Component\Plugin\Exception\ContextException; |
Chris@17 | 7 |
Chris@17 | 8 /** |
Chris@17 | 9 * Provides a trait for context-aware object-based plugin definitions. |
Chris@17 | 10 */ |
Chris@17 | 11 trait ContextAwarePluginDefinitionTrait { |
Chris@17 | 12 |
Chris@17 | 13 /** |
Chris@17 | 14 * The context definitions for this plugin definition. |
Chris@17 | 15 * |
Chris@17 | 16 * @var \Drupal\Component\Plugin\Context\ContextDefinitionInterface[] |
Chris@17 | 17 */ |
Chris@17 | 18 protected $contextDefinitions = []; |
Chris@17 | 19 |
Chris@17 | 20 /** |
Chris@17 | 21 * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::hasContextDefinition(). |
Chris@17 | 22 */ |
Chris@17 | 23 public function hasContextDefinition($name) { |
Chris@17 | 24 return array_key_exists($name, $this->contextDefinitions); |
Chris@17 | 25 } |
Chris@17 | 26 |
Chris@17 | 27 /** |
Chris@17 | 28 * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::getContextDefinitions(). |
Chris@17 | 29 */ |
Chris@17 | 30 public function getContextDefinitions() { |
Chris@17 | 31 return $this->contextDefinitions; |
Chris@17 | 32 } |
Chris@17 | 33 |
Chris@17 | 34 /** |
Chris@17 | 35 * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::getContextDefinition(). |
Chris@17 | 36 */ |
Chris@17 | 37 public function getContextDefinition($name) { |
Chris@17 | 38 if ($this->hasContextDefinition($name)) { |
Chris@17 | 39 return $this->contextDefinitions[$name]; |
Chris@17 | 40 } |
Chris@17 | 41 throw new ContextException($this->id() . " does not define a '$name' context"); |
Chris@17 | 42 } |
Chris@17 | 43 |
Chris@17 | 44 /** |
Chris@17 | 45 * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::addContextDefinition(). |
Chris@17 | 46 */ |
Chris@17 | 47 public function addContextDefinition($name, ContextDefinitionInterface $definition) { |
Chris@17 | 48 $this->contextDefinitions[$name] = $definition; |
Chris@17 | 49 return $this; |
Chris@17 | 50 } |
Chris@17 | 51 |
Chris@17 | 52 /** |
Chris@17 | 53 * Implements \Drupal\Component\Plugin\Definition\ContextAwarePluginDefinitionInterface::removeContextDefinition(). |
Chris@17 | 54 */ |
Chris@17 | 55 public function removeContextDefinition($name) { |
Chris@17 | 56 unset($this->contextDefinitions[$name]); |
Chris@17 | 57 return $this; |
Chris@17 | 58 } |
Chris@17 | 59 |
Chris@17 | 60 } |