vendor/pimcore/pimcore/lib/Targeting/EventListener/PiwikVisitorIdListener.php line 44

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 Enterprise License (PEL)
  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 PEL
  14.  */
  15. namespace Pimcore\Targeting\EventListener;
  16. use Pimcore\Analytics\Piwik\Event\TrackingDataEvent;
  17. use Pimcore\Analytics\Piwik\Tracker;
  18. use Pimcore\Event\Analytics\PiwikEvents;
  19. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  20. class PiwikVisitorIdListener implements EventSubscriberInterface
  21. {
  22.     /**
  23.      * @var TargetingListener
  24.      */
  25.     private $targetingListener;
  26.     public function __construct(TargetingListener $targetingListener)
  27.     {
  28.         $this->targetingListener $targetingListener;
  29.     }
  30.     public static function getSubscribedEvents(): array
  31.     {
  32.         return [
  33.             PiwikEvents::CODE_TRACKING_DATA => 'onPiwikTrackingData',
  34.         ];
  35.     }
  36.     public function onPiwikTrackingData(TrackingDataEvent $event)
  37.     {
  38.         if (!$this->targetingListener->isEnabled()) {
  39.             return;
  40.         }
  41.         $snippet = <<<'EOF'
  42. _paq.push([function() { 'undefined' !== typeof window._ptg && _ptg.api.setVisitorId(this.getVisitorId()); }]);
  43. EOF;
  44.         // sets visitor ID to piwik's user ID
  45.         $event->getBlock(Tracker::BLOCK_AFTER_TRACK)->append($snippet);
  46.     }
  47. }