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 }
|