Skip to content

Commit 68e7d8b

Browse files
author
Oleksii Korshenko
authored
MAGETWO-69482: Make Sales' emails $transport changeable from an observer #9755
2 parents ef76679 + ac6dde5 commit 68e7d8b

File tree

14 files changed

+92
-29
lines changed

14 files changed

+92
-29
lines changed

app/code/Magento/Sales/Model/Order/Creditmemo/Sender/EmailSender.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
use Magento\Sales\Model\Order\Email\Sender;
99
use Magento\Sales\Model\Order\Creditmemo\SenderInterface;
10+
use Magento\Framework\DataObject;
1011

1112
/**
1213
* Email notification sender for Creditmemo.
14+
*
15+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1316
*/
1417
class EmailSender extends Sender implements SenderInterface
1518
{
@@ -106,13 +109,17 @@ public function send(
106109
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
107110
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
108111
];
112+
$transportObject = new DataObject($transport);
109113

114+
/**
115+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
116+
*/
110117
$this->eventManager->dispatch(
111118
'email_creditmemo_set_template_vars_before',
112-
['sender' => $this, 'transport' => $transport]
119+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
113120
);
114121

115-
$this->templateContainer->setTemplateVars($transport);
122+
$this->templateContainer->setTemplateVars($transportObject->getData());
116123

117124
if ($this->checkAndSend($order)) {
118125
$creditmemo->setEmailSent(true);

app/code/Magento/Sales/Model/Order/Email/Sender/CreditmemoCommentSender.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Magento\Sales\Model\Order\Email\NotifySender;
1313
use Magento\Sales\Model\Order\Address\Renderer;
1414
use Magento\Framework\Event\ManagerInterface;
15+
use Magento\Framework\DataObject;
1516

1617
/**
1718
* Class CreditmemoCommentSender
@@ -71,13 +72,17 @@ public function send(Creditmemo $creditmemo, $notify = true, $comment = '')
7172
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
7273
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
7374
];
75+
$transportObject = new DataObject($transport);
7476

77+
/**
78+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
79+
*/
7580
$this->eventManager->dispatch(
7681
'email_creditmemo_comment_set_template_vars_before',
77-
['sender' => $this, 'transport' => $transport]
82+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
7883
);
7984

80-
$this->templateContainer->setTemplateVars($transport);
85+
$this->templateContainer->setTemplateVars($transportObject->getData());
8186

8287
return $this->checkAndSend($order, $notify);
8388
}

app/code/Magento/Sales/Model/Order/Email/Sender/CreditmemoSender.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Sales\Model\ResourceModel\Order\Creditmemo as CreditmemoResource;
1515
use Magento\Sales\Model\Order\Address\Renderer;
1616
use Magento\Framework\Event\ManagerInterface;
17+
use Magento\Framework\DataObject;
1718

1819
/**
1920
* Class CreditmemoSender
@@ -102,7 +103,7 @@ public function send(Creditmemo $creditmemo, $forceSyncMode = false)
102103

103104
if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) {
104105
$order = $creditmemo->getOrder();
105-
106+
106107
$transport = [
107108
'order' => $order,
108109
'creditmemo' => $creditmemo,
@@ -113,13 +114,17 @@ public function send(Creditmemo $creditmemo, $forceSyncMode = false)
113114
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
114115
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
115116
];
117+
$transportObject = new DataObject($transport);
116118

119+
/**
120+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
121+
*/
117122
$this->eventManager->dispatch(
118123
'email_creditmemo_set_template_vars_before',
119-
['sender' => $this, 'transport' => $transport]
124+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
120125
);
121126

122-
$this->templateContainer->setTemplateVars($transport);
127+
$this->templateContainer->setTemplateVars($transportObject->getData());
123128

124129
if ($this->checkAndSend($order)) {
125130
$creditmemo->setEmailSent(true);

app/code/Magento/Sales/Model/Order/Email/Sender/InvoiceCommentSender.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Magento\Sales\Model\Order\Invoice;
1313
use Magento\Sales\Model\Order\Address\Renderer;
1414
use Magento\Framework\Event\ManagerInterface;
15+
use Magento\Framework\DataObject;
1516

1617
/**
1718
* Class InvoiceCommentSender
@@ -71,13 +72,17 @@ public function send(Invoice $invoice, $notify = true, $comment = '')
7172
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
7273
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
7374
];
75+
$transportObject = new DataObject($transport);
7476

77+
/**
78+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
79+
*/
7580
$this->eventManager->dispatch(
7681
'email_invoice_comment_set_template_vars_before',
77-
['sender' => $this, 'transport' => $transport]
82+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
7883
);
7984

80-
$this->templateContainer->setTemplateVars($transport);
85+
$this->templateContainer->setTemplateVars($transportObject->getData());
8186

8287
return $this->checkAndSend($order, $notify);
8388
}

app/code/Magento/Sales/Model/Order/Email/Sender/InvoiceSender.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Sales\Model\ResourceModel\Order\Invoice as InvoiceResource;
1515
use Magento\Sales\Model\Order\Address\Renderer;
1616
use Magento\Framework\Event\ManagerInterface;
17+
use Magento\Framework\DataObject;
1718

1819
/**
1920
* Class InvoiceSender
@@ -113,13 +114,17 @@ public function send(Invoice $invoice, $forceSyncMode = false)
113114
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
114115
'formattedBillingAddress' => $this->getFormattedBillingAddress($order)
115116
];
117+
$transportObject = new DataObject($transport);
116118

119+
/**
120+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
121+
*/
117122
$this->eventManager->dispatch(
118123
'email_invoice_set_template_vars_before',
119-
['sender' => $this, 'transport' => $transport]
124+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
120125
);
121126

122-
$this->templateContainer->setTemplateVars($transport);
127+
$this->templateContainer->setTemplateVars($transportObject->getData());
123128

124129
if ($this->checkAndSend($order)) {
125130
$invoice->setEmailSent(true);

app/code/Magento/Sales/Model/Order/Email/Sender/OrderCommentSender.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\Sales\Model\Order\Email\NotifySender;
1212
use Magento\Sales\Model\Order\Address\Renderer;
1313
use Magento\Framework\Event\ManagerInterface;
14+
use Magento\Framework\DataObject;
1415

1516
/**
1617
* Class OrderCommentSender
@@ -68,13 +69,17 @@ public function send(Order $order, $notify = true, $comment = '')
6869
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
6970
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
7071
];
72+
$transportObject = new DataObject($transport);
7173

74+
/**
75+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
76+
*/
7277
$this->eventManager->dispatch(
7378
'email_order_comment_set_template_vars_before',
74-
['sender' => $this, 'transport' => $transport]
79+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
7580
);
7681

77-
$this->templateContainer->setTemplateVars($transport);
82+
$this->templateContainer->setTemplateVars($transportObject->getData());
7883

7984
return $this->checkAndSend($order, $notify);
8085
}

app/code/Magento/Sales/Model/Order/Email/Sender/OrderSender.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\Sales\Model\ResourceModel\Order as OrderResource;
1414
use Magento\Sales\Model\Order\Address\Renderer;
1515
use Magento\Framework\Event\ManagerInterface;
16+
use Magento\Framework\DataObject;
1617

1718
/**
1819
* Class OrderSender
@@ -130,7 +131,7 @@ protected function prepareTemplate(Order $order)
130131
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
131132
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
132133
];
133-
$transport = new \Magento\Framework\DataObject($transport);
134+
$transport = new DataObject($transport);
134135

135136
$this->eventManager->dispatch(
136137
'email_order_set_template_vars_before',

app/code/Magento/Sales/Model/Order/Email/Sender/ShipmentCommentSender.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Magento\Sales\Model\Order\Shipment;
1313
use Magento\Sales\Model\Order\Address\Renderer;
1414
use Magento\Framework\Event\ManagerInterface;
15+
use Magento\Framework\DataObject;
1516

1617
/**
1718
* Class ShipmentCommentSender
@@ -71,13 +72,17 @@ public function send(Shipment $shipment, $notify = true, $comment = '')
7172
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
7273
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
7374
];
75+
$transportObject = new DataObject($transport);
7476

77+
/**
78+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
79+
*/
7580
$this->eventManager->dispatch(
7681
'email_shipment_comment_set_template_vars_before',
77-
['sender' => $this, 'transport' => $transport]
82+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
7883
);
7984

80-
$this->templateContainer->setTemplateVars($transport);
85+
$this->templateContainer->setTemplateVars($transportObject->getData());
8186

8287
return $this->checkAndSend($order, $notify);
8388
}

app/code/Magento/Sales/Model/Order/Email/Sender/ShipmentSender.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Sales\Model\ResourceModel\Order\Shipment as ShipmentResource;
1515
use Magento\Sales\Model\Order\Address\Renderer;
1616
use Magento\Framework\Event\ManagerInterface;
17+
use Magento\Framework\DataObject;
1718

1819
/**
1920
* Class ShipmentSender
@@ -102,7 +103,7 @@ public function send(Shipment $shipment, $forceSyncMode = false)
102103

103104
if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) {
104105
$order = $shipment->getOrder();
105-
106+
106107
$transport = [
107108
'order' => $order,
108109
'shipment' => $shipment,
@@ -113,13 +114,17 @@ public function send(Shipment $shipment, $forceSyncMode = false)
113114
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
114115
'formattedBillingAddress' => $this->getFormattedBillingAddress($order)
115116
];
117+
$transportObject = new DataObject($transport);
116118

119+
/**
120+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
121+
*/
117122
$this->eventManager->dispatch(
118123
'email_shipment_set_template_vars_before',
119-
['sender' => $this, 'transport' => $transport]
124+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
120125
);
121126

122-
$this->templateContainer->setTemplateVars($transport);
127+
$this->templateContainer->setTemplateVars($transportObject->getData());
123128

124129
if ($this->checkAndSend($order)) {
125130
$shipment->setEmailSent(true);

app/code/Magento/Sales/Model/Order/Invoice/Sender/EmailSender.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
use Magento\Sales\Model\Order\Email\Sender;
99
use Magento\Sales\Model\Order\Invoice\SenderInterface;
10+
use Magento\Framework\DataObject;
1011

1112
/**
1213
* Email notification sender for Invoice.
14+
*
15+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1316
*/
1417
class EmailSender extends Sender implements SenderInterface
1518
{
@@ -106,13 +109,17 @@ public function send(
106109
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
107110
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
108111
];
112+
$transportObject = new DataObject($transport);
109113

114+
/**
115+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
116+
*/
110117
$this->eventManager->dispatch(
111118
'email_invoice_set_template_vars_before',
112-
['sender' => $this, 'transport' => $transport]
119+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
113120
);
114121

115-
$this->templateContainer->setTemplateVars($transport);
122+
$this->templateContainer->setTemplateVars($transportObject->getData());
116123

117124
if ($this->checkAndSend($order)) {
118125
$invoice->setEmailSent(true);

app/code/Magento/Sales/Model/Order/Shipment/Sender/EmailSender.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
use Magento\Sales\Model\Order\Email\Sender;
99
use Magento\Sales\Model\Order\Shipment\SenderInterface;
10+
use Magento\Framework\DataObject;
1011

1112
/**
1213
* Email notification sender for Shipment.
14+
*
15+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1316
*/
1417
class EmailSender extends Sender implements SenderInterface
1518
{
@@ -106,13 +109,17 @@ public function send(
106109
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
107110
'formattedBillingAddress' => $this->getFormattedBillingAddress($order)
108111
];
112+
$transportObject = new DataObject($transport);
109113

114+
/**
115+
* Event argument `transport` is @deprecated. Use `transportObject` instead.
116+
*/
110117
$this->eventManager->dispatch(
111118
'email_shipment_set_template_vars_before',
112-
['sender' => $this, 'transport' => $transport]
119+
['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
113120
);
114121

115-
$this->templateContainer->setTemplateVars($transport);
122+
$this->templateContainer->setTemplateVars($transportObject->getData());
116123

117124
if ($this->checkAndSend($order)) {
118125
$shipment->setEmailSent(true);

app/code/Magento/Sales/Test/Unit/Model/Order/Creditmemo/Sender/EmailSenderTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,20 +262,22 @@ public function testSend($configValue, $forceSyncMode, $isComment, $emailSending
262262
'formattedShippingAddress' => 'Formatted address',
263263
'formattedBillingAddress' => 'Formatted address',
264264
];
265+
$transport = new \Magento\Framework\DataObject($transport);
265266

266267
$this->eventManagerMock->expects($this->once())
267268
->method('dispatch')
268269
->with(
269270
'email_creditmemo_set_template_vars_before',
270271
[
271272
'sender' => $this->subject,
272-
'transport' => $transport,
273+
'transport' => $transport->getData(),
274+
'transportObject' => $transport
273275
]
274276
);
275277

276278
$this->templateContainerMock->expects($this->once())
277279
->method('setTemplateVars')
278-
->with($transport);
280+
->with($transport->getData());
279281

280282
$this->identityContainerMock->expects($this->once())
281283
->method('isEnabled')

app/code/Magento/Sales/Test/Unit/Model/Order/Invoice/Sender/EmailSenderTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,20 +260,22 @@ public function testSend($configValue, $forceSyncMode, $isComment, $emailSending
260260
'formattedShippingAddress' => 'Formatted address',
261261
'formattedBillingAddress' => 'Formatted address',
262262
];
263+
$transport = new \Magento\Framework\DataObject($transport);
263264

264265
$this->eventManagerMock->expects($this->once())
265266
->method('dispatch')
266267
->with(
267268
'email_invoice_set_template_vars_before',
268269
[
269270
'sender' => $this->subject,
270-
'transport' => $transport,
271+
'transport' => $transport->getData(),
272+
'transportObject' => $transport,
271273
]
272274
);
273275

274276
$this->templateContainerMock->expects($this->once())
275277
->method('setTemplateVars')
276-
->with($transport);
278+
->with($transport->getData());
277279

278280
$this->identityContainerMock->expects($this->once())
279281
->method('isEnabled')

0 commit comments

Comments
 (0)