commerce_shipping-8.x-2.0-rc2/src/Mail/ShipmentConfirmationMail.php
src/Mail/ShipmentConfirmationMail.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <?php namespace Drupal\commerce_shipping\Mail; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\commerce\MailHandlerInterface; use Drupal\commerce_shipping\Entity\ShipmentInterface; class ShipmentConfirmationMail implements ShipmentConfirmationMailInterface { use StringTranslationTrait; /** * The entity type manager. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ protected $entityTypeManager ; /** * The mail handler. * * @var \Drupal\commerce\MailHandlerInterface */ protected $mailHandler ; /** * Constructs a new ShipmentConfirmationMail object. * * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. * @param \Drupal\commerce\MailHandlerInterface $mail_handler * The mail handler. */ public function __construct(EntityTypeManagerInterface $entity_type_manager , MailHandlerInterface $mail_handler ) { $this ->entityTypeManager = $entity_type_manager ; $this ->mailHandler = $mail_handler ; } /** * {@inheritdoc} */ public function send(ShipmentInterface $shipment , $to = NULL, $bcc = NULL) { /** @var \Drupal\commerce_order\Entity\OrderInterface $order */ $order = $shipment ->getOrder(); $to = $to ?? $order ->getEmail(); if (! $to ) { // The email should not be empty. return FALSE; } $subject = $this ->formatPlural( $shipment ->get( 'items' )-> count (), 'An item for order #@number shipped!' , 'Items for your order #@number shipped!' , [ '@number' => $order ->getOrderNumber()] ); $profile_view_builder = $this ->entityTypeManager->getViewBuilder( 'profile' ); $shipment_view_builder = $this ->entityTypeManager->getViewBuilder( 'commerce_shipment' ); $body = [ '#theme' => 'commerce_shipment_confirmation' , '#order_entity' => $order , '#shipment_entity' => $shipment , '#shipping_profile' => $profile_view_builder ->view( $shipment ->getShippingProfile()), '#tracking_code' => $shipment_view_builder ->viewField( $shipment ->get( 'tracking_code' ), 'default' ), ]; $params = [ 'id' => 'shipment_confirmation' , 'from' => $order ->getStore()->getEmail(), 'bcc' => $bcc , 'order' => $order , 'shipment' => $shipment , ]; $customer = $order ->getCustomer(); if ( $customer ->isAuthenticated()) { $params [ 'langcode' ] = $customer ->getPreferredLangcode(); } return $this ->mailHandler->sendMail( $to , $subject , $body , $params ); } } |