eca-1.0.x-dev/modules/base/src/Plugin/ECA/Condition/ListCountComparison.php

modules/base/src/Plugin/ECA/Condition/ListCountComparison.php
<?php

namespace Drupal\eca_base\Plugin\ECA\Condition;

use Drupal\Core\Form\FormStateInterface;
use Drupal\eca_base\Plugin\ListCountTrait;

/**
 * ECA condition plugin for numerically comparing number of list items.
 *
 * @EcaCondition(
 *   id = "eca_count",
 *   label = @Translation("Compare number of list items"),
 *   description = @Translation("Condition to compare the number of list items."),
 *   eca_version_introduced = "1.0.0"
 * )
 */
class ListCountComparison extends ScalarComparison {

  use ListCountTrait;

  /**
   * {@inheritdoc}
   */
  protected function getLeftValue(): string {
    return (string) $this->countValue($this->configuration['left']);
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state): array {
    $form = parent::buildConfigurationForm($form, $form_state);
    $form['left']['#type'] = 'textfield';
    $form['left']['#title'] = $this->t('Name of token containing the list');
    $form['left']['#description'] = $this->t('Provide the name of the token that contains a list from which the number of items should be counted.');
    $form['right']['#type'] = 'textfield';
    $form['operator']['#default_value'] = static::COMPARE_EQUALS;
    $form['type']['#default_value'] = static::COMPARE_TYPE_NUMERIC;
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  protected function getOptions(string $id): ?array {
    if ($id === 'operator') {
      return [
        static::COMPARE_EQUALS => $this->t('equals'),
        static::COMPARE_GREATERTHAN => $this->t('greater than'),
        static::COMPARE_LESSTHAN => $this->t('less than'),
        static::COMPARE_ATMOST => $this->t('at most'),
        static::COMPARE_ATLEAST => $this->t('at least'),
      ];
    }
    if ($id === 'type') {
      return [
        static::COMPARE_TYPE_NUMERIC => $this->t('Numeric order'),
      ];
    }
    return parent::getOptions($id);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc