* @copyright 2007-2019 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ namespace PrestaShop\Module\StFacetedSearch\Constraint; use PrestaShop\PrestaShop\Adapter\Tools; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** * Class UrlSegmentValidator responsible for validating an URL segment. */ class UrlSegmentValidator extends ConstraintValidator { /** * @var Tools */ private $tools; /** * @param Tools $tools */ public function __construct(Tools $tools) { $this->tools = $tools; } /** * {@inheritdoc} */ public function validate($value, Constraint $constraint) { if (!$constraint instanceof UrlSegment) { throw new UnexpectedTypeException($constraint, UrlSegment::class); } if (null === $value || '' === $value) { return; } if (strtolower($value) !== $this->tools->linkRewrite($value)) { $this->context->buildViolation($constraint->message) ->setTranslationDomain('Admin.Notifications.Error') ->setParameter('%s', $this->formatValue($value)) ->addViolation() ; } } }