You are here

class EntityFieldOperationCompareType in Entity Field Condition 2.0.x

Define the entity field operation compare type plugin.

Plugin annotation


@EntityFieldCompareType(
  id = "entity_field_operation_compare",
  label = @Translation("Operation")
)

Hierarchy

Expanded class hierarchy of EntityFieldOperationCompareType

File

src/Plugin/EntityFieldCondition/CompareType/EntityFieldOperationCompareType.php, line 18

Namespace

Drupal\entity_field_condition\Plugin\EntityFieldCondition\CompareType
View source
class EntityFieldOperationCompareType extends EntityFieldCompareTypePluginBase {

  /**
   * {@inheritDoc}
   */
  public function defaultConfiguration() : array {
    return [
      'value' => NULL,
      'value_type' => NULL,
      'value_operation' => NULL,
    ] + parent::defaultConfiguration();
  }

  /**
   * {@inheritDoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) : array {
    $form['value_type'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Value Type'),
      '#required' => TRUE,
      '#options' => [
        'default' => $this
          ->t('Default'),
        'string' => $this
          ->t('String'),
      ],
      '#empty_option' => $this
        ->t('- Select -'),
      '#default_value' => $this
        ->getValueType(),
    ];
    $form['value_operation'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Value Operation'),
      '#required' => TRUE,
      '#options' => [
        '==' => $this
          ->t('Equal'),
        '===' => $this
          ->t('Identical'),
        '<' => $this
          ->t('Less Than'),
        '<=' => $this
          ->t('Less Than or Equal to'),
        '>' => $this
          ->t('Greater Than'),
        '>=' => $this
          ->t('Greater Than or Equal to'),
      ],
      '#empty_option' => $this
        ->t('- Select -'),
      '#default_value' => $this
        ->getValueOperation(),
    ];
    $form['value'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Value'),
      '#required' => TRUE,
      '#default_value' => $this
        ->getValue(),
    ];
    return $form;
  }

  /**
   * {@inheritDoc}
   */
  public function evaluate(ContentEntityInterface $entity, string $field_name) : bool {
    if (!$entity
      ->hasField($field_name)) {
      return FALSE;
    }
    return $this
      ->compareValue($this
      ->getEntityFieldValue($entity, $field_name));
  }

  /**
   * Compare the field value based on operation.
   *
   * @param mixed $field_value
   *   The field value.
   *
   * @return bool
   *   Return TRUE if the value is comparable; otherwise FALSE.
   */
  protected function compareValue($field_value) : bool {
    $verdict = FALSE;
    $value = $this
      ->getValue();
    switch ($this
      ->getValueOperation()) {
      case '==':
        $verdict = $field_value == $value;
        break;
      case '===':
        $verdict = $field_value === $value;
        break;
      case '<':
        $verdict = $field_value < $value;
        break;
      case '<=':
        $verdict = $field_value <= $value;
        break;
      case '>':
        $verdict = $field_value > $value;
        break;
      case '>=':
        $verdict = $field_value >= $value;
        break;
    }
    return $verdict;
  }

  /**
   * Get entity field value.
   *
   * @param \Drupal\Core\Entity\ContentEntityInterface $entity
   *   The content entity.
   * @param string $field_name
   *   The entity field name.
   *
   * @return mixed|string
   *   The entity field value.
   */
  protected function getEntityFieldValue(ContentEntityInterface $entity, string $field_name) {
    $field = $entity
      ->get($field_name);
    $value = $field->value;
    if ($this
      ->getValueType() === 'string') {
      $value = $field
        ->getString();
    }
    return $value;
  }

  /**
   * Get the value.
   *
   * @return string
   *   The value type.
   */
  protected function getValue() : ?string {
    return $this
      ->getConfiguration()['value'] ?? NULL;
  }

  /**
   * Get the value type.
   *
   * @return string
   *   The value type.
   */
  protected function getValueType() : string {
    return $this
      ->getConfiguration()['value_type'] ?? 'default';
  }

  /**
   * Get the value operation.
   *
   * @return string|null
   *   The value operation.
   */
  protected function getValueOperation() : ?string {
    return $this
      ->getConfiguration()['value_operation'] ?? NULL;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
EntityFieldCompareTypePluginBase::$entityFieldManager protected property Entity field manager.
EntityFieldCompareTypePluginBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
EntityFieldCompareTypePluginBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
EntityFieldCompareTypePluginBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
EntityFieldCompareTypePluginBase::submitConfigurationForm public function Form submission handler. Overrides PluginFormInterface::submitConfigurationForm
EntityFieldCompareTypePluginBase::validateConfigurationForm public function Form validation handler. Overrides PluginFormInterface::validateConfigurationForm
EntityFieldCompareTypePluginBase::__construct public function The compare type plugin base constructor. Overrides PluginBase::__construct
EntityFieldOperationCompareType::buildConfigurationForm public function Form constructor. Overrides EntityFieldCompareTypePluginBase::buildConfigurationForm
EntityFieldOperationCompareType::compareValue protected function Compare the field value based on operation.
EntityFieldOperationCompareType::defaultConfiguration public function Gets default configuration for this plugin. Overrides EntityFieldCompareTypePluginBase::defaultConfiguration
EntityFieldOperationCompareType::evaluate public function Evaluate the entity field value. Overrides EntityFieldCompareTypeInterface::evaluate
EntityFieldOperationCompareType::getEntityFieldValue protected function Get entity field value.
EntityFieldOperationCompareType::getValue protected function Get the value.
EntityFieldOperationCompareType::getValueOperation protected function Get the value operation.
EntityFieldOperationCompareType::getValueType protected function Get the value type.
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 2
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.