<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
final class HomeLocaleRedirectSubscriber implements EventSubscriberInterface
{
private const LEGACY_PAGE_REDIRECTS = [
'/mentions-legales' => '/conditions-generales-de-vente',
'/confidentialite' => '/politique-de-confidentialite',
];
public static function getSubscribedEvents(): array
{
// Run early so /en never reaches Sulu content routing.
return [
KernelEvents::REQUEST => ['onKernelRequest', 2048],
];
}
public function onKernelRequest(RequestEvent $event): void
{
if (!$event->isMainRequest()) {
return;
}
$request = $event->getRequest();
$path = rtrim($request->getPathInfo(), '/');
if ('' === $path) {
$path = '/';
}
if ($path === '/en') {
$target = '/';
$query = $request->getQueryString();
if ($query) {
$target .= '?' . $query;
}
$event->setResponse(new RedirectResponse($target, 301));
return;
}
if (isset(self::LEGACY_PAGE_REDIRECTS[$path])) {
$target = self::LEGACY_PAGE_REDIRECTS[$path];
$query = $request->getQueryString();
if ($query) {
$target .= '?' . $query;
}
$event->setResponse(new RedirectResponse($target, 301));
}
}
}