app/Plugin/ApproveCustomer4/Event.php line 109

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of ApproveCustomer4
  4.  *
  5.  * Copyright(c) Akira Kurozumi <info@a-zumi.net>
  6.  *
  7.  *  https://a-zumi.net
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Plugin\ApproveCustomer4;
  13. use Eccube\Entity\BaseInfo;
  14. use Eccube\Entity\Customer;
  15. use Eccube\Event\EccubeEvents;
  16. use Plugin\ApproveCustomer4\Entity\Config;
  17. use Plugin\ApproveCustomer4\Repository\ConfigRepository;
  18. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  19. use Eccube\Event\EventArgs;
  20. use Eccube\Repository\BaseInfoRepository;
  21. use Eccube\Repository\MailTemplateRepository;
  22. use Symfony\Component\HttpFoundation\RedirectResponse;
  23. use Symfony\Component\Routing\RouterInterface;
  24. class Event implements EventSubscriberInterface
  25. {
  26.     /**
  27.      * @var BaseInfo
  28.      */
  29.     private $BaseInfo;
  30.     /**
  31.      * @var \Twig_Environment
  32.      */
  33.     private $twig;
  34.     /**
  35.      * @var MailTemplateRepository
  36.      */
  37.     private $mailTemplateRepository;
  38.     /**
  39.      * @var RouterInterface
  40.      */
  41.     private $router;
  42.     /**
  43.      * @var \Swift_Mailer
  44.      */
  45.     private $mailer;
  46.     /**
  47.      * @var Config
  48.      */
  49.     private $config;
  50.     public function __construct(
  51.         BaseInfoRepository $baseInfoRepository,
  52.         \Twig_Environment $twig,
  53.         MailTemplateRepository $mailTemplateRepository,
  54.         RouterInterface $router,
  55.         \Swift_Mailer $mailer,
  56.         ConfigRepository $configRepository
  57.     )
  58.     {
  59.         $this->BaseInfo $baseInfoRepository->get();
  60.         $this->twig $twig;
  61.         $this->mailTemplateRepository $mailTemplateRepository;
  62.         $this->router $router;
  63.         $this->mailer $mailer;
  64.         $this->config $configRepository->get();
  65.     }
  66.     /**
  67.      * @return array
  68.      */
  69.     public static function getSubscribedEvents()
  70.     {
  71.         return [
  72.             EccubeEvents::FRONT_ENTRY_INDEX_COMPLETE => ["onFrontEntryIndexComplete"10],
  73.             EccubeEvents::MAIL_CUSTOMER_CONFIRM => ["onMailCustomerConfirm"10],
  74.             EccubeEvents::MAIL_ADMIN_CUSTOMER_CONFIRM => ["onMailCustomerConfirm"10],
  75.         ];
  76.     }
  77.     /**
  78.      * @param EventArgs $event
  79.      */
  80.     public function onFrontEntryIndexComplete(EventArgs $event)
  81.     {
  82.         if (false === $this->BaseInfo->isOptionCustomerActivate()) {
  83.             return;
  84.         }
  85.         $event->setResponse(
  86.             new RedirectResponse($this->router->generate('plugin_approve_customer4_entry_complete'))
  87.         );
  88.     }
  89.     /**
  90.      * @param EventArgs $event
  91.      * @throws \Twig\Error\LoaderError
  92.      * @throws \Twig\Error\RuntimeError
  93.      * @throws \Twig\Error\SyntaxError
  94.      */
  95.     public function onMailCustomerConfirm(EventArgs $event)
  96.     {
  97.         /** @var \Swift_Message $message */
  98.         $message $event->getArgument('message');
  99.         $Customer $event->getArgument('Customer');
  100.         $BaseInfo $event->getArgument('BaseInfo');
  101.         $activateUrl $event->getArgument('activateUrl');
  102.         if (false === $BaseInfo->isOptionCustomerActivate()) {
  103.             return;
  104.         }
  105.         $MailTemplate $this->mailTemplateRepository->findOneBy([
  106.             "file_name" => "Mail/ApproveCustomer4/default/Mail/Entry/confirm.twig"
  107.         ]);
  108.         if (!$MailTemplate) {
  109.             log_error('メールテンプレートが登録されていません。');
  110.             return;
  111.         }
  112.         $body $this->twig->render($MailTemplate->getFileName(), [
  113.             'Customer' => $Customer,
  114.             'BaseInfo' => $BaseInfo,
  115.             'activateUrl' => $activateUrl,
  116.         ]);
  117.         $message->setSubject('[' $BaseInfo->getShopName() . '] ' $MailTemplate->getMailSubject());
  118.         $message->setTo([$BaseInfo->getEmail01()]);
  119.         $message->setBcc(null);
  120.         $message->setBody($body);
  121.         if($this->config->isSendCustomerMail()) {
  122.             $this->sendCustomerMail($BaseInfo$Customer);
  123.         }
  124.     }
  125.     protected function sendCustomerMail(BaseInfo $baseInfoCustomer $customer)
  126.     {
  127.         $MailTemplate $this->mailTemplateRepository->findOneBy([
  128.             "file_name" => "Mail/ApproveCustomer4/default/Mail/Entry/customer.twig"
  129.         ]);
  130.         if (!$MailTemplate) {
  131.             log_error('メールテンプレートが登録されていません。');
  132.             return;
  133.         }
  134.         $body $this->twig->render($MailTemplate->getFileName(), [
  135.             'Customer' => $customer,
  136.             'BaseInfo' => $baseInfo,
  137.         ]);
  138.         $message = (new \Swift_Message())
  139.             ->setSubject('['.$baseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
  140.             ->setFrom([$baseInfo->getEmail01() => $baseInfo->getShopName()])
  141.             ->setTo([$customer->getEmail()])
  142.             ->setReplyTo($baseInfo->getEmail03())
  143.             ->setReturnPath($baseInfo->getEmail04())
  144.             ->setBody($body);
  145.         $this->mailer->send($message);
  146.     }
  147. }