<?php
namespace App\EventSubscriber;
use App\Service\CmsInitializer;
use App\Repository\ConfigurationRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class CmsInitSubscriber implements EventSubscriberInterface
{
private bool $initialized = false;
public function __construct(
private ConfigurationRepository $configurationRepository,
private CmsInitializer $initializer
) {}
public function onKernelRequest(RequestEvent $event): void
{
if (!$event->isMainRequest() || $this->initialized) {
return;
}
if ($this->configurationRepository->count([]) === 0) {
$this->initializer->init();
}
$this->initialized = true;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => 'onKernelRequest',
];
}
}