vendor/pimcore/pimcore/bundles/EcommerceFrameworkBundle/Tracking/Tracker.php line 109

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  * @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  * @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace Pimcore\Bundle\EcommerceFrameworkBundle\Tracking;
  15. use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. abstract class Tracker implements TrackerInterface
  18. {
  19.     /**
  20.      * @var TrackingItemBuilderInterface
  21.      */
  22.     protected $trackingItemBuilder;
  23.     /**
  24.      * @var EngineInterface
  25.      */
  26.     protected $templatingEngine;
  27.     /**
  28.      * @var string
  29.      */
  30.     protected $templatePrefix;
  31.     /**
  32.      * @var string
  33.      */
  34.     protected $templateExtension;
  35.     /**
  36.      * @var array
  37.      */
  38.     protected $assortmentTenants;
  39.     /**
  40.      * @var array
  41.      */
  42.     protected $checkoutTenants;
  43.     /**
  44.      * Tracker constructor.
  45.      *
  46.      * @param TrackingItemBuilderInterface $trackingItemBuilder
  47.      * @param EngineInterface $templatingEngine
  48.      * @param array $options
  49.      * @param array $assortmentTenants
  50.      * @param array $checkoutTenants
  51.      */
  52.     public function __construct(
  53.         TrackingItemBuilderInterface $trackingItemBuilder,
  54.         EngineInterface $templatingEngine,
  55.         array $options = [],
  56.         $assortmentTenants = [],
  57.         $checkoutTenants = []
  58.     ) {
  59.         $this->trackingItemBuilder $trackingItemBuilder;
  60.         $this->templatingEngine $templatingEngine;
  61.         $resolver = new OptionsResolver();
  62.         $this->configureOptions($resolver);
  63.         $this->processOptions($resolver->resolve($options));
  64.         $this->assortmentTenants $assortmentTenants;
  65.         $this->checkoutTenants $checkoutTenants;
  66.     }
  67.     protected function processOptions(array $options)
  68.     {
  69.         $this->templatePrefix $options['template_prefix'];
  70.         $this->templateExtension $options['template_extension'];
  71.     }
  72.     protected function configureOptions(OptionsResolver $resolver)
  73.     {
  74.         $resolver->setRequired(['template_prefix''template_extension']);
  75.         $resolver->setDefaults([
  76.             'template_extension' => 'php',
  77.         ]);
  78.         $resolver->setAllowedTypes('template_prefix''string');
  79.         $resolver->setAllowedTypes('template_extension''string');
  80.     }
  81.     protected function getTemplatePath(string $name)
  82.     {
  83.         return sprintf(
  84.             '%s:%s.js.%s',
  85.             $this->templatePrefix,
  86.             $name,
  87.             $this->templateExtension
  88.         );
  89.     }
  90.     protected function renderTemplate(string $name, array $parameters): string
  91.     {
  92.         return $this->templatingEngine->render(
  93.             $this->getTemplatePath($name),
  94.             $parameters
  95.         );
  96.     }
  97.     /**
  98.      * Remove null values from an object, keep protected keys in any case
  99.      *
  100.      * @param array $data
  101.      * @param array $protectedKeys
  102.      *
  103.      * @return array
  104.      */
  105.     protected function filterNullValues(array $data, array $protectedKeys = [])
  106.     {
  107.         $result = [];
  108.         foreach ($data as $key => $value) {
  109.             $isProtected in_array($key$protectedKeys);
  110.             if (null !== $value || $isProtected) {
  111.                 $result[$key] = $value;
  112.             }
  113.         }
  114.         return $result;
  115.     }
  116.     /**
  117.      * @inheritdoc
  118.      */
  119.     public function getAssortmentTenants(): array
  120.     {
  121.         return $this->assortmentTenants;
  122.     }
  123.     /**
  124.      * @inheritdoc
  125.      */
  126.     public function getCheckoutTenants(): array
  127.     {
  128.         return $this->checkoutTenants;
  129.     }
  130. }