vendor/aufwind/cookiebot-bundle/src/EventSubscriber/GoogleMapsSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. declare(strict_types 1);
  3. namespace Aufwind\CookiebotBundle\EventSubscriber;
  4. use Aufwind\WebFeatureBundle\FeatureService;
  5. use Pimcore\Bundle\CoreBundle\EventListener\Traits\PimcoreContextAwareTrait;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  8. use Symfony\Component\HttpKernel\HttpKernelInterface;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. class GoogleMapsSubscriber implements EventSubscriberInterface
  11. {
  12.     use PimcoreContextAwareTrait;
  13.     public function __construct(protected FeatureService $featureService)
  14.     {
  15.     }
  16.     public function onKernelResponse(ResponseEvent $event): void
  17.     {
  18.         $response $event->getResponse();
  19.         $context $this->pimcoreContextResolver->getPimcoreContext($event->getRequest());
  20.         if ('admin' !== $context && HttpKernelInterface::MAIN_REQUEST === $event->getRequestType()) {
  21.             if ($this->featureService->isEnabled('google-maps')) {
  22.                 $gmapsKey \Pimcore\Model\WebsiteSetting::getByName('googleMapsKey');
  23.                 if ($gmapsKey) {
  24.                     $gmapsKey $gmapsKey->getData();
  25.                 }
  26.                 if ($gmapsKey) {
  27.                     $f PIMCORE_WEB_ROOT '/bundles/aufwindcookiebot/js/google-maps-cookiebot.js';
  28.                     $initMap '';
  29.                     if (file_exists($f)) {
  30.                         $initMap file_get_contents($f);
  31.                     }
  32.                     $injectScripts = [
  33.                             'google-maps-draft' => '<script defer class="google-maps google-maps-draft" src="/bundles/aufwinddraft/js/frontend/draft-googleMaps-optional.js"></script>',
  34.                             'google-maps-init-google-maps' => '<script>' $initMap '</script>',
  35.                             'google-maps-draft-google-maps-api' => '<script defer async class="google-maps google-maps-api" data-src="https://maps.googleapis.com/maps/api/js?key=' $gmapsKey '&amp;callback=initGoogleMaps"></script>',
  36.                         ];
  37.                     $script implode(''$injectScripts);
  38.                     $content preg_replace("/(<\/head>)/"$script '$1'$response->getContent());
  39.                     $response->setContent($content);
  40.                 }
  41.             }
  42.         }
  43.     }
  44.     public static function getSubscribedEvents()
  45.     {
  46.         return [
  47.             // KernelEvents::CONTROLLER => 'onKernelController',
  48.             KernelEvents::RESPONSE => 'onKernelResponse',
  49.         ];
  50.     }
  51. }