OrderCommentSender.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order\Email\Sender;
  7. use Magento\Sales\Model\Order;
  8. use Magento\Sales\Model\Order\Email\Container\OrderCommentIdentity;
  9. use Magento\Sales\Model\Order\Email\Container\Template;
  10. use Magento\Sales\Model\Order\Email\NotifySender;
  11. use Magento\Sales\Model\Order\Address\Renderer;
  12. use Magento\Framework\Event\ManagerInterface;
  13. use Magento\Framework\DataObject;
  14. /**
  15. * Class OrderCommentSender
  16. */
  17. class OrderCommentSender extends NotifySender
  18. {
  19. /**
  20. * @var Renderer
  21. */
  22. protected $addressRenderer;
  23. /**
  24. * Application Event Dispatcher
  25. *
  26. * @var ManagerInterface
  27. */
  28. protected $eventManager;
  29. /**
  30. * @param Template $templateContainer
  31. * @param OrderCommentIdentity $identityContainer
  32. * @param Order\Email\SenderBuilderFactory $senderBuilderFactory
  33. * @param \Psr\Log\LoggerInterface $logger
  34. * @param Renderer $addressRenderer
  35. * @param ManagerInterface $eventManager
  36. */
  37. public function __construct(
  38. Template $templateContainer,
  39. OrderCommentIdentity $identityContainer,
  40. \Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
  41. \Psr\Log\LoggerInterface $logger,
  42. Renderer $addressRenderer,
  43. ManagerInterface $eventManager
  44. ) {
  45. parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory, $logger, $addressRenderer);
  46. $this->addressRenderer = $addressRenderer;
  47. $this->eventManager = $eventManager;
  48. }
  49. /**
  50. * Send email to customer
  51. *
  52. * @param Order $order
  53. * @param bool $notify
  54. * @param string $comment
  55. * @return bool
  56. */
  57. public function send(Order $order, $notify = true, $comment = '')
  58. {
  59. $transport = [
  60. 'order' => $order,
  61. 'comment' => $comment,
  62. 'billing' => $order->getBillingAddress(),
  63. 'store' => $order->getStore(),
  64. 'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
  65. 'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
  66. ];
  67. $transportObject = new DataObject($transport);
  68. /**
  69. * Event argument `transport` is @deprecated. Use `transportObject` instead.
  70. */
  71. $this->eventManager->dispatch(
  72. 'email_order_comment_set_template_vars_before',
  73. ['sender' => $this, 'transport' => $transportObject->getData(), 'transportObject' => $transportObject]
  74. );
  75. $this->templateContainer->setTemplateVars($transportObject->getData());
  76. return $this->checkAndSend($order, $notify);
  77. }
  78. }