app/Plugin/tbsMailTemplate/tbsMailTemplateEvent.php line 63

Open in your IDE?
  1. <?php
  2. namespace Plugin\tbsMailTemplate;
  3. use Doctrine\ORM\EntityRepository;
  4. use Eccube\Common\EccubeConfig;
  5. use Eccube\Event\EccubeEvents;
  6. use Eccube\Event\EventArgs;
  7. use Eccube\Event\TemplateEvent;
  8. use Eccube\Form\Type\Master\MailTemplateType;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class tbsMailTemplateEvent implements EventSubscriberInterface
  11. {
  12.     protected $eccubeConfig;
  13.     /**
  14.      * tbsMailTemplateEvent constructor.
  15.      */
  16.     public function __construct(EccubeConfig $eccubeConfig)
  17.     {
  18.         $this->eccubeConfig $eccubeConfig;
  19.     }
  20.     /**
  21.      * @return array
  22.      */
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             EccubeEvents::ADMIN_ORDER_MAIL_INDEX_INITIALIZE => 'adminOrderMailIndexInitialize',
  27.             '@admin/Order/edit.twig' => 'onRenderAdminOrderEdit',
  28.         ];
  29.     }
  30.     /**
  31.      * メールテンプレートの選択肢を追加する.
  32.      *
  33.      * @param TemplateEvent $event
  34.      */
  35.     public function adminOrderMailIndexInitialize(EventArgs $eventArgs)
  36.     {
  37.         $builder $eventArgs->getArgument('builder');
  38.         $builder->add('template'MailTemplateType::class, [
  39.             'required' => false,
  40.             'mapped' => false,
  41.             'query_builder' => function (EntityRepository $er) {
  42.                 return $er->createQueryBuilder('mt')
  43.                     ->andWhere('mt.id = :id or mt.id > :id_over')
  44.                     ->setParameter('id'$this->eccubeConfig['eccube_order_mail_template_id'])
  45.                     ->setParameter('id_over'$this->eccubeConfig['eccube_shipping_notify_mail_template_id'])
  46.                     ->orderBy('mt.id''ASC');
  47.             },
  48.         ]);
  49.     }
  50.     /**
  51.      * 管理画面受注登録にHTMLメール作成ボタンを表示する.
  52.      *
  53.      * @param TemplateEvent $event
  54.      */
  55.     public function onRenderAdminOrderEdit(TemplateEvent $event)
  56.     {
  57.         $event->addSnippet('@tbsMailTemplate/admin/Order/edit.twig');
  58.     }
  59. }