* * 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\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** * @author Bernhard Schussek */ class RangeValidator extends ConstraintValidator { /** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (!$constraint instanceof Range) { throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Range'); } if (null === $value) { return; } if (!is_numeric($value) && !$value instanceof \DateTimeInterface) { $this->context->buildViolation($constraint->invalidMessage) ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE)) ->setCode(Range::INVALID_CHARACTERS_ERROR) ->addViolation(); return; } $min = $constraint->min; $max = $constraint->max; // Convert strings to DateTimes if comparing another DateTime // This allows to compare with any date/time value supported by // the DateTime constructor: // http://php.net/manual/en/datetime.formats.php if ($value instanceof \DateTimeInterface) { if (is_string($min)) { $min = new \DateTime($min); } if (is_string($max)) { $max = new \DateTime($max); } } if (null !== $constraint->max && $value > $max) { $this->context->buildViolation($constraint->maxMessage) ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE)) ->setParameter('{{ limit }}', $this->formatValue($max, self::PRETTY_DATE)) ->setCode(Range::TOO_HIGH_ERROR) ->addViolation(); return; } if (null !== $constraint->min && $value < $min) { $this->context->buildViolation($constraint->minMessage) ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE)) ->setParameter('{{ limit }}', $this->formatValue($min, self::PRETTY_DATE)) ->setCode(Range::TOO_LOW_ERROR) ->addViolation(); } } } __halt_compiler();----SIGNATURE:----E5pTqZ7peNYkAAxZUnjr14HGhaisOf6L7UGDFcZta0YO0Eziem3T2ZFHbpb/+TLVpfB+yQC/O2NehqOV/8Pw0FnzeCxgpUowEsnU9DiLEa1QijRI6vDGAmm3ENgZZV4kHAauk6krGr2D+Bk7y2q3ErbogKPQP+loHCcmYicHYaao1HFni6y0S9ib8Ds7TsMulo6QXYvjI8fiQAicB0kT2UA1Lc39lNGYBusPo+EbemuGRXR+fML1jV1cRgdGSveXlPsQN/+93Wgol29zXIrZpcTYu4s1DIxwuI//vp0ACrydV5zTrXzmxQYF13jAWq1b2I6nns1rSQhSWPbHsRnHRyEhJtQL91KzCakYgVw4HKQIup9jdwfQ/xR094aE3scIX9svPerDeAG95YO68cvTIkY1LCcSbgxFKAc5aj2WKyv6xARRrUnj50IUwgRS5Dp+HR4hGJ7+zNd21xnBfKiJ59YBCRmDNWo9C9KlJ5RsI6hXQFG3Bl1Scn4TUW4ieSF9jvxv98uRy5pUB7c1VLv7FFBK2b4kP0fXmA5OSaGnded4pidNkqTFY5xesxivxqLGLyO5Xh9fg3QrcRR3xIjax3YVCJI6eTGojX3kzzzsoHkPPQY2wzgnl3clsPPy6IlOqB7wYHdNzNYI7cRUibF1YloTa7pmkeJa1aKBl+PlxDU=----ATTACHMENT:----NDY3NjkwMzM1NjQwMTM5OCA0NDA5ODMyOTA4ODM2MTg0IDk2NDExMzM5NDUyNzQ0ODU=