vendor/simpledot/cms-bundle/AWCmsBundle/EventListener/TwigVariablesListener.php line 101

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: sidux
  5.  * Date: 27/12/2015
  6.  * Time: 22:17
  7.  */
  8. namespace AWCmsBundle\EventListener;
  9. use AWCmsBundle\Event\GlobalTwigVariableEvent;
  10. use AWCmsBundle\Manager\MenuTreeManager;
  11. use AWCmsBundle\Manager\SiteManager;
  12. use AWCmsBundle\Entity\Site;
  13. use AWCmsBundle\Manager\SlugManager;
  14. use AWCmsBundle\Security\CurrentUserProvider;
  15. use AWCmsBundle\Service\Asset;
  16. use Symfony\Component\DependencyInjection\ContainerInterface;
  17. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  18. use Symfony\Component\HttpFoundation\RequestStack;
  19. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  20. use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
  21. /**
  22.  * Class LayoutVarSender
  23.  *
  24.  * @package AppBundle\Event
  25.  */
  26. class TwigVariablesListener implements EventSubscriberInterface
  27. {
  28.     /**
  29.      * @var SiteManager
  30.      */
  31.     protected $siteManager;
  32.     /**
  33.      * @var MenuTreeManager
  34.      */
  35.     protected $menuTreeManager;
  36.     /**
  37.      * @var ContainerInterface
  38.      */
  39.     protected $container;
  40.     
  41.     const ASSET_VERSION 12;
  42.     /**
  43.      * @var SlugManager
  44.      */
  45.     private $slugManager;
  46.     /**
  47.      * @var Asset
  48.      */
  49.     private $asset;
  50.     /**
  51.      * @var RequestStack
  52.      */
  53.     private $requestStack;
  54.     /**
  55.      * @var CurrentUserProvider
  56.      */
  57.     private CurrentUserProvider $currentUserProvider;
  58.     
  59.     /**
  60.      * LayoutVarSender constructor.
  61.      *
  62.      * @param ContainerInterface $container
  63.      * @param SiteManager $siteManager
  64.      * @param MenuTreeManager $menuTreeManager
  65.      * @param SlugManager $slugManager
  66.      * @param Asset $asset
  67.      * @param RequestStack $requestStack
  68.      */
  69.     public function __construct(
  70.         ContainerInterface $container,
  71.         SiteManager $siteManager,
  72.         MenuTreeManager $menuTreeManager,
  73.         SlugManager $slugManager,
  74.         Asset $asset,
  75.         RequestStack $requestStack,
  76.         CurrentUserProvider $currentUserProvider
  77.     )
  78.     {
  79.         $this->container          $container;
  80.         $this->siteManager        $siteManager;
  81.         $this->menuTreeManager    $menuTreeManager;
  82.         $this->slugManager        $slugManager;
  83.         $this->asset              $asset;
  84.         $this->requestStack       $requestStack;
  85.         $this->currentUserProvider $currentUserProvider;
  86.     }
  87.     
  88.     
  89.     public static function getSubscribedEvents()
  90.     {
  91.         return [
  92.             GlobalTwigVariableEvent::TO_POPULATE_EVENT => 'addData'
  93.         ];    
  94.     }
  95.     public function addData(GlobalTwigVariableEvent $event)
  96.     {
  97.         // If no master request, we are in console
  98.         if(!$this->requestStack->getMasterRequest()){
  99.             return;
  100.         }
  101.         
  102.         $data['asset_version'] = $this->asset->getAssetVersion();
  103.         
  104.         if (!array_key_exists('site'$data) || !$data['site'] instanceof Site) {
  105.             $data['site'] = $this->siteManager->getSite();
  106.         }
  107.     
  108.         if($data['site'] instanceof Site){
  109.             if (!array_key_exists('menuHeader'$data)) {
  110.                 $data['menuHeader'] = $this->menuTreeManager->getBySiteAndName($data['site'], 'Header');
  111.             }
  112.     
  113.             if (!array_key_exists('menuFooter'$data)) {
  114.                 $data['menuFooter'] = $this->menuTreeManager->getBySiteAndName($data['site'], 'Footer');
  115.             }
  116.     
  117.             if (!array_key_exists('menuTopHeader'$data)) {
  118.                 $data['menuTopHeader'] = $this->menuTreeManager->getBySiteAndName($data['site'], 'Top Header');
  119.             }
  120.         }
  121.     
  122.         if (!array_key_exists('isViewer'$data)) {
  123.             $data['isViewer'] = false;
  124.         }
  125.         if (!array_key_exists('isPreview'$data)) {
  126.             $data['isPreview'] = false;
  127.         }
  128.         if(!array_key_exists('logo_site'$data)){
  129.             $data['logo_site'] = $this->container->getParameter('aw_cms.design.logo');
  130.         }
  131.         
  132.         if($this->slugManager->getCurrentSlug()){
  133.             $data['slug'] = $this->slugManager->getCurrentSlug();
  134.         }
  135.         
  136.         $data['current_user'] = $this->currentUserProvider->get();
  137.         $data['current_page'] = null;
  138.         
  139.         $event->addData($data);
  140.     }
  141. }