wse-1.0.x-dev/modules/wse_preview/src/Plugin/Validation/Constraint/ValidPreviewExpiryPeriodConstraintValidator.php

modules/wse_preview/src/Plugin/Validation/Constraint/ValidPreviewExpiryPeriodConstraintValidator.php
<?php

declare(strict_types=1);

namespace Drupal\wse_preview\Plugin\Validation\Constraint;

use Drupal\Component\Datetime\TimeInterface;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

/**
 * Validates that a given string is a valid preview expiry period.
 */
class ValidPreviewExpiryPeriodConstraintValidator extends ConstraintValidator implements ContainerInjectionInterface {

  public function __construct(
    protected TimeInterface $time,
  ) {}

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container): static {
    return new static(
      $container->get('datetime.time'),
    );
  }

  /**
   * {@inheritdoc}
   */
  public function validate(mixed $value, Constraint $constraint): void {
    assert($constraint instanceof ValidPreviewExpiryPeriodConstraint);
    $timestamp = strtotime(sprintf("+%s", $value));
    // If the timestamp is not valid or is in the past, add a violation.
    if (!$timestamp || $timestamp <= $this->time->getCurrentTime()) {
      $this->context->addViolation($constraint->message, ['@value' => $value]);
    }
  }

}

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

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