* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ namespace PrestaShop\Module\FacetedSearch\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() ; } } }