vendor/dachcom-digital/seo/src/SeoBundle/EventListener/AutoMetaDataAttachListener.php line 43

Open in your IDE?
  1. <?php
  2. namespace SeoBundle\EventListener;
  3. use Pimcore\Http\RequestHelper;
  4. use Pimcore\Http\Request\Resolver\DocumentResolver;
  5. use Pimcore\Http\Request\Resolver\PimcoreContextResolver;
  6. use Pimcore\Model\Document\Page;
  7. use SeoBundle\MetaData\MetaDataProviderInterface;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. class AutoMetaDataAttachListener implements EventSubscriberInterface
  12. {
  13.     protected array $configuration;
  14.     protected MetaDataProviderInterface $metaDataProvider;
  15.     protected RequestHelper $requestHelper;
  16.     protected PimcoreContextResolver $pimcoreContextResolver;
  17.     protected DocumentResolver $documentResolverService;
  18.     public function __construct(
  19.         array $configuration,
  20.         MetaDataProviderInterface $metaDataProvider,
  21.         RequestHelper $requestHelper,
  22.         PimcoreContextResolver $contextResolver,
  23.         DocumentResolver $documentResolverService
  24.     ) {
  25.         $this->configuration $configuration;
  26.         $this->metaDataProvider $metaDataProvider;
  27.         $this->requestHelper $requestHelper;
  28.         $this->pimcoreContextResolver $contextResolver;
  29.         $this->documentResolverService $documentResolverService;
  30.     }
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             KernelEvents::REQUEST => ['onKernelRequest', -255]
  35.         ];
  36.     }
  37.     public function onKernelRequest(RequestEvent $event): void
  38.     {
  39.         $request $event->getRequest();
  40.         if (php_sapi_name() === 'cli') {
  41.             return;
  42.         }
  43.         if ($this->configuration['auto_detect_documents'] === false) {
  44.             return;
  45.         }
  46.         if ($event->isMasterRequest() === false) {
  47.             return;
  48.         }
  49.         if ($this->pimcoreContextResolver->matchesPimcoreContext($requestPimcoreContextResolver::CONTEXT_ADMIN)) {
  50.             return;
  51.         }
  52.         if (!$this->pimcoreContextResolver->matchesPimcoreContext($requestPimcoreContextResolver::CONTEXT_DEFAULT)) {
  53.             return;
  54.         }
  55.         if ($this->requestHelper->isFrontendRequestByAdmin($request)) {
  56.             return;
  57.         }
  58.         $document $this->documentResolverService->getDocument($request);
  59.         if (!$document instanceof Page) {
  60.             return;
  61.         }
  62.         $this->metaDataProvider->updateSeoElement($document$request->getLocale());
  63.     }
  64. }