app/Plugin/GmoPsKb4/EventDispatcher/EventSubscriber.php line 61

Open in your IDE?
  1. <?php
  2. namespace Plugin\GmoPsKb4\EventDispatcher;
  3. use Eccube\Entity\Customer;
  4. use Eccube\Entity\Order;
  5. use Eccube\Entity\Payment;
  6. use Eccube\Event\TemplateEvent;
  7. use Plugin\GmoPsKb4\Entity\Config;
  8. use Plugin\GmoPsKb4\Form\Type\Admin\FixRequestType;
  9. use Plugin\GmoPsKb4\Repository\ConfigRepository;
  10. use Plugin\GmoPsKb4\Service\GmoPsKbService;
  11. use Plugin\GmoPsKb4\Service\Method\GmoPsKb;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\Form\FormFactoryInterface;
  14. class EventSubscriber implements EventSubscriberInterface
  15. {
  16.     /** @var FormFactoryInterface */
  17.     private $formFactory;
  18.     /** @var GmoPsKbService */
  19.     private $gmoPsKbService;
  20.     /** @var Config */
  21.     private $config;
  22.     public function __construct(
  23.         FormFactoryInterface $formFactory,
  24.         GmoPsKbService $gmoPsKbService,
  25.         ConfigRepository $configRepository
  26.     )
  27.     {
  28.         $this->formFactory $formFactory;
  29.         $this->gmoPsKbService $gmoPsKbService;
  30.         $this->config $configRepository->get();
  31.     }
  32.     public static function getSubscribedEvents()
  33.     {
  34.         return [
  35.             'Mypage/_navi.twig' => 'onTwigMypageNavi',
  36.             'Mypage/index.twig' => 'onTwigMypageNavi',
  37.             'Mypage/history.twig' => 'onTwigMypageNavi',
  38.             'Mypage/favorite.twig' => 'onTwigMypageNavi',
  39.             'Mypage/change.twig' => 'onTwigMypageNavi',
  40.             'Mypage/change_complete.twig' => 'onTwigMypageNavi',
  41.             'Mypage/delivery.twig' => 'onTwigMypageNavi',
  42.             'Mypage/delivery_edit.twig' => 'onTwigMypageNavi',
  43.             'Mypage/withdraw.twig' => 'onTwigMypageNavi',
  44.             '@GmoPsKb4/Mypage/index.twig' => 'onTwigMypageNavi',
  45.             '@GmoPsKb4/Mypage/examination.twig' => 'onTwigMypageNavi',
  46.             '@GmoPsKb4/Mypage/examination_confirm.twig' => 'onTwigMypageNavi',
  47.             '@GmoPsKb4/Mypage/examination_complete.twig' => 'onTwigMypageNavi',
  48.             'Shopping/index.twig' => 'onTwigShoppingIndex',
  49.             '@admin/Order/edit.twig' => 'onTwigAdminOrderEdit',
  50.             '@admin/Customer/edit.twig' => 'onTwigAdminCustomerEdit',
  51.         ];
  52.     }
  53.     public function onTwigMypageNavi(TemplateEvent $event)
  54.     {
  55.         $event->setParameter('gmops_kb_mypage'$this->config->getCreditFacility() && $this->config->getCreditFacilityCustomer());
  56.         $event->addSnippet('@GmoPsKb4/Mypage/_navi.twig');
  57.     }
  58.     public function onTwigShoppingIndex(TemplateEvent $event)
  59.     {
  60.         $event->addSnippet('@GmoPsKb4/Shopping/_index.twig');
  61.     }
  62.     public function onTwigAdminOrderEdit(TemplateEvent $event)
  63.     {
  64.         $event->addSnippet('@GmoPsKb4/admin/Order/_edit.twig');
  65.         /** @var Order $order */
  66.         $order $event->getParameter('Order');
  67.         // Order が存在しない場合は非表示
  68.         if (!$order || !$order->getId()) {
  69.             $event->setParameter('gmops_kb_disp'false);
  70.             return;
  71.         }
  72.         // GMO掛け払い情報が存在せず、決済がGMO掛け払い以外の場合には非表示
  73.         /** @var Payment $payment */
  74.         $payment $order->getPayment();
  75.         if ((!$order->getKbOrderPayments() || $order->getKbOrderPayments()->count() === 0) && (!$payment || $payment->getMethodClass() !== GmoPsKb::class)) {
  76.             $event->setParameter('gmops_kb_disp'false);
  77.             return;
  78.         }
  79.         $form $this->formFactory->create(FixRequestType::class);
  80.         $event->setParameter('gmops_kb_disp'true);
  81.         $event->setParameter('fix_request_form'$form->createView());
  82.     }
  83.     public function onTwigAdminCustomerEdit(TemplateEvent $event)
  84.     {
  85.         $event->addSnippet('@GmoPsKb4/admin/Customer/_edit.twig');
  86.         $event->setParameter('gmops_kb_config'$this->config);
  87.     }
  88. }