app/Customize/EventListener/ChainStoreTwigInitializeListener.php line 202

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  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 Customize\EventListener;
  13. use Doctrine\ORM\NoResultException;
  14. use Eccube\Common\EccubeConfig;
  15. use Eccube\Entity\AuthorityRole;
  16. use Eccube\Entity\Layout;
  17. use Eccube\Entity\Master\DeviceType;
  18. use Eccube\Entity\Member;
  19. use Eccube\Entity\Customer;
  20. use Eccube\Entity\Page;
  21. use Eccube\Entity\PageLayout;
  22. use Eccube\Repository\AuthorityRoleRepository;
  23. use Eccube\Repository\BaseInfoRepository;
  24. use Customize\Repository\ChainStoreRepository;
  25. use Customize\Repository\ShippingRepository;
  26. use Customize\Repository\OrderRepository;
  27. use Eccube\Repository\LayoutRepository;
  28. use Eccube\Repository\Master\DeviceTypeRepository;
  29. use Eccube\Repository\PageRepository;
  30. use Eccube\Repository\PageLayoutRepository;
  31. use Eccube\Repository\BlockPositionRepository;
  32. use Eccube\Request\Context;
  33. use Eccube\Service\CartService;
  34. use SunCat\MobileDetectBundle\DeviceDetector\MobileDetector;
  35. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  36. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  37. use Symfony\Component\HttpKernel\KernelEvents;
  38. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  39. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  40. use Twig\Environment;
  41. class ChainStoreTwigInitializeListener implements EventSubscriberInterface
  42. {
  43.     /**
  44.      * @var bool 初期化済かどうか.
  45.      */
  46.     protected $initialized false;
  47.     /**
  48.      * @var Environment
  49.      */
  50.     protected $twig;
  51.     /**
  52.      * @var BaseInfoRepository
  53.      */
  54.     protected $baseInfoRepository;
  55.     /**
  56.      * @var DeviceTypeRepository
  57.      */
  58.     protected $deviceTypeRepository;
  59.     /**
  60.      * @var PageRepository
  61.      */
  62.     protected $pageRepository;
  63.     /**
  64.      * @var PageLayoutRepository
  65.      */
  66.     protected $pageLayoutRepository;
  67.     /**
  68.      * @var BlockPositionRepository
  69.      */
  70.     protected $blockPositionRepository;
  71.     /**
  72.      * @var Context
  73.      */
  74.     protected $requestContext;
  75.     /**
  76.      * @var AuthorityRoleRepository
  77.      */
  78.     private $authorityRoleRepository;
  79.     /**
  80.      * @var EccubeConfig
  81.      */
  82.     private $eccubeConfig;
  83.     /**
  84.      * @var MobileDetector
  85.      */
  86.     private $mobileDetector;
  87.     /**
  88.      * @var UrlGeneratorInterface
  89.      */
  90.     private $router;
  91.     /**
  92.      * @var LayoutRepository
  93.      */
  94.     private $layoutRepository;
  95.     /**
  96.      * @var TokenStorageInterface
  97.      */
  98.     private $tokenStorage;
  99.     /**
  100.      * @var ChainStoreRepository
  101.      */
  102.     private $chainStoreRepository;
  103.     /**
  104.      * @var OrderRepository
  105.      */
  106.     private $orderRepository;
  107.     /**
  108.      * @var CartService
  109.      */
  110.     protected $cartService;
  111.     /**
  112.      * @var ShippingRepository
  113.      */
  114.     private $shippingRepository;
  115.     /**
  116.      * TwigInitializeListener constructor.
  117.      *
  118.      * @param Environment $twig
  119.      * @param BaseInfoRepository $baseInfoRepository
  120.      * @param PageRepository $pageRepository
  121.      * @param PageLayoutRepository $pageLayoutRepository
  122.      * @param BlockPositionRepository $blockPositionRepository
  123.      * @param DeviceTypeRepository $deviceTypeRepository
  124.      * @param AuthorityRoleRepository $authorityRoleRepository
  125.      * @param EccubeConfig $eccubeConfig
  126.      * @param Context $context
  127.      * @param MobileDetector $mobileDetector
  128.      * @param UrlGeneratorInterface $router
  129.      * @param LayoutRepository $layoutRepository
  130.      * @param TokenStorageInterface $tokenStorage
  131.      * @param ChainStoreRepository $chainStoreRepository
  132.      * @param CartService $cartService
  133.      * @param OrderRepository $orderRepository
  134.      * @param ShippingRepository $shippingRepository
  135.      */
  136.     public function __construct(
  137.         Environment $twig,
  138.         BaseInfoRepository $baseInfoRepository,
  139.         PageRepository $pageRepository,
  140.         PageLayoutRepository $pageLayoutRepository,
  141.         BlockPositionRepository $blockPositionRepository,
  142.         DeviceTypeRepository $deviceTypeRepository,
  143.         AuthorityRoleRepository $authorityRoleRepository,
  144.         EccubeConfig $eccubeConfig,
  145.         Context $context,
  146.         MobileDetector $mobileDetector,
  147.         UrlGeneratorInterface $router,
  148.         LayoutRepository $layoutRepository,
  149.         TokenStorageInterface $tokenStorage,
  150.         ChainStoreRepository $chainStoreRepository,
  151.         CartService $cartService,
  152.         OrderRepository $orderRepository,
  153.         ShippingRepository $shippingRepository
  154.     ) {
  155.         $this->twig $twig;
  156.         $this->baseInfoRepository $baseInfoRepository;
  157.         $this->pageRepository $pageRepository;
  158.         $this->pageLayoutRepository $pageLayoutRepository;
  159.         $this->blockPositionRepository $blockPositionRepository;
  160.         $this->deviceTypeRepository $deviceTypeRepository;
  161.         $this->authorityRoleRepository $authorityRoleRepository;
  162.         $this->eccubeConfig $eccubeConfig;
  163.         $this->requestContext $context;
  164.         $this->mobileDetector $mobileDetector;
  165.         $this->router $router;
  166.         $this->layoutRepository $layoutRepository;
  167.         $this->tokenStorage $tokenStorage;
  168.         $this->chainStoreRepository $chainStoreRepository;
  169.         $this->cartService $cartService;
  170.         $this->orderRepository $orderRepository;
  171.         $this->shippingRepository $shippingRepository;
  172.     }
  173.     /**
  174.      * @param GetResponseEvent $event
  175.      *
  176.      * @throws NoResultException
  177.      * @throws \Doctrine\ORM\NonUniqueResultException
  178.      */
  179.     public function onKernelRequest(GetResponseEvent $event)
  180.     {
  181.         if ($this->initialized) {
  182.             return;
  183.         }
  184.         if (!$this->requestContext->isAdmin()) {
  185.             $this->setFrontVariables($event);
  186.         }
  187.         $this->initialized true;
  188.     }
  189.     /**
  190.      * @param GetResponseEvent $event
  191.      *
  192.      * @throws \Doctrine\ORM\NonUniqueResultException
  193.      */
  194.     public function setFrontVariables(GetResponseEvent $event)
  195.     {
  196.         $request $event->getRequest();
  197.         
  198.         if($user $this->getCurrentUser()){
  199.             $ChainStore $user->getChainStore();
  200.             if(is_object($ChainStore)){
  201.                 //$result = $this->shippingRepository->findChainStoreBalancePrice($ChainStore, date("Y-m"));
  202.                 $result $this->orderRepository->getPurchaseAmountByMonth($user);
  203.                 if($result != null){
  204.                     //$ChainStore->setBalancePrice($result[0]["payment_total"]);
  205.                     $ChainStore->setBalancePrice($result);
  206.                 }
  207.                 $this->twig->addGlobal('ChainStore'$ChainStore);
  208.             }else{
  209.                 $this->twig->addGlobal('ChainStore'null);
  210.             }
  211.         }else{
  212.             $this->twig->addGlobal('ChainStore'null);
  213.         }
  214.     }
  215.     /**
  216.      * {@inheritdoc}
  217.      */
  218.     public static function getSubscribedEvents()
  219.     {
  220.         return [
  221.             KernelEvents::REQUEST => [
  222.                 // SecurityServiceProviderで、認証処理が完了した後に実行.
  223.                 ['onKernelRequest'6],
  224.             ],
  225.         ];
  226.     }
  227.     private function getCurrentUser()
  228.     {
  229.         if(!$this->tokenStorage){
  230.             return null;
  231.         }
  232.         if (!$token $this->tokenStorage->getToken()) {
  233.             return null;
  234.         }
  235.         if (!$token->isAuthenticated()) {
  236.             return null;
  237.         }
  238.         if(!$user $token->getUser()){
  239.             return null;
  240.         }
  241.         if(is_object($user)){
  242.             return $user;
  243.         }
  244.         return null;
  245.     }
  246. }