Skip to content

Commit a2293fc

Browse files
committed
MAGETWO-86143: Disable statistic collecting for Reports module
1 parent ec81173 commit a2293fc

13 files changed

+280
-24
lines changed

app/code/Magento/Customer/Model/Visitor.php

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
namespace Magento\Customer\Model;
88

9-
use Magento\Framework\Indexer\StateInterface;
9+
use Magento\Framework\App\ObjectManager;
10+
use Magento\Framework\App\RequestSafetyInterface;
1011

1112
/**
1213
* Class Visitor
@@ -67,6 +68,11 @@ class Visitor extends \Magento\Framework\Model\AbstractModel
6768
*/
6869
protected $indexerRegistry;
6970

71+
/**
72+
* @var RequestSafetyInterface
73+
*/
74+
private $requestSafety;
75+
7076
/**
7177
* @param \Magento\Framework\Model\Context $context
7278
* @param \Magento\Framework\Registry $registry
@@ -95,7 +101,8 @@ public function __construct(
95101
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
96102
array $ignoredUserAgents = [],
97103
array $ignores = [],
98-
array $data = []
104+
array $data = [],
105+
RequestSafetyInterface $requestSafety = null
99106
) {
100107
$this->session = $session;
101108
$this->httpHeader = $httpHeader;
@@ -105,6 +112,7 @@ public function __construct(
105112
$this->scopeConfig = $scopeConfig;
106113
$this->dateTime = $dateTime;
107114
$this->indexerRegistry = $indexerRegistry;
115+
$this->requestSafety = $requestSafety ?? ObjectManager::getInstance()->get(RequestSafetyInterface::class);
108116
}
109117

110118
/**
@@ -135,6 +143,18 @@ public function setSkipRequestLogging($skipRequestLogging)
135143
return $this;
136144
}
137145

146+
/**
147+
* @return bool
148+
*/
149+
private function isSkipRequestLogging()
150+
{
151+
// do not handle visitor session for safe methods (e.g. GET request)
152+
if ($this->requestSafety->isSafeMethod()) {
153+
return true;
154+
}
155+
return $this->skipRequestLogging;
156+
}
157+
138158
/**
139159
* Initialization visitor by request
140160
*
@@ -145,7 +165,7 @@ public function setSkipRequestLogging($skipRequestLogging)
145165
*/
146166
public function initByRequest($observer)
147167
{
148-
if ($this->skipRequestLogging || $this->isModuleIgnored($observer)) {
168+
if ($this->isSkipRequestLogging() || $this->isModuleIgnored($observer)) {
149169
return $this;
150170
}
151171

@@ -177,7 +197,7 @@ public function initByRequest($observer)
177197
*/
178198
public function saveByRequest($observer)
179199
{
180-
if ($this->skipRequestLogging || $this->isModuleIgnored($observer)) {
200+
if ($this->isSkipRequestLogging() || $this->isModuleIgnored($observer)) {
181201
return $this;
182202
}
183203

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Reports\Model\Event;
7+
8+
use Magento\Framework\App\Config\ScopeConfigInterface;
9+
use Magento\Framework\Exception\InputException;
10+
use Magento\Reports\Model\Event;
11+
12+
/**
13+
* Is report for specified event type is enabled in system configuration
14+
*/
15+
class IsReportEnabled
16+
{
17+
/**
18+
* @var ScopeConfigInterface
19+
*/
20+
private $scopeConfig;
21+
22+
/**
23+
* @param ScopeConfigInterface $scopeConfig
24+
*/
25+
public function __construct(ScopeConfigInterface $scopeConfig)
26+
{
27+
$this->scopeConfig = $scopeConfig;
28+
}
29+
30+
/**
31+
* Is report for specified event type is enabled in system configuration
32+
*
33+
* @param string $reportEventType
34+
* @return bool
35+
* @throws InputException
36+
*/
37+
public function execute(string $reportEventType): bool
38+
{
39+
return (bool)$this->scopeConfig->getValue('reports/options/enabled')
40+
&& (bool)$this->scopeConfig->getValue($this->getConfigPathByEventType($reportEventType));
41+
}
42+
43+
/**
44+
* @param string $reportEventType
45+
* @return string
46+
* @throws InputException
47+
*/
48+
private function getConfigPathByEventType(string $reportEventType): ?string
49+
{
50+
$typeToPathMap = [
51+
Event::EVENT_PRODUCT_VIEW => 'reports/options/product_view_enabled',
52+
Event::EVENT_PRODUCT_SEND => 'reports/options/product_send_enabled',
53+
Event::EVENT_PRODUCT_COMPARE => 'reports/options/product_compare_enabled',
54+
Event::EVENT_PRODUCT_TO_CART => 'reports/options/product_to_cart_enabled',
55+
Event::EVENT_PRODUCT_TO_WISHLIST => 'reports/options/product_to_wishlist_enabled',
56+
Event::EVENT_WISHLIST_SHARE => 'reports/options/wishlist_share_enabled',
57+
];
58+
59+
if (!isset($typeToPathMap[$reportEventType])) {
60+
throw new InputException(
61+
__('System configuration is not found for report event type "%1"', $reportEventType)
62+
);
63+
}
64+
65+
return $typeToPathMap[$reportEventType];
66+
}
67+
}

app/code/Magento/Reports/Observer/CatalogProductCompareAddProductObserver.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Reports\Observer;
77

88
use Magento\Framework\Event\ObserverInterface;
9+
use Magento\Reports\Model\Event;
910

1011
/**
1112
* Reports Event observer model
@@ -32,22 +33,30 @@ class CatalogProductCompareAddProductObserver implements ObserverInterface
3233
*/
3334
protected $eventSaver;
3435

36+
/**
37+
* @var \Magento\Reports\Model\Event\IsReportEnabled
38+
*/
39+
private $isReportEnabled;
40+
3541
/**
3642
* @param \Magento\Reports\Model\Product\Index\ComparedFactory $productCompFactory
3743
* @param \Magento\Customer\Model\Session $customerSession
3844
* @param \Magento\Customer\Model\Visitor $customerVisitor
3945
* @param EventSaver $eventSaver
46+
* @param Event\IsReportEnabled $isReportEnabled
4047
*/
4148
public function __construct(
4249
\Magento\Reports\Model\Product\Index\ComparedFactory $productCompFactory,
4350
\Magento\Customer\Model\Session $customerSession,
4451
\Magento\Customer\Model\Visitor $customerVisitor,
45-
EventSaver $eventSaver
52+
EventSaver $eventSaver,
53+
\Magento\Reports\Model\Event\IsReportEnabled $isReportEnabled
4654
) {
4755
$this->_productCompFactory = $productCompFactory;
4856
$this->_customerSession = $customerSession;
4957
$this->_customerVisitor = $customerVisitor;
5058
$this->eventSaver = $eventSaver;
59+
$this->isReportEnabled = $isReportEnabled;
5160
}
5261

5362
/**
@@ -60,6 +69,9 @@ public function __construct(
6069
*/
6170
public function execute(\Magento\Framework\Event\Observer $observer)
6271
{
72+
if (!$this->isReportEnabled->execute(Event::EVENT_PRODUCT_COMPARE)) {
73+
return ;
74+
}
6375
$productId = $observer->getEvent()->getProduct()->getId();
6476
$viewData = ['product_id' => $productId];
6577
if ($this->_customerSession->isLoggedIn()) {
@@ -69,6 +81,6 @@ public function execute(\Magento\Framework\Event\Observer $observer)
6981
}
7082
$this->_productCompFactory->create()->setData($viewData)->save()->calculate();
7183

72-
$this->eventSaver->save(\Magento\Reports\Model\Event::EVENT_PRODUCT_COMPARE, $productId);
84+
$this->eventSaver->save(Event::EVENT_PRODUCT_COMPARE, $productId);
7385
}
7486
}

app/code/Magento/Reports/Observer/CatalogProductCompareClearObserver.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,20 @@ class CatalogProductCompareClearObserver implements ObserverInterface
1717
*/
1818
protected $_productCompFactory;
1919

20+
/**
21+
* @var \Magento\Reports\Model\Event\IsReportEnabled
22+
*/
23+
private $isReportEnabled;
24+
2025
/**
2126
* @param \Magento\Reports\Model\Product\Index\ComparedFactory $productCompFactory
2227
*/
2328
public function __construct(
24-
\Magento\Reports\Model\Product\Index\ComparedFactory $productCompFactory
29+
\Magento\Reports\Model\Product\Index\ComparedFactory $productCompFactory,
30+
\Magento\Reports\Model\Event\IsReportEnabled $isReportEnabled
2531
) {
2632
$this->_productCompFactory = $productCompFactory;
33+
$this->isReportEnabled = $isReportEnabled;
2734
}
2835

2936
/**
@@ -37,8 +44,10 @@ public function __construct(
3744
*/
3845
public function execute(\Magento\Framework\Event\Observer $observer)
3946
{
40-
$this->_productCompFactory->create()->calculate();
47+
if (!$this->isReportEnabled->execute(\Magento\Reports\Model\Event::EVENT_PRODUCT_VIEW)) {
48+
return ;
49+
}
4150

42-
return $this;
51+
$this->_productCompFactory->create()->calculate();
4352
}
4453
}

app/code/Magento/Reports/Observer/CatalogProductViewObserver.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Reports\Observer;
77

88
use Magento\Framework\Event\ObserverInterface;
9+
use Magento\Reports\Model\Event;
910

1011
/**
1112
* Reports Event observer model
@@ -37,6 +38,11 @@ class CatalogProductViewObserver implements ObserverInterface
3738
*/
3839
protected $eventSaver;
3940

41+
/**
42+
* @var \Magento\Reports\Model\Event\IsReportEnabled
43+
*/
44+
private $isReportEnabled;
45+
4046
/**
4147
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
4248
* @param \Magento\Reports\Model\Product\Index\ViewedFactory $productIndxFactory
@@ -49,13 +55,15 @@ public function __construct(
4955
\Magento\Reports\Model\Product\Index\ViewedFactory $productIndxFactory,
5056
\Magento\Customer\Model\Session $customerSession,
5157
\Magento\Customer\Model\Visitor $customerVisitor,
52-
EventSaver $eventSaver
58+
EventSaver $eventSaver,
59+
\Magento\Reports\Model\Event\IsReportEnabled $isReportEnabled
5360
) {
5461
$this->_storeManager = $storeManager;
5562
$this->_productIndxFactory = $productIndxFactory;
5663
$this->_customerSession = $customerSession;
5764
$this->_customerVisitor = $customerVisitor;
5865
$this->eventSaver = $eventSaver;
66+
$this->isReportEnabled = $isReportEnabled;
5967
}
6068

6169
/**
@@ -66,6 +74,10 @@ public function __construct(
6674
*/
6775
public function execute(\Magento\Framework\Event\Observer $observer)
6876
{
77+
if (!$this->isReportEnabled->execute(Event::EVENT_PRODUCT_VIEW)) {
78+
return ;
79+
}
80+
6981
$productId = $observer->getEvent()->getProduct()->getId();
7082

7183
$viewData['product_id'] = $productId;
@@ -78,6 +90,6 @@ public function execute(\Magento\Framework\Event\Observer $observer)
7890

7991
$this->_productIndxFactory->create()->setData($viewData)->save()->calculate();
8092

81-
$this->eventSaver->save(\Magento\Reports\Model\Event::EVENT_PRODUCT_VIEW, $productId);
93+
$this->eventSaver->save(Event::EVENT_PRODUCT_VIEW, $productId);
8294
}
8395
}

app/code/Magento/Reports/Observer/CheckoutCartAddProductObserver.php

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Reports\Observer;
77

88
use Magento\Framework\Event\ObserverInterface;
9+
use Magento\Reports\Model\Event;
910

1011
/**
1112
* Reports Event observer model
@@ -17,29 +18,38 @@ class CheckoutCartAddProductObserver implements ObserverInterface
1718
*/
1819
protected $eventSaver;
1920

21+
/**
22+
* @var Event\IsReportEnabled
23+
*/
24+
private $isReportEnabled;
25+
2026
/**
2127
* @param EventSaver $eventSaver
2228
*/
2329
public function __construct(
24-
EventSaver $eventSaver
30+
EventSaver $eventSaver,
31+
\Magento\Reports\Model\Event\IsReportEnabled $isReportEnabled
2532
) {
2633
$this->eventSaver = $eventSaver;
34+
$this->isReportEnabled = $isReportEnabled;
2735
}
2836

2937
/**
3038
* Add product to shopping cart action
3139
*
3240
* @param \Magento\Framework\Event\Observer $observer
33-
* @return $this
41+
* @return void
3442
*/
3543
public function execute(\Magento\Framework\Event\Observer $observer)
3644
{
45+
if (!$this->isReportEnabled->execute(Event::EVENT_PRODUCT_TO_CART)) {
46+
return ;
47+
}
48+
3749
$quoteItem = $observer->getEvent()->getItem();
3850
if (!$quoteItem->getId() && !$quoteItem->getParentItem()) {
3951
$productId = $quoteItem->getProductId();
40-
$this->eventSaver->save(\Magento\Reports\Model\Event::EVENT_PRODUCT_TO_CART, $productId);
52+
$this->eventSaver->save(Event::EVENT_PRODUCT_TO_CART, $productId);
4153
}
42-
43-
return $this;
4454
}
4555
}

app/code/Magento/Reports/Observer/SendfriendProductObserver.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Reports\Observer;
77

88
use Magento\Framework\Event\ObserverInterface;
9+
use Magento\Reports\Model\Event;
910

1011
/**
1112
* Reports Event observer model
@@ -17,13 +18,20 @@ class SendfriendProductObserver implements ObserverInterface
1718
*/
1819
protected $eventSaver;
1920

21+
/**
22+
* @var Event\IsReportEnabled
23+
*/
24+
private $isReportEnabled;
25+
2026
/**
2127
* @param EventSaver $eventSaver
2228
*/
2329
public function __construct(
24-
EventSaver $eventSaver
30+
EventSaver $eventSaver,
31+
\Magento\Reports\Model\Event\IsReportEnabled $isReportEnabled
2532
) {
2633
$this->eventSaver = $eventSaver;
34+
$this->isReportEnabled = $isReportEnabled;
2735
}
2836

2937
/**
@@ -34,8 +42,12 @@ public function __construct(
3442
*/
3543
public function execute(\Magento\Framework\Event\Observer $observer)
3644
{
45+
if (!$this->isReportEnabled->execute(Event::EVENT_PRODUCT_SEND)) {
46+
return ;
47+
}
48+
3749
$this->eventSaver->save(
38-
\Magento\Reports\Model\Event::EVENT_PRODUCT_SEND,
50+
Event::EVENT_PRODUCT_SEND,
3951
$observer->getEvent()->getProduct()->getId()
4052
);
4153
}

0 commit comments

Comments
 (0)