* * 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:----UNIX+MlDgSFvYqZ6JCImejY24QDqFminOohVDAPBCMbDlufZEqCmR8b+Ic0EdqXlus2aLPLsP9LF97W7R/uUteJ95edsQMMw4CMYqju7KnwnBDdgKWmHb9YAUJ4o9KZWlxeLh/vmope0hFo28SfWR3W/JxSnUEsWHuxX2I82jeCVOdgQ6XqhT6WeRJtv4bKuzbY1GYO9dS18V8Wc7+t/d/w6LiiaTfvu0xjoplpbShkuQ0bjUMsDqOgWvrc2JF79np07pHElEoJT6Gb2quZXwCQiAJofKnodNUT1AuuPThPWrw0DjqfmQ2TxlMS6t/k4xQK1ATaAYtTbhoL2igYa2HMiItkFul4c8YwgVjARG4efFsz4jBQtohQWWBrLYbayd3/Li0aiEXNjF8AQY85ZcRjBxkxuWZRu7PrLmkcpWbRB/STG/rj7z+I+YA3+GG7CNdGuzUowiBujqZ2niIQ4b/YfU1HIL/fQ/8zRYq/lT46CN6Ux324x50e5cukyEe2h9ws421RbdLk+FEy2uQX3y0sEtOTwJkcV0M6w4hkVG48vJfrNNH0My1ygORrwUMe2shJKR7rYFPzv/WhF9zoKiPrCTOFf79GHprBvWwt6eCxVK+ibKX4IXEZWOFBwuULKHKCl0xSxuXxT5CdTNqXBDAdYfiB3zuhvgJYZ0gKmO/I=----ATTACHMENT:----NDg4NDk0OTUwNTcwOTkwNCA0MTEyODI2NTU2Mzg4MjU3IDc3Mzk5NzYwODM5Nzg3NTI=