vendor/dachcom-digital/members/src/MembersBundle/EventListener/Frontend/HeadMetaListener.php line 66

Open in your IDE?
  1. <?php
  2. namespace MembersBundle\EventListener\Frontend;
  3. use MembersBundle\Manager\RestrictionManager;
  4. use MembersBundle\Manager\RestrictionManagerInterface;
  5. use MembersBundle\Restriction\ElementRestriction;
  6. use Pimcore\Bundle\CoreBundle\EventListener\Traits\PimcoreContextAwareTrait;
  7. use Pimcore\Http\Request\Resolver\DocumentResolver as DocumentResolverService;
  8. use Pimcore\Http\Request\Resolver\PimcoreContextResolver;
  9. use Pimcore\Templating\Helper\HeadMeta;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. /**
  14.  * Adds Meta Data entries of document to HeadMeta view helper.
  15.  */
  16. class HeadMetaListener implements EventSubscriberInterface
  17. {
  18.     use PimcoreContextAwareTrait;
  19.     /**
  20.      * @var DocumentResolverService
  21.      */
  22.     protected $documentResolverService;
  23.     /**
  24.      * @var HeadMeta
  25.      */
  26.     protected $headMeta;
  27.     /**
  28.      * @var RestrictionManagerInterface
  29.      */
  30.     protected $restrictionManager;
  31.     /**
  32.      * @param DocumentResolverService     $documentResolverService
  33.      * @param HeadMeta                    $headMeta
  34.      * @param RestrictionManagerInterface $restrictionManager
  35.      */
  36.     public function __construct(
  37.         RestrictionManagerInterface $restrictionManager,
  38.         DocumentResolverService $documentResolverService,
  39.         HeadMeta $headMeta
  40.     ) {
  41.         $this->documentResolverService $documentResolverService;
  42.         $this->headMeta $headMeta;
  43.         $this->restrictionManager $restrictionManager;
  44.     }
  45.     /**
  46.      * {@inheritdoc}
  47.      */
  48.     public static function getSubscribedEvents()
  49.     {
  50.         return [
  51.             KernelEvents::REQUEST => ['onKernelRequest', -20//after forbidden route listener!
  52.         ];
  53.     }
  54.     /**
  55.      * @param GetResponseEvent $event
  56.      */
  57.     public function onKernelRequest(GetResponseEvent $event)
  58.     {
  59.         // just add meta data on master request
  60.         if (!$event->isMasterRequest()) {
  61.             return;
  62.         }
  63.         if (!$this->matchesPimcoreContext($event->getRequest(), PimcoreContextResolver::CONTEXT_DEFAULT)) {
  64.             return;
  65.         }
  66.         $groups = ['default'];
  67.         /** @var ElementRestriction $restrictionElement */
  68.         $elementRestriction $event->getRequest()->attributes->get(RestrictionManager::REQUEST_RESTRICTION_STORAGE);
  69.         if ($elementRestriction instanceof ElementRestriction && !empty($elementRestriction->getRestrictionGroups())) {
  70.             $groups $elementRestriction->getRestrictionGroups();
  71.         }
  72.         $this->headMeta->appendName('m:groups'implode(','$groups));
  73.     }
  74. }