<?php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Twig\Environment;
class MaintenanceListener
{
private $maintenance;
private $twig;
public function __construct($maintenance, Environment $twig)
{
$this->maintenance = filter_var($maintenance, FILTER_VALIDATE_BOOLEAN);
$this->twig = $twig;
}
public function onKernelException(ExceptionEvent $event)
{
}
public function onKernelRequest(RequestEvent $event)
{
if($this->maintenance){
$route = $event->getRequest()->getRequestUri();
if(strpos($route, 'frontoffice') === false){
return;
}
$page = $this->twig->render('maintenance.html.twig');
$event->setResponse(
new Response(
$page,
Response::HTTP_SERVICE_UNAVAILABLE
)
);
$event->stopPropagation();
}
}
}