* * 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:----EDqNeft77sTp/CGeAHqljrk+beRaFgEnjl8vBPSgdYvoeGlCIL4/d2vrsrmDpQQFgEGM7NHBVumbBjCYXtxeoed1UovtE/+WDYugPCYPza/N8qAKlRqnQnsPttgn35MHZLhkKR6fufHukAzlr9Mg4shVEkFj2S+gUMLzbt4SUkxaOff+WvPkBrZZYS8Uy+54VbQTs/E9WdZLpwxQvMlxgI3VhtaIPsCnao2jD8nQU/5kX2HtNYQQbUArvYyoYA3dpy1EKzts72Fsy3WfdqOtPYHYxOhGfCjcYny06Vvqt9+CEv1oP2JRbhsTbwmQDsQgfNHkFGjU7iKTKCmFX1ktEuLQPWswa/zay6+ugybo0L2OY6LglrSVgfMqK4PGHbnAAwfPeBis0HBEtpjVm24mHC8VZcF3739BN4ah6hY3o1oWWr6OzBPOH8PAmuCAD4UVpPlM6IvPuV29qAgtHym2aDyPudkEof4QzyqSfTgqqKnp967Dh3XU6q+YSfUcdI4Vhp3wn261rOqvzK5LZwTXnzWGnkl5zV0EFhTp3zgKusTSifz7j5PU0+t0pSEJsvtPuPpdFZYYtU0ACkuThs8mdGUkt26ce9zPOWxpSfLE30RfQRORB++FOElRDv+3WC7ruFRrEfriS+4vDAe2wooZ/lkkXgxJhoRO6IPMWdpKgZ0=----ATTACHMENT:----OTIwMTEwNjYyNTg3MzI4NyA3Njg3NjkzMTcwNDA2OTcxIDMzNDMwNDQyNTE4NzcxNDQ=