app/Plugin/Paid4/EventSubscriber/MypageEventSubscriber.php line 73

Open in your IDE?
  1. <?php
  2. /*
  3.  * Copyright(c) 2020 RACCOON HOLDINGS, Inc. All rights reserved.
  4.  * https://paid.jp/
  5.  */
  6. namespace Plugin\Paid4\EventSubscriber;
  7. use Eccube\Common\EccubeConfig;
  8. use Eccube\Entity\Customer;
  9. use Eccube\Event\TemplateEvent;
  10. use Plugin\Paid4\Entity\PaidCustomer;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  13. class MypageEventSubscriber implements EventSubscriberInterface
  14. {
  15.     /**
  16.      * @var TokenStorageInterface
  17.      */
  18.     private $tokenStorage;
  19.     /**
  20.      * @var mixed
  21.      */
  22.     private $unregistered;
  23.     /**
  24.      * @var mixed
  25.      */
  26.     private $notAvailable;
  27.     /**
  28.      * コンストラクタ
  29.      *
  30.      * @param EccubeConfig $eccubeConfig
  31.      * @param TokenStorageInterface $tokenStorage
  32.      */
  33.     public function __construct(
  34.         EccubeConfig $eccubeConfig,
  35.         TokenStorageInterface $tokenStorage
  36.     )
  37.     {
  38.         $this->tokenStorage $tokenStorage;
  39.         $this->unregistered $eccubeConfig['paid4.register.unregistered'];
  40.         $this->notAvailable $eccubeConfig['paid4.use.not_available'];
  41.     }
  42.     /**
  43.      * @return array
  44.      */
  45.     public static function getSubscribedEvents()
  46.     {
  47.         return [
  48.             'Mypage/index.twig' => 'onDefaultMypageNaviTwig',
  49.             'Mypage/history.twig' => 'onDefaultMypageNaviTwig',
  50.             'Mypage/favorite.twig' => 'onDefaultMypageNaviTwig',
  51.             'Mypage/change.twig' => 'onDefaultMypageNaviTwig',
  52.             'Mypage/change_complete.twig' => 'onDefaultMypageNaviTwig',
  53.             'Mypage/delivery.twig' => 'onDefaultMypageNaviTwig',
  54.             'Mypage/delivery_edit.twig' => 'onDefaultMypageNaviTwig',
  55.             'Mypage/withdraw.twig' => 'onDefaultMypageNaviTwig',
  56.             '@Paid4/default/Mypage/paid_mypage_entry.twig' => 'onDefaultMypageNaviTwig',
  57.             '@Paid4/default/Mypage/paid_mypage_entry_complete.twig' => 'onDefaultMypageNaviTwig',
  58.             '@Paid4/default/Mypage/paid_mypage_information.twig' => 'onDefaultMypageNaviTwig',
  59.         ];
  60.     }
  61.     /**
  62.      * フロント -> マイページ -> ナビ
  63.      */
  64.     public function onDefaultMypageNaviTwig(TemplateEvent $event)
  65.     {
  66.         $token $this->tokenStorage->getToken();
  67.         if ($token && $token->getUser() !== "anon.") {
  68.             if ($token->getProviderKey() === "customer") {
  69.                 /** @var Customer $Customer */
  70.                 $Customer $token->getUser();
  71.                 /** @var PaidCustomer $PaidCustomer */
  72.                 $PaidCustomer $Customer->getPaidCustomer();
  73.                 $entryFlag false;
  74.                 $informationFlag false;
  75.                 if (!is_null($PaidCustomer)) {
  76.                     // 未登録
  77.                     if ($PaidCustomer->getPaidRegister() == $this->unregistered
  78.                         || is_null($PaidCustomer->getPaidRegister())) {
  79.                         $entryFlag true;
  80.                         // 登録済み
  81.                     } else {
  82.                         $informationFlag true;
  83.                     }
  84.                     //paid利用NG
  85.                     if ($PaidCustomer->getPaidUse() == $this->notAvailable
  86.                         && is_null($PaidCustomer->getPaidRegister())) {
  87.                         return;
  88.                     }
  89.                 } else {
  90.                     $entryFlag true;
  91.                 }
  92.                 $event->setParameter('isAvailablePaidEntry'$entryFlag);
  93.                 $event->setParameter('isAvailablePaidInformation'$informationFlag);
  94.                 $event->addSnippet('@Paid4/default/Mypage/mypage_navi.twig');
  95.             }
  96.         }
  97.     }
  98. }