class ConditionPluginBase

Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/Condition/ConditionPluginBase.php \Drupal\Core\Condition\ConditionPluginBase
  2. 10 core/lib/Drupal/Core/Condition/ConditionPluginBase.php \Drupal\Core\Condition\ConditionPluginBase
  3. 9 core/lib/Drupal/Core/Condition/ConditionPluginBase.php \Drupal\Core\Condition\ConditionPluginBase
  4. 8.9.x core/lib/Drupal/Core/Condition/ConditionPluginBase.php \Drupal\Core\Condition\ConditionPluginBase

Provides a basis for fulfilling contexts for condition plugins.

Hierarchy

Expanded class hierarchy of ConditionPluginBase

See also

\Drupal\Core\Condition\Annotation\Condition

\Drupal\Core\Condition\Attribute\Condition

\Drupal\Core\Condition\ConditionInterface

\Drupal\Core\Condition\ConditionManager

Related topics

11 files declare their use of ConditionPluginBase
BaloneySpam.php in core/modules/block/tests/modules/block_test/src/Plugin/Condition/BaloneySpam.php
ConditionTestDualUser.php in core/modules/system/tests/modules/condition_test/src/Plugin/Condition/ConditionTestDualUser.php
ConditionTestNoExistingType.php in core/modules/system/tests/modules/condition_test/src/Plugin/Condition/ConditionTestNoExistingType.php
CurrentThemeCondition.php in core/modules/system/src/Plugin/Condition/CurrentThemeCondition.php
EntityBundle.php in core/lib/Drupal/Core/Entity/Plugin/Condition/EntityBundle.php

... See full list

File

core/lib/Drupal/Core/Condition/ConditionPluginBase.php, line 21

Namespace

Drupal\Core\Condition
View source
abstract class ConditionPluginBase extends ExecutablePluginBase implements ConditionInterface {
  use ContextAwarePluginAssignmentTrait;
  
  /**
   * The condition manager to proxy execute calls through.
   *
   * @var \Drupal\Core\Executable\ExecutableManagerInterface
   */
  protected $executableManager;
  
  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->setConfiguration($configuration);
  }
  
  /**
   * {@inheritdoc}
   */
  public function isNegated() {
    return !empty($this->configuration['negate']);
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    if ($form_state instanceof SubformStateInterface) {
      $form_state = $form_state->getCompleteFormState();
    }
    $contexts = $form_state->getTemporaryValue('gathered_contexts') ?: [];
    $form['context_mapping'] = $this->addContextAssignmentElement($this, $contexts);
    $form['negate'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Negate the condition'),
      '#default_value' => $this->configuration['negate'],
    ];
    return $form;
  }
  
  /**
   * {@inheritdoc}
   */
  public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
  }
  
  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
    $this->configuration['negate'] = $form_state->getValue('negate');
    if ($form_state->hasValue('context_mapping')) {
      $this->setContextMapping($form_state->getValue('context_mapping'));
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function execute() {
    return $this->executableManager
      ->execute($this);
  }
  
  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    return [
      'id' => $this->getPluginId(),
    ] + $this->configuration;
  }
  
  /**
   * {@inheritdoc}
   */
  public function setConfiguration(array $configuration) {
    $this->configuration = $configuration + $this->defaultConfiguration();
    return $this;
  }
  
  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'negate' => FALSE,
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    return [];
  }
  
  /**
   * {@inheritdoc}
   */
  public function setExecutableManager(ExecutableManagerInterface $executableManager) {
    $this->executableManager = $executableManager;
    return $this;
  }

}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.