vendor/simpledot/cms-bundle/AWCmsBundle/EventListener/MaintenanceRequestListener.php line 33

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: albert
  5.  * Date: 21/11/18
  6.  * Time: 18:23
  7.  */
  8. namespace AWCmsBundle\EventListener;
  9. use AWCmsBundle\Manager\SiteManager;
  10. use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  13. use Symfony\Component\Security\Core\Security;
  14. class MaintenanceRequestListener
  15. {
  16.     /**
  17.      * @var SiteManager
  18.      */
  19.     private $siteManager;
  20.     private $engine;
  21.     private $security;
  22.     public function __construct(SiteManager $siteManagerEngineInterface $engineSecurity $security)
  23.     {
  24.         $this->siteManager $siteManager;
  25.         $this->engine $engine;
  26.         $this->security $security;
  27.     }
  28.     public function onKernelRequest(GetResponseEvent $event){
  29.         $site $this->siteManager->getSite();
  30.         if(!$site or !$site->isMaintenance()){
  31.             return;
  32.         }
  33.         if(preg_match('@^/[a-z]{2}/(admin|js|login)@'$event->getRequest()->getRequestUri())) {
  34.             return;
  35.         }
  36.         if(!preg_match('|^/[a-z]{2}/|'$event->getRequest()->getRequestUri())) {
  37.             return;
  38.         }
  39.         if($this->security->isGranted('ROLE_USER')){
  40.             return;
  41.         }
  42.         $twigContent $this->engine->render('@AWCms/maintenance.html.twig');
  43.         $response = new Response($twigContent$site->getMaintenanceCode());
  44.         $event->setResponse($response);
  45.         $event->stopPropagation();
  46.     }
  47. }