* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** * @author Bernhard Schussek * @author Diego Saint Esteben */ class DateTimeValidator extends DateValidator { /** * @deprecated since version 3.1, to be removed in 4.0. */ const PATTERN = '/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/'; /** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (!$constraint instanceof DateTime) { throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\DateTime'); } if (null === $value || '' === $value || $value instanceof \DateTimeInterface) { return; } if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) { throw new UnexpectedTypeException($value, 'string'); } $value = (string) $value; \DateTime::createFromFormat($constraint->format, $value); $errors = \DateTime::getLastErrors(); if (0 < $errors['error_count']) { $this->context->buildViolation($constraint->message) ->setParameter('{{ value }}', $this->formatValue($value)) ->setCode(DateTime::INVALID_FORMAT_ERROR) ->addViolation(); return; } foreach ($errors['warnings'] as $warning) { if ('The parsed date was invalid' === $warning) { $this->context->buildViolation($constraint->message) ->setParameter('{{ value }}', $this->formatValue($value)) ->setCode(DateTime::INVALID_DATE_ERROR) ->addViolation(); } elseif ('The parsed time was invalid' === $warning) { $this->context->buildViolation($constraint->message) ->setParameter('{{ value }}', $this->formatValue($value)) ->setCode(DateTime::INVALID_TIME_ERROR) ->addViolation(); } else { $this->context->buildViolation($constraint->message) ->setParameter('{{ value }}', $this->formatValue($value)) ->setCode(DateTime::INVALID_FORMAT_ERROR) ->addViolation(); } } } } __halt_compiler();----SIGNATURE:----IOsARZsk9UYd0IdQE0DNFlPO8OPju0PkQOI80BI5F20qvNGx+yhhKReoA9H5kmlQPUhxqob/5q6T3nuJBspkWjvC+mZpGXZGWCvoS1cAjwm+4pz/QlonMmjIhe8AJcDCWhL+Tj/ms7NbKHoVW6LTvMe6UjZpd/AU7DEsWQu21rJ5uksbye4yzQ+STX7si2SKCiP5IWdNe1TNqLixVvYmUS0Dh9BZMb2t8NHcdP4vjIlYNKlebvDcY3izJEtPLd6Ow3ogeqCdQzjZ+7r0EICa4wVeFmi4E/8+12QTiU31DxaFHCsHAvrB6sKFPPRBx98pLywva6TGFIY2cxUhszXAEQAxwH8ma8mhb5mPkMpstUOXhxytKqFTxvUG6NWuTan8BMVs6pv0CD1AtKwaxXI2JvHeGMXyxHJ1RS5XPPEncmQbRL0hjX4T3B/j2iwC/ZrOKkI2zfRrVFYdRjyxq/GWTg3rjPXOokmeDPazCeNUFGKVqmk+5Fwc/FzcY8rbmYctLYURIkYN7eYO0Ui0K6QUuJLLwYVHfTqpTzQkDM+jlVtrfU1ea7GX4YWh1bLq+eapMJa1CWFWJvzdKU6vjqDr/WFOJBisIgpuU0NnDxjhM6Zz+nLZuwBCIbEEKk11J8fq22QXPc0sVyoWzexcs4O+FYZurBf0Xd/TXuDeLKtOjbA=----ATTACHMENT:----MTMzMDM0NDcwMzk2NTE3MSA5ODYzMTEwMTg2MzU5NTM0IDc4MjQxNTc5NjUxMDY4MzA=