<?php declare(strict_types=1);
namespace App\EventSubscriber;
use App\Entity\Site;
use App\Service\SiteManager;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CurrentRequestSubscriber implements EventSubscriberInterface
{
/**
* The site manager
*
* @var SiteManager
*/
private $siteManager;
/**
* The entity manager
*
* @var EntityManagerInterface
*/
private $entityManager;
public function __construct(SiteManager $siteManager, EntityManagerInterface $entityManager)
{
$this->siteManager = $siteManager;
$this->entityManager = $entityManager;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => ['setCurrentSite']
];
}
public function setCurrentSite(RequestEvent $event)
{
$request = $event->getRequest();
$currentHost = $request->getSchemeAndHttpHost();
$site = $this->entityManager
->getRepository(Site::class)
->findOneBy(['url' => $currentHost])
;
$this->siteManager->setCurrent($site);
}
}