OrderReceiptSubscriber.php in Commerce Core 8.2
Namespace
Drupal\commerce_order\EventSubscriberFile
modules/order/src/EventSubscriber/OrderReceiptSubscriber.phpView source
<?php
namespace Drupal\commerce_order\EventSubscriber;
use Drupal\commerce_order\Mail\OrderReceiptMailInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\state_machine\Event\WorkflowTransitionEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Sends a receipt email when an order is placed.
*/
class OrderReceiptSubscriber implements EventSubscriberInterface {
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The order receipt mail.
*
* @var \Drupal\commerce_order\Mail\OrderReceiptMailInterface
*/
protected $orderReceiptMail;
/**
* Constructs a new OrderReceiptSubscriber object.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\commerce_order\Mail\OrderReceiptMailInterface $order_receipt_mail
* The mail handler.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager, OrderReceiptMailInterface $order_receipt_mail) {
$this->entityTypeManager = $entity_type_manager;
$this->orderReceiptMail = $order_receipt_mail;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events = [
'commerce_order.place.post_transition' => [
'sendOrderReceipt',
-100,
],
];
return $events;
}
/**
* Sends an order receipt email.
*
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
* The event we subscribed to.
*/
public function sendOrderReceipt(WorkflowTransitionEvent $event) {
/** @var \Drupal\commerce_order\Entity\OrderInterface $order */
$order = $event
->getEntity();
$order_type_storage = $this->entityTypeManager
->getStorage('commerce_order_type');
/** @var \Drupal\commerce_order\Entity\OrderTypeInterface $order_type */
$order_type = $order_type_storage
->load($order
->bundle());
if ($order_type
->shouldSendReceipt()) {
$this->orderReceiptMail
->send($order, $order
->getEmail(), $order_type
->getReceiptBcc());
}
}
}
Classes
Name | Description |
---|---|
OrderReceiptSubscriber | Sends a receipt email when an order is placed. |