Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
OrderSender.php
Go to the documentation of this file.
1 <?php
7 
8 use Magento\Payment\Helper\Data as PaymentHelper;
17 
22 class OrderSender extends Sender
23 {
27  protected $paymentHelper;
28 
32  protected $orderResource;
33 
39  protected $globalConfig;
40 
44  protected $addressRenderer;
45 
51  protected $eventManager;
52 
64  public function __construct(
67  \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
68  \Psr\Log\LoggerInterface $logger,
70  PaymentHelper $paymentHelper,
74  ) {
76  $this->paymentHelper = $paymentHelper;
77  $this->orderResource = $orderResource;
78  $this->globalConfig = $globalConfig;
79  $this->addressRenderer = $addressRenderer;
80  $this->eventManager = $eventManager;
81  }
82 
98  public function send(Order $order, $forceSyncMode = false)
99  {
100  $order->setSendEmail(true);
101 
102  if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) {
103  if ($this->checkAndSend($order)) {
104  $order->setEmailSent(true);
105  $this->orderResource->saveAttribute($order, ['send_email', 'email_sent']);
106  return true;
107  }
108  } else {
109  $order->setEmailSent(null);
110  $this->orderResource->saveAttribute($order, 'email_sent');
111  }
112 
113  $this->orderResource->saveAttribute($order, 'send_email');
114 
115  return false;
116  }
117 
124  protected function prepareTemplate(Order $order)
125  {
126  $transport = [
127  'order' => $order,
128  'billing' => $order->getBillingAddress(),
129  'payment_html' => $this->getPaymentHtml($order),
130  'store' => $order->getStore(),
131  'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
132  'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
133  ];
134  $transportObject = new DataObject($transport);
135 
139  $this->eventManager->dispatch(
140  'email_order_set_template_vars_before',
141  ['sender' => $this, 'transport' => $transportObject, 'transportObject' => $transportObject]
142  );
143 
144  $this->templateContainer->setTemplateVars($transportObject->getData());
145 
146  parent::prepareTemplate($order);
147  }
148 
155  protected function getPaymentHtml(Order $order)
156  {
157  return $this->paymentHelper->getInfoBlockHtml(
158  $order->getPayment(),
159  $this->identityContainer->getStore()->getStoreId()
160  );
161  }
162 }
__construct(Template $templateContainer, OrderIdentity $identityContainer, \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory, \Psr\Log\LoggerInterface $logger, Renderer $addressRenderer, PaymentHelper $paymentHelper, OrderResource $orderResource, \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig, ManagerInterface $eventManager)
Definition: OrderSender.php:64
$order
Definition: order.php:55
send(Order $order, $forceSyncMode=false)
Definition: OrderSender.php:98