custom/plugins/WbmTagManagerEcomm/src/Utility/SessionUtility.php line 18

Open in your IDE?
  1. <?php
  2. namespace Wbm\TagManagerEcomm\Utility;
  3. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  4. class SessionUtility
  5. {
  6.     public const ATTRIBUTE_NAME 'wbm-stored-datalayer';
  7.     public const UPDATE_FLAG 'wbm-stored-shouldUpdate';
  8.     public const ADDCART_UPDATEFLAG_VALUE 'cartaddprice';
  9.     public const ADDCART_CART_ITEMS 'wbm-stored-addCart-addedCartItems';
  10.     public static function injectSessionVars(array $dataLayerSessionInterface $session): array
  11.     {
  12.         if (!$session->has(self::UPDATE_FLAG)) {
  13.             return $dataLayer;
  14.         }
  15.         if ($session->get(self::UPDATE_FLAG) === self::ADDCART_UPDATEFLAG_VALUE) {
  16.             try {
  17.                 foreach ($dataLayer as &$dLayer) {
  18.                     $dLayer json_decode($dLayertrue512);
  19.                     foreach ($dLayer['ecommerce']['add']['products'] as &$product) {
  20.                         $lineItems $session->get(self::ADDCART_CART_ITEMS);
  21.                         $product['price'] = $lineItems[$product['id']];
  22.                     }
  23.                     unset($product);
  24.                     $dLayer json_encode($dLayer);
  25.                 }
  26.             } catch (\Throwable $t) {
  27.                 // just to make sure session vars are removed on error
  28.             }
  29.             $session->remove(self::UPDATE_FLAG);
  30.             $session->remove(self::ADDCART_CART_ITEMS);
  31.         }
  32.         return $dataLayer;
  33.     }
  34. }