Skip to content

Commit 9652d7a

Browse files
authored
Merge pull request #48 from stape-io/release/v1.0.27
Release/v1.0.27
2 parents 7935697 + eacdcc6 commit 9652d7a

File tree

22 files changed

+236
-40
lines changed

22 files changed

+236
-40
lines changed

Block/Gtm.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Magento\Framework\View\Element\Template;
66
use Stape\Gtm\Model\ConfigProvider;
7+
use Stape\Gtm\Model\Datalayer\Formatter\Event as EventFormatter;
78

89
class Gtm extends \Magento\Framework\View\Element\Template
910
{
@@ -14,6 +15,11 @@ class Gtm extends \Magento\Framework\View\Element\Template
1415
*/
1516
protected $configProvider;
1617

18+
/**
19+
* @var EventFormatter $eventFormatter
20+
*/
21+
protected $eventFormatter;
22+
1723
/**
1824
* Define class dependencies
1925
*
@@ -24,10 +30,12 @@ class Gtm extends \Magento\Framework\View\Element\Template
2430
public function __construct(
2531
Template\Context $context,
2632
ConfigProvider $configProvider,
33+
EventFormatter $eventFormatter,
2734
array $data = []
2835
) {
2936
parent::__construct($context, $data);
3037
$this->configProvider = $configProvider;
38+
$this->eventFormatter = $eventFormatter;
3139
}
3240

3341
/**
@@ -135,4 +143,14 @@ public function getIdParamName()
135143
{
136144
return $this->configProvider->getCustomLoader() && $this->configProvider->getCustomDomain() ? 'st' : 'id';
137145
}
146+
147+
/**
148+
* Retrieve formatted event name
149+
*
150+
* @return string
151+
*/
152+
public function getEventSuffix()
153+
{
154+
return $this->configProvider->isStapeEventSuffixActive() ? EventFormatter::STAPE_EVENT_SUFFIX : '';
155+
}
138156
}

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog
22

3+
v1.0.27
4+
- added option to enable/disable '_stape' suffix in Datalayer events;
5+
36
v1.0.26
47
- removed unneeded CSP rules
58
- added option to configure collection size for datalayer

Model/ConfigProvider.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ class ConfigProvider
5353
*/
5454
public const XPATH_USER_DATA_ENABLED = 'stape_gtm/datalayer/userdata';
5555

56+
/*
57+
* XPATH for flag to check if '_stape' suffix has to be added to event names
58+
*/
59+
public const XPATH_DATALAYER_STAPE_SUFFIX_ACTIVE = 'stape_gtm/datalayer/stape_suffix_active';
60+
5661
/*
5762
* XPATH for collection size on category page to be pushed to datalayer
5863
*/
@@ -290,4 +295,19 @@ public function getCollectionSize($scopeCode = null): int
290295
{
291296
return (int) $this->scopeConfig->getValue(self::XPATH_COLLECTION_SIZE, ScopeInterface::SCOPE_STORE, $scopeCode);
292297
}
298+
299+
/**
300+
* Check if '_stape' suffix has to be added to event names in datalayer
301+
*
302+
* @param string|int $scopeCode
303+
* @return bool
304+
*/
305+
public function isStapeEventSuffixActive($scopeCode = null)
306+
{
307+
return $this->scopeConfig->isSetFlag(
308+
self::XPATH_DATALAYER_STAPE_SUFFIX_ACTIVE,
309+
ScopeInterface::SCOPE_STORE,
310+
$scopeCode
311+
);
312+
}
293313
}

Model/Data/SessionDataProvider.php

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,33 @@
22

33
namespace Stape\Gtm\Model\Data;
44

5+
use Magento\Checkout\Model\Session;
6+
use Stape\Gtm\Model\Datalayer\Formatter\Event as EventFormatter;
7+
58
class SessionDataProvider implements DataProviderInterface
69
{
7-
10+
/**
11+
* @var Session $checkoutSession
12+
*/
813
private $checkoutSession;
914

15+
/**
16+
* @var EventFormatter $eventFormatter
17+
*/
18+
private $eventFormatter;
19+
1020
/**
1121
* Define class dependencies
1222
*
13-
* @param \Magento\Checkout\Model\Session $checkoutSession
23+
* @param Session $checkoutSession
24+
* @param EventFormatter $eventFormatter
1425
*/
15-
public function __construct(\Magento\Checkout\Model\Session $checkoutSession)
16-
{
26+
public function __construct(
27+
Session $checkoutSession,
28+
EventFormatter $eventFormatter
29+
) {
1730
$this->checkoutSession = $checkoutSession;
31+
$this->eventFormatter = $eventFormatter;
1832
}
1933

2034
/**
@@ -37,7 +51,7 @@ public function get()
3751
public function add($eventName, $data)
3852
{
3953
$gtmEvents = $this->get();
40-
$gtmEvents[$eventName] = $data;
54+
$gtmEvents[$this->eventFormatter->formatName($eventName)] = $data;
4155
$this->checkoutSession->setStapeGtmEvents($gtmEvents);
4256
}
4357

Model/Data/Webhook/CookieList.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace Stape\Gtm\Model\Data\Webhook;
4+
5+
class CookieList
6+
{
7+
public function getAll()
8+
{
9+
return [
10+
'_fbc',
11+
'_fbp',
12+
'FPGCLAW',
13+
'_gcl_aw',
14+
'ttclid',
15+
'_dcid',
16+
'FPID',
17+
'FPLC',
18+
'_ttp',
19+
'FPGCLGB',
20+
'li_fat_id',
21+
'taboola_cid',
22+
'outbrain_cid',
23+
'impact_cid',
24+
'_epik',
25+
'_scid',
26+
'_scclid',
27+
'_uetmsclkid',
28+
'_ga',
29+
'FPAU',
30+
'_gcl_au',
31+
'_gcl_gb',
32+
'_gcl_gs',
33+
'_gcl_dc',
34+
'FPGCLGS',
35+
'FPGCLDC',
36+
'FPGSID',
37+
'awin_awc',
38+
'awin_source',
39+
'rakuten_site_id',
40+
'rakuten_time_entered',
41+
'rakuten_ran_mid',
42+
'rakuten_ran_eaid',
43+
'rakuten_ran_site_id',
44+
'cje',
45+
'stape_klaviyo_kx',
46+
'stape_klaviyo_email',
47+
'Stape',
48+
];
49+
}
50+
}
51+
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Stape\Gtm\Model\Datalayer\Formatter;
4+
5+
use Stape\Gtm\Model\ConfigProvider;
6+
7+
class Event
8+
{
9+
/*
10+
* Stape event suffix
11+
*/
12+
const STAPE_EVENT_SUFFIX = '_stape';
13+
14+
/**
15+
* @var ConfigProvider $configProvider
16+
*/
17+
private $configProvider;
18+
19+
/**
20+
* Define class dependencies
21+
*
22+
* @param ConfigProvider $configProvider
23+
*/
24+
public function __construct(ConfigProvider $configProvider)
25+
{
26+
$this->configProvider = $configProvider;
27+
}
28+
29+
/**
30+
* @param string $eventName
31+
* @param string|int $scopeCode
32+
* @return string
33+
*/
34+
public function formatName($eventName, $scopeCode = null)
35+
{
36+
if ($this->configProvider->isStapeEventSuffixActive($scopeCode)) {
37+
return $eventName . self::STAPE_EVENT_SUFFIX;
38+
}
39+
40+
return $eventName;
41+
}
42+
}

Observer/AddToCartComplete.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public function execute(Observer $observer)
8484
$qty = 1;
8585
}
8686
$category = $this->categoryResolver->resolve($product);
87-
$this->dataProvider->add('add_to_cart_stape', [
87+
$this->dataProvider->add('add_to_cart', [
8888
'currency' => $this->checkoutSession->getQuote()->getBaseCurrencyCode(),
8989
'items' => [
9090
[

Observer/OrderSaveCommitAfter.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use \Magento\Sales\Api\OrderPaymentRepositoryInterface;
99
use Psr\Log\LoggerInterface;
1010
use Stape\Gtm\Model\ConfigProvider;
11+
use Stape\Gtm\Model\Data\Webhook\CookieList as WebhookCookies;
1112
use Stape\Gtm\Model\Webhook\Adapter;
1213

1314
class OrderSaveCommitAfter implements ObserverInterface
@@ -38,13 +39,7 @@ class OrderSaveCommitAfter implements ObserverInterface
3839
private $logger;
3940

4041
/** @var string[] */
41-
private $cookies = [
42-
'_fbc',
43-
'_fbp',
44-
'FPGCLAW',
45-
'_gcl_aw',
46-
'ttclid'
47-
];
42+
private $cookies = [];
4843

4944
/**
5045
* Define class dependencies
@@ -53,20 +48,23 @@ class OrderSaveCommitAfter implements ObserverInterface
5348
* @param Adapter $adapter
5449
* @param CookieManagerInterface $cookieManager
5550
* @param OrderPaymentRepositoryInterface $orderPaymentRepository
51+
* @param WebhookCookies $cookieList
5652
* @param LoggerInterface $logger
5753
*/
5854
public function __construct(
5955
ConfigProvider $configProvider,
6056
Adapter $adapter,
6157
CookieManagerInterface $cookieManager,
6258
OrderPaymentRepositoryInterface $orderPaymentRepository,
59+
WebhookCookies $cookieList,
6360
LoggerInterface $logger
6461
) {
6562
$this->configProvider = $configProvider;
6663
$this->adapter = $adapter;
6764
$this->cookieManager = $cookieManager;
6865
$this->orderPaymentRepository = $orderPaymentRepository;
6966
$this->logger = $logger;
67+
$this->cookies = $cookieList->getAll();
7068
}
7169

7270
/**

Observer/QuoteSubmitSuccessObserver.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Magento\Framework\Event\ObserverInterface;
77
use Magento\Framework\Stdlib\CookieManagerInterface;
88
use Stape\Gtm\Model\ConfigProvider;
9+
use Stape\Gtm\Model\Data\Webhook\CookieList as WebhookCookies;
910
use Stape\Gtm\Model\Webhook\Adapter;
1011

1112
class QuoteSubmitSuccessObserver implements ObserverInterface
@@ -26,29 +27,26 @@ class QuoteSubmitSuccessObserver implements ObserverInterface
2627
private $cookieManager;
2728

2829
/** @var string[] */
29-
private $cookies = [
30-
'_fbc',
31-
'_fbp',
32-
'FPGCLAW',
33-
'_gcl_aw',
34-
'ttclid'
35-
];
30+
private $cookies = [];
3631

3732
/**
3833
* Define class dependencies
3934
*
4035
* @param ConfigProvider $configProvider
4136
* @param Adapter $adapter
37+
* @param WebhookCookies $adapter
4238
* @param CookieManagerInterface $cookieManager
4339
*/
4440
public function __construct(
4541
ConfigProvider $configProvider,
4642
Adapter $adapter,
43+
WebhookCookies $cookieList,
4744
CookieManagerInterface $cookieManager
4845
) {
4946
$this->configProvider = $configProvider;
5047
$this->adapter = $adapter;
5148
$this->cookieManager = $cookieManager;
49+
$this->cookies = $cookieList->getAll();
5250
}
5351

5452
/**

Plugin/Checkout/Cart/DeletePlugin.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public function aroundExecute(Delete $subject, callable $proceed)
9696
$result = $proceed();
9797

9898
if ($item->isDeleted()) {
99-
$this->dataProvider->add('remove_from_cart_stape', [
99+
$this->dataProvider->add('remove_from_cart', [
100100
'items' => [
101101
[
102102
'item_name' => $item->getName(),

0 commit comments

Comments
 (0)