![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-sales/Model/Order/Email/Sender/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Model\Order\Email\Sender; use Magento\Framework\App\Area; use Magento\Framework\App\ObjectManager; use Magento\Sales\Model\Order; use Magento\Sales\Model\Order\Email\Container\InvoiceCommentIdentity; use Magento\Sales\Model\Order\Email\Container\Template; use Magento\Sales\Model\Order\Email\NotifySender; use Magento\Sales\Model\Order\Invoice; use Magento\Sales\Model\Order\Address\Renderer; use Magento\Framework\Event\ManagerInterface; use Magento\Framework\DataObject; use Magento\Store\Model\App\Emulation; class InvoiceCommentSender extends NotifySender { /** * @var Renderer */ protected $addressRenderer; /** * Application Event Dispatcher * * @var ManagerInterface */ protected $eventManager; /** * @var Emulation */ private $appEmulation; /** * @param Template $templateContainer * @param InvoiceCommentIdentity $identityContainer * @param Order\Email\SenderBuilderFactory $senderBuilderFactory * @param \Psr\Log\LoggerInterface $logger * @param Renderer $addressRenderer * @param ManagerInterface $eventManager * @param Emulation|null $appEmulation */ public function __construct( Template $templateContainer, InvoiceCommentIdentity $identityContainer, \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory, \Psr\Log\LoggerInterface $logger, Renderer $addressRenderer, ManagerInterface $eventManager, Emulation $appEmulation = null ) { parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger, $addressRenderer); $this->addressRenderer = $addressRenderer; $this->eventManager = $eventManager; $this->appEmulation = $appEmulation ?: ObjectManager::getInstance()->get(Emulation::class); } /** * Send email to customer * * @param Invoice $invoice * @param bool $notify * @param string $comment * @return bool */ public function send(Invoice $invoice, $notify = true, $comment = '') { $order = $invoice->getOrder(); $this->identityContainer->setStore($order->getStore()); $this->appEmulation->startEnvironmentEmulation($order->getStoreId(), Area::AREA_FRONTEND, true); $transport = [ 'order' => $order, 'invoice' => $invoice, 'comment' => $comment, 'billing' => $order->getBillingAddress(), 'store' => $order->getStore(), 'formattedShippingAddress' => $this->getFormattedShippingAddress($order), 'formattedBillingAddress' => $this->getFormattedBillingAddress($order), 'order_data' => [ 'customer_name' => $order->getCustomerName(), 'frontend_status_label' => $order->getFrontendStatusLabel() ] ]; $transportObject = new DataObject($transport); $this->appEmulation->stopEnvironmentEmulation(); /** * Event argument `transport` is @deprecated. Use `transportObject` instead. */ $this->eventManager->dispatch( 'email_invoice_comment_set_template_vars_before', ['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject] ); $this->templateContainer->setTemplateVars($transportObject->getData()); return $this->checkAndSend($order, $notify); } }