app/Plugin/KokokaraSelect/EventSubscriber/MailEventSubscriber.php line 60

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright(c) 2020 SYSTEM_KD
  4.  * Date: 2020/06/06
  5.  */
  6. namespace Plugin\KokokaraSelect\EventSubscriber;
  7. use Eccube\Entity\Order;
  8. use Eccube\Event\EccubeEvents;
  9. use Eccube\Event\EventArgs;
  10. use Plugin\KokokaraSelect\Service\KsOrderMailService;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\Form\FormBuilder;
  13. use Symfony\Component\Form\FormEvent;
  14. use Symfony\Component\Form\FormEvents;
  15. class MailEventSubscriber implements EventSubscriberInterface
  16. {
  17.     /** @var KsOrderMailService */
  18.     protected $ksOrderMailService;
  19.     public function __construct(
  20.         KsOrderMailService $ksOrderMailService
  21.     )
  22.     {
  23.         $this->ksOrderMailService $ksOrderMailService;
  24.     }
  25.     /**
  26.      * 受注メール送信
  27.      *
  28.      * @param EventArgs $event
  29.      * @throws \Twig_Error_Loader
  30.      * @throws \Twig_Error_Runtime
  31.      * @throws \Twig_Error_Syntax
  32.      */
  33.     public function onMailOrder(EventArgs $event)
  34.     {
  35.         /** @var Order $Order */
  36.         $Order $event->getArgument('Order');
  37.         /** @var \Swift_Message $message */
  38.         $message $event->getArgument('message');
  39.         // 選択商品情報追加
  40.         $this->ksOrderMailService->addOrderMessage($message$Order);
  41.         $event->setArgument('message'$message);
  42.     }
  43.     /**
  44.      * 受注メール送信初期処理
  45.      *
  46.      * @param EventArgs $event
  47.      */
  48.     public function onAdminOrderMailIndexInitialize(EventArgs $event)
  49.     {
  50.         /** @var FormBuilder $builder */
  51.         $builder $event->getArgument('builder');
  52.         /** @var Order $Order */
  53.         $Order $event->getArgument('Order');
  54.         // Event追加
  55.         $builder
  56.             ->get('tpl_data')
  57.             ->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($Order) {
  58.                 $body $event->getData();
  59.                 if (empty($body)) return;
  60.                 // 選択商品情報の挿入
  61.                 $newBody $this->ksOrderMailService->replaceMessage($Order$body);
  62.                 $event->setData($newBody);
  63.             });
  64.     }
  65.     public static function getSubscribedEvents()
  66.     {
  67.         return [
  68.             // 受注メール送信
  69.             EccubeEvents::MAIL_ORDER => 'onMailOrder',
  70.             // 管理受注メールForm Init
  71.             EccubeEvents::ADMIN_ORDER_MAIL_INDEX_INITIALIZE => 'onAdminOrderMailIndexInitialize',
  72.         ];
  73.     }
  74. }