‪TYPO3CMS  10.4
DateRangeValidator.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 
29 {
33  protected ‪$supportedOptions = [
34  'minimum' => ['', 'The minimum date formatted as Y-m-d', 'string'],
35  'maximum' => ['', 'The maximum date formatted as Y-m-d', 'string'],
36  'format' => ['Y-m-d', 'The format of the minimum and maximum option', 'string'],
37  ];
38 
42  public function ‪isValid($value)
43  {
44  $this->‪validateOptions();
45 
46  if (!($value instanceof \DateTime)) {
47  $this->‪addError(
49  'validation.error.1521293685',
50  'form',
51  [gettype($value)]
52  ) ?? '',
53  1521293685
54  );
55 
56  return;
57  }
58 
59  $minimum = $this->options['minimum'];
60  $maximum = $this->options['maximum'];
61  $format = $this->options['format'];
62  $value->modify('midnight');
63 
64  if (
65  $minimum instanceof \DateTime
66  && $value < $minimum
67  ) {
68  $this->‪addError(
70  'validation.error.1521293686',
71  'form',
72  [$minimum->format($format)]
73  ) ?? '',
74  1521293686,
75  [$minimum->format($format)]
76  );
77  }
78 
79  if (
80  $maximum instanceof \DateTime
81  && $value > $maximum
82  ) {
83  $this->‪addError(
85  'validation.error.1521293687',
86  'form',
87  [$maximum->format($format)]
88  ) ?? '',
89  1521293687,
90  [$maximum->format($format)]
91  );
92  }
93  }
94 
100  protected function ‪validateOptions()
101  {
102  if (!empty($this->options['minimum'])) {
103  $minimum = \DateTime::createFromFormat($this->options['format'], $this->options['minimum']);
104  if (!($minimum instanceof \DateTime)) {
105  $message = sprintf('The option "minimum" (%s) could not be converted to \DateTime from format "%s".', $this->options['minimum'], $this->options['format']);
106  throw new ‪InvalidValidationOptionsException($message, 1521293813);
107  }
108 
109  $minimum->modify('midnight');
110  $this->options['minimum'] = $minimum;
111  }
112 
113  if (!empty($this->options['maximum'])) {
114  $maximum = \DateTime::createFromFormat($this->options['format'], $this->options['maximum']);
115  if (!($maximum instanceof \DateTime)) {
116  $message = sprintf('The option "maximum" (%s) could not be converted to \DateTime from format "%s".', $this->options['maximum'], $this->options['format']);
117  throw new ‪InvalidValidationOptionsException($message, 1521293814);
118  }
119 
120  $maximum->modify('midnight');
121  $this->options['maximum'] = $maximum;
122  }
123  }
124 }
‪TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator
Definition: AbstractValidator.php:27
‪TYPO3\CMS\Form\Mvc\Validation\Exception\InvalidValidationOptionsException
Definition: InvalidValidationOptionsException.php:23
‪TYPO3\CMS\Form\Mvc\Validation\DateRangeValidator\$supportedOptions
‪array $supportedOptions
Definition: DateRangeValidator.php:32
‪TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator\translateErrorMessage
‪string null translateErrorMessage($translateKey, $extensionName, $arguments=[])
Definition: AbstractValidator.php:153
‪TYPO3\CMS\Form\Mvc\Validation\DateRangeValidator\validateOptions
‪validateOptions()
Definition: DateRangeValidator.php:99
‪TYPO3\CMS\Form\Mvc\Validation
Definition: CountValidator.php:22
‪TYPO3\CMS\Form\Mvc\Validation\DateRangeValidator
Definition: DateRangeValidator.php:29
‪TYPO3\CMS\Form\Mvc\Validation\DateRangeValidator\isValid
‪isValid($value)
Definition: DateRangeValidator.php:41
‪TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator\addError
‪addError($message, $code, array $arguments=[], $title='')
Definition: AbstractValidator.php:120