Skip to content

Commit beae9c1

Browse files
committed
Merge pull request #261 from magento-mpi/prs
[Github] Merge public Github commits
2 parents fcb6af8 + 2059e7e commit beae9c1

21 files changed

+310
-129
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,6 +1034,12 @@ public function validate()
10341034
$errors[] = __('Gender is required.');
10351035
}
10361036

1037+
$transport = new \Magento\Framework\Object(
1038+
['errors' => $errors]
1039+
);
1040+
$this->_eventManager->dispatch('customer_validate', ['customer' => $this, 'transport' => $transport]);
1041+
$errors = $transport->getErrors();
1042+
10371043
if (empty($errors)) {
10381044
return true;
10391045
}

app/code/Magento/Sales/Model/Order.php

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -920,13 +920,16 @@ public function getShippingAddress()
920920
* Order state setter.
921921
* If status is specified, will add order status history with specified comment
922922
* the setData() cannot be overridden because of compatibility issues with resource model
923+
* By default allows to set any state. Can also update status to default or specified value
924+
* Complete and closed states are encapsulated intentionally
923925
*
924926
* @param string $state
925927
* @param string|bool $status
926928
* @param string $comment
927929
* @param bool $isCustomerNotified
928930
* @param bool $shouldProtectState
929931
* @return \Magento\Sales\Model\Order
932+
* @throws \Magento\Framework\Exception\LocalizedException
930933
*/
931934
public function setState(
932935
$state,
@@ -935,29 +938,7 @@ public function setState(
935938
$isCustomerNotified = null,
936939
$shouldProtectState = true
937940
) {
938-
return $this->_setState($state, $status, $comment, $isCustomerNotified, $shouldProtectState);
939-
}
940941

941-
/**
942-
* Order state protected setter.
943-
* By default allows to set any state. Can also update status to default or specified value
944-
* Complete and closed states are encapsulated intentionally, see the _checkState()
945-
*
946-
* @param string $state
947-
* @param string|bool $status
948-
* @param string $comment
949-
* @param bool $isCustomerNotified
950-
* @param bool $shouldProtectState
951-
* @return $this
952-
* @throws \Magento\Framework\Exception\LocalizedException
953-
*/
954-
protected function _setState(
955-
$state,
956-
$status = false,
957-
$comment = '',
958-
$isCustomerNotified = null,
959-
$shouldProtectState = false
960-
) {
961942
// attempt to set the specified state
962943
if ($shouldProtectState) {
963944
if ($this->isStateProtected($state)) {
@@ -966,17 +947,32 @@ protected function _setState(
966947
);
967948
}
968949
}
969-
$this->setData('state', $state);
950+
951+
$transport = new \Magento\Framework\Object(
952+
[
953+
'state' => $state,
954+
'status' => $status,
955+
'comment' => $comment,
956+
'is_customer_notified' => $isCustomerNotified
957+
]
958+
);
959+
960+
$this->_eventManager->dispatch(
961+
'sales_order_state_change_before',
962+
['order' => $this, 'transport' => $transport]
963+
);
964+
$status = $transport->getStatus();
965+
$this->setData('state', $transport->getState());
970966

971967
// add status history
972968
if ($status) {
973969
if ($status === true) {
974-
$status = $this->getConfig()->getStateDefaultStatus($state);
970+
$status = $this->getConfig()->getStateDefaultStatus($transport->getState());
975971
}
976972
$this->setStatus($status);
977-
$history = $this->addStatusHistoryComment($comment, false);
973+
$history = $this->addStatusHistoryComment($transport->getComment(), false);
978974
// no sense to set $status again
979-
$history->setIsCustomerNotified($isCustomerNotified);
975+
$history->setIsCustomerNotified($transport->getIsCustomerNotified());
980976
}
981977
return $this;
982978
}
@@ -1167,7 +1163,7 @@ public function registerCancellation($comment = '', $graceful = true)
11671163
$this->setTotalCanceled($this->getGrandTotal() - $this->getTotalPaid());
11681164
$this->setBaseTotalCanceled($this->getBaseGrandTotal() - $this->getBaseTotalPaid());
11691165

1170-
$this->_setState($cancelState, true, $comment);
1166+
$this->setState($cancelState, true, $comment, null, false);
11711167
} elseif (!$graceful) {
11721168
throw new \Magento\Framework\Exception\LocalizedException(__('We cannot cancel this order.'));
11731169
}

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

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

1516
/**
1617
* Class CreditmemoCommentSender
@@ -22,22 +23,32 @@ class CreditmemoCommentSender extends NotifySender
2223
*/
2324
protected $addressRenderer;
2425

26+
/**
27+
* Application Event Dispatcher
28+
*
29+
* @var ManagerInterface
30+
*/
31+
protected $eventManager;
32+
2533
/**
2634
* @param Template $templateContainer
2735
* @param CreditmemoCommentIdentity $identityContainer
2836
* @param Order\Email\SenderBuilderFactory $senderBuilderFactory
2937
* @param \Psr\Log\LoggerInterface $logger
3038
* @param Renderer $addressRenderer
39+
* @param ManagerInterface $eventManager
3140
*/
3241
public function __construct(
3342
Template $templateContainer,
3443
CreditmemoCommentIdentity $identityContainer,
3544
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
3645
\Psr\Log\LoggerInterface $logger,
37-
Renderer $addressRenderer
46+
Renderer $addressRenderer,
47+
ManagerInterface $eventManager
3848
) {
3949
parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger);
4050
$this->addressRenderer = $addressRenderer;
51+
$this->eventManager = $eventManager;
4152
}
4253

4354
/**
@@ -57,18 +68,28 @@ public function send(Creditmemo $creditmemo, $notify = true, $comment = '')
5768
$formattedShippingAddress = '';
5869
}
5970
$formattedBillingAddress = $this->addressRenderer->format($order->getBillingAddress(), 'html');
60-
$this->templateContainer->setTemplateVars(
61-
[
62-
'order' => $order,
63-
'creditmemo' => $creditmemo,
64-
'comment' => $comment,
65-
'billing' => $order->getBillingAddress(),
66-
'store' => $order->getStore(),
67-
'formattedShippingAddress' => $formattedShippingAddress,
68-
'formattedBillingAddress' => $formattedBillingAddress,
71+
72+
$transport = new \Magento\Framework\Object(
73+
['template_vars' =>
74+
[
75+
'order' => $order,
76+
'creditmemo' => $creditmemo,
77+
'comment' => $comment,
78+
'billing' => $order->getBillingAddress(),
79+
'store' => $order->getStore(),
80+
'formattedShippingAddress' => $formattedShippingAddress,
81+
'formattedBillingAddress' => $formattedBillingAddress,
82+
]
6983
]
7084
);
7185

86+
$this->eventManager->dispatch(
87+
'email_creditmemo_comment_set_template_vars_before',
88+
['sender' => $this, 'transport' => $transport]
89+
);
90+
91+
$this->templateContainer->setTemplateVars($transport->getTemplateVars());
92+
7293
return $this->checkAndSend($order, $notify);
7394
}
7495
}

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

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\Sales\Model\Order\Email\Sender;
1414
use Magento\Sales\Model\Resource\Order\Creditmemo as CreditmemoResource;
1515
use Magento\Sales\Model\Order\Address\Renderer;
16+
use Magento\Framework\Event\ManagerInterface;
1617

1718
/**
1819
* Class CreditmemoSender
@@ -43,6 +44,13 @@ class CreditmemoSender extends Sender
4344
*/
4445
protected $addressRenderer;
4546

47+
/**
48+
* Application Event Dispatcher
49+
*
50+
* @var ManagerInterface
51+
*/
52+
protected $eventManager;
53+
4654
/**
4755
* @param Template $templateContainer
4856
* @param CreditmemoIdentity $identityContainer
@@ -52,6 +60,7 @@ class CreditmemoSender extends Sender
5260
* @param CreditmemoResource $creditmemoResource
5361
* @param \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig
5462
* @param Renderer $addressRenderer
63+
* @param ManagerInterface $eventManager
5564
*/
5665
public function __construct(
5766
Template $templateContainer,
@@ -61,13 +70,15 @@ public function __construct(
6170
PaymentHelper $paymentHelper,
6271
CreditmemoResource $creditmemoResource,
6372
\Magento\Framework\App\Config\ScopeConfigInterface $globalConfig,
64-
Renderer $addressRenderer
73+
Renderer $addressRenderer,
74+
ManagerInterface $eventManager
6575
) {
6676
parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger);
6777
$this->paymentHelper = $paymentHelper;
6878
$this->creditmemoResource = $creditmemoResource;
6979
$this->globalConfig = $globalConfig;
7080
$this->addressRenderer = $addressRenderer;
81+
$this->eventManager = $eventManager;
7182
}
7283

7384
/**
@@ -100,24 +111,32 @@ public function send(Creditmemo $creditmemo, $forceSyncMode = false)
100111

101112
$formattedBillingAddress = $this->addressRenderer->format($order->getBillingAddress(), 'html');
102113

103-
$this->templateContainer->setTemplateVars(
104-
[
105-
'order' => $order,
106-
'creditmemo' => $creditmemo,
107-
'comment' => $creditmemo->getCustomerNoteNotify() ? $creditmemo->getCustomerNote() : '',
108-
'billing' => $order->getBillingAddress(),
109-
'payment_html' => $this->getPaymentHtml($order),
110-
'store' => $order->getStore(),
111-
'formattedShippingAddress' => $formattedShippingAddress,
112-
'formattedBillingAddress' => $formattedBillingAddress,
114+
$transport = new \Magento\Framework\Object(
115+
['template_vars' =>
116+
[
117+
'order' => $order,
118+
'creditmemo' => $creditmemo,
119+
'comment' => $creditmemo->getCustomerNoteNotify()
120+
? $creditmemo->getCustomerNote() : '',
121+
'billing' => $order->getBillingAddress(),
122+
'payment_html' => $this->getPaymentHtml($order),
123+
'store' => $order->getStore(),
124+
'formattedShippingAddress' => $formattedShippingAddress,
125+
'formattedBillingAddress' => $formattedBillingAddress
126+
]
113127
]
114128
);
115129

130+
$this->eventManager->dispatch(
131+
'email_creditmemo_set_template_vars_before',
132+
['sender' => $this, 'transport' => $transport]
133+
);
134+
135+
$this->templateContainer->setTemplateVars($transport->getTemplateVars());
136+
116137
if ($this->checkAndSend($order)) {
117138
$creditmemo->setEmailSent(true);
118-
119139
$this->creditmemoResource->saveAttribute($creditmemo, ['send_email', 'email_sent']);
120-
121140
return true;
122141
}
123142
}

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

Lines changed: 32 additions & 10 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\Invoice;
1313
use Magento\Sales\Model\Order\Address\Renderer;
14+
use Magento\Framework\Event\ManagerInterface;
1415

1516
/**
1617
* Class InvoiceCommentSender
@@ -22,22 +23,32 @@ class InvoiceCommentSender extends NotifySender
2223
*/
2324
protected $addressRenderer;
2425

26+
/**
27+
* Application Event Dispatcher
28+
*
29+
* @var ManagerInterface
30+
*/
31+
protected $eventManager;
32+
2533
/**
2634
* @param Template $templateContainer
2735
* @param InvoiceCommentIdentity $identityContainer
2836
* @param Order\Email\SenderBuilderFactory $senderBuilderFactory
2937
* @param \Psr\Log\LoggerInterface $logger
3038
* @param Renderer $addressRenderer
39+
* @param ManagerInterface $eventManager
3140
*/
3241
public function __construct(
3342
Template $templateContainer,
3443
InvoiceCommentIdentity $identityContainer,
3544
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
3645
\Psr\Log\LoggerInterface $logger,
37-
Renderer $addressRenderer
46+
Renderer $addressRenderer,
47+
ManagerInterface $eventManager
3848
) {
3949
parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger);
4050
$this->addressRenderer = $addressRenderer;
51+
$this->eventManager = $eventManager;
4152
}
4253

4354
/**
@@ -57,17 +68,28 @@ public function send(Invoice $invoice, $notify = true, $comment = '')
5768
$formattedShippingAddress = '';
5869
}
5970
$formattedBillingAddress = $this->addressRenderer->format($order->getBillingAddress(), 'html');
60-
$this->templateContainer->setTemplateVars(
61-
[
62-
'order' => $order,
63-
'invoice' => $invoice,
64-
'comment' => $comment,
65-
'billing' => $order->getBillingAddress(),
66-
'store' => $order->getStore(),
67-
'formattedShippingAddress' => $formattedShippingAddress,
68-
'formattedBillingAddress' => $formattedBillingAddress,
71+
72+
$transport = new \Magento\Framework\Object(
73+
['template_vars' =>
74+
[
75+
'order' => $order,
76+
'invoice' => $invoice,
77+
'comment' => $comment,
78+
'billing' => $order->getBillingAddress(),
79+
'store' => $order->getStore(),
80+
'formattedShippingAddress' => $formattedShippingAddress,
81+
'formattedBillingAddress' => $formattedBillingAddress,
82+
]
6983
]
7084
);
85+
86+
$this->eventManager->dispatch(
87+
'email_invoice_comment_set_template_vars_before',
88+
['sender' => $this, 'transport' => $transport]
89+
);
90+
91+
$this->templateContainer->setTemplateVars($transport->getTemplateVars());
92+
7193
return $this->checkAndSend($order, $notify);
7294
}
7395
}

0 commit comments

Comments
 (0)