date_recur-8.x-2.2/src/Plugin/Validation/Constraint/DateRecurRruleConstraintValidator.php
src/Plugin/Validation/Constraint/DateRecurRruleConstraintValidator.php
<?php
declare(strict_types=1);
namespace Drupal\date_recur\Plugin\Validation\Constraint;
use Drupal\date_recur\DateRecurHelper;
use Drupal\date_recur\Plugin\Field\FieldType\DateRecurItem;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* Validates the DateRecurRruleConstraint constraint.
*/
class DateRecurRruleConstraintValidator extends ConstraintValidator {
/**
* {@inheritdoc}
*/
public function validate($value, Constraint $constraint): void {
assert($value instanceof DateRecurItem);
assert($constraint instanceof DateRecurRruleConstraint);
// Validator do not apply to field values without RRULE.
if ($value->rrule === NULL || $value->rrule === '') {
return;
}
try {
// Use a fake start time as there may be an empty or invalid start date.
DateRecurHelper::create($value->rrule, new \DateTime());
}
catch (\Exception) {
$this->context->addViolation($constraint->invalidRrule);
}
}
}
