paymentHelper = $paymentHelper; $this->orderResource = $orderResource; $this->globalConfig = $globalConfig; $this->addressRenderer = $addressRenderer; $this->eventManager = $eventManager; } /** * Sends order email to the customer. * * Email will be sent immediately in two cases: * * - if asynchronous email sending is disabled in global settings * - if $forceSyncMode parameter is set to TRUE * * Otherwise, email will be sent later during running of * corresponding cron job. * * @param Order $order * @param bool $forceSyncMode * @return bool */ public function send(Order $order, $forceSyncMode = false) { $order->setSendEmail(true); if (!$this->globalConfig->getValue('sales_email/general/async_sending') || $forceSyncMode) { if ($this->checkAndSend($order)) { $order->setEmailSent(true); $this->orderResource->saveAttribute($order, ['send_email', 'email_sent']); return true; } } else { $order->setEmailSent(null); $this->orderResource->saveAttribute($order, 'email_sent'); } $this->orderResource->saveAttribute($order, 'send_email'); return false; } /** * Prepare email template with variables * * @param Order $order * @return void */ protected function prepareTemplate(Order $order) { $transport = [ 'order' => $order, 'billing' => $order->getBillingAddress(), 'payment_html' => $this->getPaymentHtml($order), 'store' => $order->getStore(), 'formattedShippingAddress' => $this->getFormattedShippingAddress($order), 'formattedBillingAddress' => $this->getFormattedBillingAddress($order), ]; $transportObject = new DataObject($transport); /** * Event argument `transport` is @deprecated. Use `transportObject` instead. */ $this->eventManager->dispatch( 'email_order_set_template_vars_before', ['sender' => $this, 'transport' => $transportObject, 'transportObject' => $transportObject] ); $this->templateContainer->setTemplateVars($transportObject->getData()); parent::prepareTemplate($order); } /** * Get payment info block as html * * @param Order $order * @return string */ protected function getPaymentHtml(Order $order) { return $this->paymentHelper->getInfoBlockHtml( $order->getPayment(), $this->identityContainer->getStore()->getStoreId() ); } }