<?php
namespace App\EventSubscriber;
use Exception;
use Pimcore\Model\Document\Page;
use Pimcore\Model\Site;
use Pimcore\Tool\Frontend;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
class SiteRequestSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
//return []; // TODO kiszedni teszthez
return [RequestEvent::class => 'onRequest'];
}
public function onRequest(RequestEvent $event): void
{
if (Site::isSiteRequest()) {
return;
}
if (!$event->isMainRequest()) {
return;
}
$request = $event->getRequest();
if ($request->get('_pimcore_context') === 'admin' || $request->get('pimcore_editmode') === "true") {
return;
}
$page = $request->get('contentDocument');
if (!$page instanceof Page) {
return;
}
$site = Frontend::getSiteForDocument($page);
if ($site instanceof Site) {
$url = sprintf("%s://%s%s",
$request->getScheme(),
$site->getMainDomain(),
substr($page->getRealFullPath(), strlen($site->getRootPath()))
);
$response = new RedirectResponse($url);
$response->send();
}
}
}