Skip to content

Commit 4f03483

Browse files
author
Alexander Akimov
authored
Merge pull request #1159 from magento-folks/bugs
[Folks] Bugfixes
2 parents f797367 + cb9c949 commit 4f03483

File tree

15 files changed

+675
-224
lines changed

15 files changed

+675
-224
lines changed

app/code/Magento/GoogleAnalytics/Block/Ga.php

Lines changed: 107 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
namespace Magento\GoogleAnalytics\Block;
1010

11+
use Magento\Framework\App\ObjectManager;
12+
1113
/**
1214
* GoogleAnalytics Page Block
1315
*
@@ -27,20 +29,28 @@ class Ga extends \Magento\Framework\View\Element\Template
2729
*/
2830
protected $_salesOrderCollection;
2931

32+
/**
33+
* @var \Magento\Cookie\Helper\Cookie
34+
*/
35+
private $cookieHelper;
36+
3037
/**
3138
* @param \Magento\Framework\View\Element\Template\Context $context
3239
* @param \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $salesOrderCollection
3340
* @param \Magento\GoogleAnalytics\Helper\Data $googleAnalyticsData
3441
* @param array $data
42+
* @param \Magento\Cookie\Helper\Cookie|null $cookieHelper
3543
*/
3644
public function __construct(
3745
\Magento\Framework\View\Element\Template\Context $context,
3846
\Magento\Sales\Model\ResourceModel\Order\CollectionFactory $salesOrderCollection,
3947
\Magento\GoogleAnalytics\Helper\Data $googleAnalyticsData,
40-
array $data = []
48+
array $data = [],
49+
\Magento\Cookie\Helper\Cookie $cookieHelper = null
4150
) {
4251
$this->_googleAnalyticsData = $googleAnalyticsData;
4352
$this->_salesOrderCollection = $salesOrderCollection;
53+
$this->cookieHelper = $cookieHelper ?: ObjectManager::getInstance()->get(\Magento\Cookie\Helper\Cookie::class);
4454
parent::__construct($context, $data);
4555
}
4656

@@ -73,22 +83,17 @@ public function getPageName()
7383
* @return string
7484
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference#set
7585
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference#gaObjectMethods
86+
* @deprecated please use getPageTrackingData method
7687
*/
7788
public function getPageTrackingCode($accountId)
7889
{
79-
$pageName = trim($this->getPageName());
80-
$optPageURL = '';
81-
if ($pageName && substr($pageName, 0, 1) == '/' && strlen($pageName) > 1) {
82-
$optPageURL = ", '" . $this->escapeHtmlAttr($pageName, false) . "'";
83-
}
84-
8590
$anonymizeIp = "";
8691
if ($this->_googleAnalyticsData->isAnonymizedIpActive()) {
8792
$anonymizeIp = "\nga('set', 'anonymizeIp', true);";
8893
}
8994

9095
return "\nga('create', '" . $this->escapeHtmlAttr($accountId, false)
91-
. "', 'auto');{$anonymizeIp}\nga('send', 'pageview'{$optPageURL});\n";
96+
. "', 'auto');{$anonymizeIp}\nga('send', 'pageview'{$this->getOptPageUrl()});\n";
9297
}
9398

9499
/**
@@ -99,6 +104,7 @@ public function getPageTrackingCode($accountId)
99104
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#transaction
100105
*
101106
* @return string|void
107+
* @deprecated please use getOrdersTrackingData method
102108
*/
103109
public function getOrdersTrackingCode()
104110
{
@@ -162,4 +168,97 @@ protected function _toHtml()
162168

163169
return parent::_toHtml();
164170
}
171+
172+
/**
173+
* Return cookie restriction mode value.
174+
*
175+
* @return bool
176+
*/
177+
public function isCookieRestrictionModeEnabled()
178+
{
179+
return $this->cookieHelper->isCookieRestrictionModeEnabled();
180+
}
181+
182+
/**
183+
* Return current website id.
184+
*
185+
* @return int
186+
*/
187+
public function getCurrentWebsiteId()
188+
{
189+
return $this->_storeManager->getWebsite()->getId();
190+
}
191+
192+
/**
193+
* Return information about page for GA tracking
194+
*
195+
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference#set
196+
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference#gaObjectMethods
197+
*
198+
* @param string $accountId
199+
* @return array
200+
*/
201+
public function getPageTrackingData($accountId)
202+
{
203+
return [
204+
'optPageUrl' => $this->getOptPageUrl(),
205+
'isAnonymizedIpActive' => $this->_googleAnalyticsData->isAnonymizedIpActive(),
206+
'accountId' => $this->escapeHtmlAttr($accountId, false)
207+
];
208+
}
209+
210+
/**
211+
* Return information about order and items for GA tracking.
212+
*
213+
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#checkout-options
214+
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#measuring-transactions
215+
* @link https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#transaction
216+
*
217+
* @return array
218+
*/
219+
public function getOrdersTrackingData()
220+
{
221+
$result = [];
222+
$orderIds = $this->getOrderIds();
223+
if (empty($orderIds) || !is_array($orderIds)) {
224+
return $result;
225+
}
226+
227+
$collection = $this->_salesOrderCollection->create();
228+
$collection->addFieldToFilter('entity_id', ['in' => $orderIds]);
229+
230+
foreach ($collection as $order) {
231+
foreach ($order->getAllVisibleItems() as $item) {
232+
$result['products'][] = [
233+
'id' => $this->escapeJs($item->getSku()),
234+
'name' => $this->escapeJs($item->getName()),
235+
'price' => $item->getBasePrice(),
236+
'quantity' => $item->getQtyOrdered(),
237+
];
238+
}
239+
$result['orders'][] = [
240+
'id' => $order->getIncrementId(),
241+
'affiliation' => $this->escapeJs($this->_storeManager->getStore()->getFrontendName()),
242+
'revenue' => $order->getBaseGrandTotal(),
243+
'tax' => $order->getBaseTaxAmount(),
244+
'shipping' => $order->getBaseShippingAmount(),
245+
];
246+
}
247+
return $result;
248+
}
249+
250+
/**
251+
* Return page url for tracking.
252+
*
253+
* @return string
254+
*/
255+
private function getOptPageUrl()
256+
{
257+
$optPageURL = '';
258+
$pageName = trim($this->getPageName());
259+
if ($pageName && substr($pageName, 0, 1) == '/' && strlen($pageName) > 1) {
260+
$optPageURL = ", '" . $this->escapeHtmlAttr($pageName, false) . "'";
261+
}
262+
return $optPageURL;
263+
}
165264
}

app/code/Magento/GoogleAnalytics/Helper/Data.php

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
7-
// @codingStandardsIgnoreFile
8-
96
namespace Magento\GoogleAnalytics\Helper;
107

118
use Magento\Store\Model\Store;
9+
use Magento\Store\Model\ScopeInterface;
1210

1311
/**
1412
* GoogleAnalytics data helper
@@ -33,8 +31,8 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
3331
*/
3432
public function isGoogleAnalyticsAvailable($store = null)
3533
{
36-
$accountId = $this->scopeConfig->getValue(self::XML_PATH_ACCOUNT, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store);
37-
return $accountId && $this->scopeConfig->isSetFlag(self::XML_PATH_ACTIVE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store);
34+
$accountId = $this->scopeConfig->getValue(self::XML_PATH_ACCOUNT, ScopeInterface::SCOPE_STORE, $store);
35+
return $accountId && $this->scopeConfig->isSetFlag(self::XML_PATH_ACTIVE, ScopeInterface::SCOPE_STORE, $store);
3836
}
3937

4038
/**
@@ -45,7 +43,6 @@ public function isGoogleAnalyticsAvailable($store = null)
4543
*/
4644
public function isAnonymizedIpActive($store = null)
4745
{
48-
$anonymize = $this->scopeConfig->getValue(self::XML_PATH_ANONYMIZE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store);
49-
return $anonymize;
46+
return $this->scopeConfig->getValue(self::XML_PATH_ANONYMIZE, ScopeInterface::SCOPE_STORE, $store);
5047
}
5148
}

0 commit comments

Comments
 (0)