vendor/pimcore/pimcore/lib/Analytics/GoogleTagManager/EventSubscriber/TrackingCodeSubscriber.php line 63

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace Pimcore\Analytics\GoogleTagManager\EventSubscriber;
  16. use Pimcore\Analytics\Google\Tracker;
  17. use Pimcore\Bundle\CoreBundle\EventListener\Traits\EnabledTrait;
  18. use Pimcore\Bundle\CoreBundle\EventListener\Traits\PimcoreContextAwareTrait;
  19. use Pimcore\Bundle\CoreBundle\EventListener\Traits\PreviewRequestTrait;
  20. use Pimcore\Bundle\CoreBundle\EventListener\Traits\ResponseInjectionTrait;
  21. use Pimcore\Bundle\EcommerceFrameworkBundle\Tracking\Tracker\GoogleTagManager;
  22. use Pimcore\Bundle\EcommerceFrameworkBundle\Tracking\TrackingManager;
  23. use Pimcore\Event\Analytics\Google\TagManager\CodeEvent;
  24. use Pimcore\Event\Analytics\GoogleTagManagerEvents;
  25. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  26. use Twig\Environment;
  27. class TrackingCodeSubscriber implements EventSubscriberInterface
  28. {
  29.     use EnabledTrait;
  30.     use ResponseInjectionTrait;
  31.     use PimcoreContextAwareTrait;
  32.     use PreviewRequestTrait;
  33.     /** @var TrackingManager */
  34.     protected $trackingManager;
  35.     /** @var Environment * */
  36.     protected $twig;
  37.     public function __construct(TrackingManager $trackingManagerEnvironment $twig)
  38.     {
  39.         $this->trackingManager $trackingManager;
  40.         $this->twig $twig;
  41.     }
  42.     /**
  43.      * {@inheritdoc}
  44.      *
  45.      * @return array
  46.      */
  47.     public static function getSubscribedEvents()// : array
  48.     {
  49.         return [
  50.             GoogleTagManagerEvents::CODE_HEAD => ['onCodeHead'],
  51.         ];
  52.     }
  53.     public function onCodeHead(CodeEvent $event)
  54.     {
  55.         if (! $this->isEnabled()) {
  56.             return;
  57.         }
  58.         $activeTrackers $this->trackingManager->getActiveTrackers();
  59.         foreach ($activeTrackers as $activeTracker) {
  60.             if ($activeTracker instanceof GoogleTagManager) {
  61.                 $trackedCodes $activeTracker->getTrackedCodes();
  62.                 if (empty($trackedCodes) || ! is_array($trackedCodes)) {
  63.                     return;
  64.                 }
  65.                 $block $event->getBlock(Tracker::BLOCK_BEFORE_SCRIPT_TAG);
  66.                 $code $this->twig->render(
  67.                     '@PimcoreCore/Analytics/Tracking/GoogleTagManager/dataLayer.html.twig',
  68.                     ['trackedCodes' => $trackedCodes]
  69.                 );
  70.                 $block->prepend($code);
  71.             }
  72.         }
  73.     }
  74. }