vendor/synolia/sylius-maintenance-plugin/src/EventSubscriber/MaintenanceEventsubscriber.php line 44

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Synolia\SyliusMaintenancePlugin\EventSubscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Contracts\Translation\TranslatorInterface;
  8. use Synolia\SyliusMaintenancePlugin\Factory\MaintenanceConfigurationFactory;
  9. use Synolia\SyliusMaintenancePlugin\Voter\IsMaintenanceVoterInterface;
  10. use Twig\Environment;
  11. final class MaintenanceEventsubscriber implements EventSubscriberInterface
  12. {
  13.     private TranslatorInterface $translator;
  14.     private Environment $twig;
  15.     private MaintenanceConfigurationFactory $configurationFactory;
  16.     private IsMaintenanceVoterInterface $isMaintenanceVoter;
  17.     public function __construct(
  18.         TranslatorInterface $translator,
  19.         Environment $twig,
  20.         MaintenanceConfigurationFactory $configurationFactory,
  21.         IsMaintenanceVoterInterface $isMaintenanceVoter
  22.     ) {
  23.         $this->translator $translator;
  24.         $this->twig $twig;
  25.         $this->configurationFactory $configurationFactory;
  26.         $this->isMaintenanceVoter $isMaintenanceVoter;
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             RequestEvent::class => 'handle',
  32.         ];
  33.     }
  34.     public function handle(RequestEvent $event): void
  35.     {
  36.         $configuration $this->configurationFactory->get();
  37.         if (!$this->isMaintenanceVoter->isMaintenance($configuration$event->getRequest())) {
  38.             return;
  39.         }
  40.         $responseContent $this->translator->trans('maintenance.ui.message');
  41.         if ('' !== $configuration->getCustomMessage()) {
  42.             $responseContent $this->twig->render('@SynoliaSyliusMaintenancePlugin/maintenance.html.twig', [
  43.                 'custom_message' => $configuration->getCustomMessage(),
  44.             ]);
  45.         }
  46.         $event->setResponse(new Response($responseContentResponse::HTTP_SERVICE_UNAVAILABLE));
  47.     }
  48. }