Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Core\Condition;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Executable\ExecutableManagerInterface;
|
Chris@0
|
6 use Drupal\Core\Executable\ExecutablePluginBase;
|
Chris@0
|
7 use Drupal\Core\Form\FormStateInterface;
|
Chris@0
|
8 use Drupal\Core\Form\SubformStateInterface;
|
Chris@0
|
9 use Drupal\Core\Plugin\ContextAwarePluginAssignmentTrait;
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Provides a basis for fulfilling contexts for condition plugins.
|
Chris@0
|
13 *
|
Chris@0
|
14 * @see \Drupal\Core\Condition\Annotation\Condition
|
Chris@0
|
15 * @see \Drupal\Core\Condition\ConditionInterface
|
Chris@0
|
16 * @see \Drupal\Core\Condition\ConditionManager
|
Chris@0
|
17 *
|
Chris@0
|
18 * @ingroup plugin_api
|
Chris@0
|
19 */
|
Chris@0
|
20 abstract class ConditionPluginBase extends ExecutablePluginBase implements ConditionInterface {
|
Chris@0
|
21
|
Chris@0
|
22 use ContextAwarePluginAssignmentTrait;
|
Chris@0
|
23
|
Chris@0
|
24 /**
|
Chris@0
|
25 * The condition manager to proxy execute calls through.
|
Chris@0
|
26 *
|
Chris@0
|
27 * @var \Drupal\Core\Executable\ExecutableInterface
|
Chris@0
|
28 */
|
Chris@0
|
29 protected $executableManager;
|
Chris@0
|
30
|
Chris@0
|
31 /**
|
Chris@0
|
32 * {@inheritdoc}
|
Chris@0
|
33 */
|
Chris@0
|
34 public function __construct(array $configuration, $plugin_id, $plugin_definition) {
|
Chris@0
|
35 parent::__construct($configuration, $plugin_id, $plugin_definition);
|
Chris@0
|
36
|
Chris@0
|
37 $this->setConfiguration($configuration);
|
Chris@0
|
38 }
|
Chris@0
|
39
|
Chris@0
|
40 /**
|
Chris@0
|
41 * {@inheritdoc}
|
Chris@0
|
42 */
|
Chris@0
|
43 public function isNegated() {
|
Chris@0
|
44 return !empty($this->configuration['negate']);
|
Chris@0
|
45 }
|
Chris@0
|
46
|
Chris@0
|
47 /**
|
Chris@0
|
48 * {@inheritdoc}
|
Chris@0
|
49 */
|
Chris@0
|
50 public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
|
Chris@0
|
51 if ($form_state instanceof SubformStateInterface) {
|
Chris@0
|
52 $form_state = $form_state->getCompleteFormState();
|
Chris@0
|
53 }
|
Chris@0
|
54 $contexts = $form_state->getTemporaryValue('gathered_contexts') ?: [];
|
Chris@0
|
55 $form['context_mapping'] = $this->addContextAssignmentElement($this, $contexts);
|
Chris@0
|
56 $form['negate'] = [
|
Chris@0
|
57 '#type' => 'checkbox',
|
Chris@0
|
58 '#title' => $this->t('Negate the condition'),
|
Chris@0
|
59 '#default_value' => $this->configuration['negate'],
|
Chris@0
|
60 ];
|
Chris@0
|
61 return $form;
|
Chris@0
|
62 }
|
Chris@0
|
63
|
Chris@0
|
64 /**
|
Chris@0
|
65 * {@inheritdoc}
|
Chris@0
|
66 */
|
Chris@0
|
67 public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
|
Chris@0
|
68 }
|
Chris@0
|
69
|
Chris@0
|
70 /**
|
Chris@0
|
71 * {@inheritdoc}
|
Chris@0
|
72 */
|
Chris@0
|
73 public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
|
Chris@0
|
74 $this->configuration['negate'] = $form_state->getValue('negate');
|
Chris@0
|
75 if ($form_state->hasValue('context_mapping')) {
|
Chris@0
|
76 $this->setContextMapping($form_state->getValue('context_mapping'));
|
Chris@0
|
77 }
|
Chris@0
|
78 }
|
Chris@0
|
79
|
Chris@0
|
80 /**
|
Chris@0
|
81 * {@inheritdoc}
|
Chris@0
|
82 */
|
Chris@0
|
83 public function execute() {
|
Chris@0
|
84 return $this->executableManager->execute($this);
|
Chris@0
|
85 }
|
Chris@0
|
86
|
Chris@0
|
87 /**
|
Chris@0
|
88 * {@inheritdoc}
|
Chris@0
|
89 */
|
Chris@0
|
90 public function getConfiguration() {
|
Chris@0
|
91 return [
|
Chris@0
|
92 'id' => $this->getPluginId(),
|
Chris@0
|
93 ] + $this->configuration;
|
Chris@0
|
94 }
|
Chris@0
|
95
|
Chris@0
|
96 /**
|
Chris@0
|
97 * {@inheritdoc}
|
Chris@0
|
98 */
|
Chris@0
|
99 public function setConfiguration(array $configuration) {
|
Chris@0
|
100 $this->configuration = $configuration + $this->defaultConfiguration();
|
Chris@0
|
101 return $this;
|
Chris@0
|
102 }
|
Chris@0
|
103
|
Chris@0
|
104 /**
|
Chris@0
|
105 * {@inheritdoc}
|
Chris@0
|
106 */
|
Chris@0
|
107 public function defaultConfiguration() {
|
Chris@0
|
108 return [
|
Chris@0
|
109 'negate' => FALSE,
|
Chris@0
|
110 ];
|
Chris@0
|
111 }
|
Chris@0
|
112
|
Chris@0
|
113 /**
|
Chris@0
|
114 * {@inheritdoc}
|
Chris@0
|
115 */
|
Chris@0
|
116 public function calculateDependencies() {
|
Chris@0
|
117 return [];
|
Chris@0
|
118 }
|
Chris@0
|
119
|
Chris@0
|
120 /**
|
Chris@0
|
121 * {@inheritdoc}
|
Chris@0
|
122 */
|
Chris@0
|
123 public function setExecutableManager(ExecutableManagerInterface $executableManager) {
|
Chris@0
|
124 $this->executableManager = $executableManager;
|
Chris@0
|
125 return $this;
|
Chris@0
|
126 }
|
Chris@0
|
127
|
Chris@0
|
128 }
|