Skip to content

Commit ec102be

Browse files
committed
Merge branch 'MAG-566' into 3.6.2
2 parents e64d557 + 74fb330 commit ec102be

File tree

4 files changed

+117
-38
lines changed

4 files changed

+117
-38
lines changed

Diff for: Helper/PurchaseHelper.php

-9
Original file line numberDiff line numberDiff line change
@@ -249,15 +249,6 @@ protected function makeShipments(Order $order)
249249
return $shipments;
250250
}
251251

252-
public function isAdmin()
253-
{
254-
/** @var \Magento\Framework\ObjectManagerInterface $om */
255-
$om = \Magento\Framework\App\ObjectManager::getInstance();
256-
/** @var \Magento\Framework\App\State $state */
257-
$state = $om->get(\Magento\Framework\App\State::class);
258-
return 'adminhtml' === $state->getAreaCode();
259-
}
260-
261252
/**
262253
* @param $mageAddress Address
263254
* @return SignifydAddress

Diff for: Observer/Order/Save/Before.php

+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<?php
2+
3+
namespace Signifyd\Connect\Observer\Order\Save;
4+
5+
use Magento\Framework\App\State as AppState;
6+
use Magento\Framework\App\RequestInterface;
7+
use Magento\Framework\Event\Observer;
8+
use Magento\Framework\Event\ObserverInterface;
9+
use Magento\Sales\Model\Order;
10+
use Magento\Store\Model\StoreManagerInterface;
11+
use Signifyd\Connect\Logger\Logger;
12+
use Signifyd\Connect\Helper\ConfigHelper;
13+
use Signifyd\Connect\Helper\PurchaseHelper;
14+
15+
class Before implements ObserverInterface
16+
{
17+
/**
18+
* @var Logger;
19+
*/
20+
protected $logger;
21+
22+
/**
23+
* @var AppState
24+
*/
25+
protected $appState;
26+
27+
/**
28+
* @var ConfigHelper
29+
*/
30+
protected $configHelper;
31+
32+
/**
33+
* @var StoreManagerInterface
34+
*/
35+
protected $storeManager;
36+
37+
/**
38+
* @var RequestInterface
39+
*/
40+
protected $request;
41+
42+
/**
43+
* Before constructor.
44+
* @param Logger $loger
45+
* @param AppState $appState
46+
* @param ConfigHelper $configHelper
47+
* @param StoreManagerInterface $storeManager
48+
* @param RequestInterface $request
49+
*/
50+
public function __construct(
51+
Logger $loger,
52+
AppState $appState,
53+
ConfigHelper $configHelper,
54+
StoreManagerInterface $storeManager,
55+
RequestInterface $request
56+
) {
57+
$this->logger = $loger;
58+
$this->appState = $appState;
59+
$this->configHelper = $configHelper;
60+
$this->storeManager = $storeManager;
61+
$this->request = $request;
62+
}
63+
64+
/**
65+
* @param Observer $observer
66+
* @param bool $checkOwnEventsMethods
67+
*/
68+
public function execute(Observer $observer, $checkOwnEventsMethods = true)
69+
{
70+
try {
71+
/** @var $order Order */
72+
$order = $observer->getEvent()->getOrder();
73+
74+
if (!is_object($order)) {
75+
return;
76+
}
77+
78+
if ($this->configHelper->isEnabled($order) == false) {
79+
return;
80+
}
81+
82+
// Saving store code to order, to know where the order is been created
83+
if (empty($order->getData('origin_store_code')) && is_object($this->storeManager)) {
84+
$isAdmin = ('adminhtml' === $this->appState->getAreaCode());
85+
$storeCode = $this->storeManager->getStore($isAdmin ? 'admin' : true)->getCode();
86+
87+
if (!empty($storeCode)) {
88+
$order->setData('origin_store_code', $storeCode);
89+
}
90+
}
91+
92+
// Fix for Magento bug https://github.com/magento/magento2/issues/7227
93+
// x_forwarded_for should be copied from quote, but quote does not have the field on database
94+
if (empty($order->getData('x_forwarded_for')) && is_object($this->request)) {
95+
$xForwardIp = $this->request->getServer('HTTP_X_FORWARDED_FOR');
96+
97+
if (empty($xForwardIp) == false) {
98+
$order->setData('x_forwarded_for', $xForwardIp);
99+
}
100+
}
101+
} catch (\Exception $ex) {
102+
$context = [];
103+
104+
if (isset($order) && $order instanceof Order) {
105+
$context['entity'] = $order;
106+
}
107+
108+
$this->logger->error($ex->getMessage(), $context);
109+
}
110+
}
111+
}

Diff for: Observer/Purchase.php

+2-29
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
class Purchase implements ObserverInterface
2424
{
2525
/**
26-
* @var \Signifyd\Connect\Logger\Logger;
26+
* @var Logger;
2727
*/
2828
protected $logger;
2929

3030
/**
31-
* @var \Signifyd\Connect\Helper\PurchaseHelper
31+
* @var PurchaseHelper
3232
*/
3333
protected $helper;
3434

@@ -126,33 +126,6 @@ public function execute(Observer $observer, $checkOwnEventsMethods = true)
126126
return;
127127
}
128128

129-
$saveOrder = false;
130-
131-
// Saving store code to order, to know where the order is been created
132-
if (empty($order->getData('origin_store_code')) && is_object($this->storeManager)) {
133-
$storeCode = $this->storeManager->getStore($this->helper->isAdmin() ? 'admin' : true)->getCode();
134-
135-
if (!empty($storeCode)) {
136-
$order->setData('origin_store_code', $storeCode);
137-
$saveOrder = true;
138-
}
139-
}
140-
141-
// Fix for Magento bug https://github.com/magento/magento2/issues/7227
142-
// x_forwarded_for should be copied from quote, but quote does not have the field on database
143-
if (empty($order->getData('x_forwarded_for')) && is_object($this->request)) {
144-
$xForwardIp = $this->request->getServer('HTTP_X_FORWARDED_FOR');
145-
146-
if (empty($xForwardIp) == false) {
147-
$order->setData('x_forwarded_for', $xForwardIp);
148-
$saveOrder = true;
149-
}
150-
}
151-
152-
if ($saveOrder) {
153-
$order->save();
154-
}
155-
156129
// Check if a payment is available for this order yet
157130
if ($order->getState() == \Magento\Sales\Model\Order::STATE_PENDING_PAYMENT) {
158131
return;

Diff for: etc/events.xml

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
<observer name="signifydDebugLogs" instance="Signifyd\Connect\Observer\Debug\Order" />
99
</event>
1010

11+
<event name="sales_order_save_before">
12+
<observer name="orderSaveBefore" instance="Signifyd\Connect\Observer\Order\Save\Before" />
13+
</event>
14+
1115
<event name="checkout_submit_all_after">
1216
<observer name="onCheckout" instance="Signifyd\Connect\Observer\Purchase" />
1317
</event>

0 commit comments

Comments
 (0)