<?php
/*
* Copyright(c) 2020 RACCOON HOLDINGS, Inc. All rights reserved.
* https://paid.jp/
*/
namespace Plugin\Paid4\EventSubscriber;
use Eccube\Common\EccubeConfig;
use Eccube\Entity\Customer;
use Eccube\Event\TemplateEvent;
use Plugin\Paid4\Entity\PaidCustomer;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class MypageEventSubscriber implements EventSubscriberInterface
{
/**
* @var TokenStorageInterface
*/
private $tokenStorage;
/**
* @var mixed
*/
private $unregistered;
/**
* @var mixed
*/
private $notAvailable;
/**
* コンストラクタ
*
* @param EccubeConfig $eccubeConfig
* @param TokenStorageInterface $tokenStorage
*/
public function __construct(
EccubeConfig $eccubeConfig,
TokenStorageInterface $tokenStorage
)
{
$this->tokenStorage = $tokenStorage;
$this->unregistered = $eccubeConfig['paid4.register.unregistered'];
$this->notAvailable = $eccubeConfig['paid4.use.not_available'];
}
/**
* @return array
*/
public static function getSubscribedEvents()
{
return [
'Mypage/index.twig' => 'onDefaultMypageNaviTwig',
'Mypage/history.twig' => 'onDefaultMypageNaviTwig',
'Mypage/favorite.twig' => 'onDefaultMypageNaviTwig',
'Mypage/change.twig' => 'onDefaultMypageNaviTwig',
'Mypage/change_complete.twig' => 'onDefaultMypageNaviTwig',
'Mypage/delivery.twig' => 'onDefaultMypageNaviTwig',
'Mypage/delivery_edit.twig' => 'onDefaultMypageNaviTwig',
'Mypage/withdraw.twig' => 'onDefaultMypageNaviTwig',
'@Paid4/default/Mypage/paid_mypage_entry.twig' => 'onDefaultMypageNaviTwig',
'@Paid4/default/Mypage/paid_mypage_entry_complete.twig' => 'onDefaultMypageNaviTwig',
'@Paid4/default/Mypage/paid_mypage_information.twig' => 'onDefaultMypageNaviTwig',
];
}
/**
* フロント -> マイページ -> ナビ
*/
public function onDefaultMypageNaviTwig(TemplateEvent $event)
{
$token = $this->tokenStorage->getToken();
if ($token && $token->getUser() !== "anon.") {
if ($token->getProviderKey() === "customer") {
/** @var Customer $Customer */
$Customer = $token->getUser();
/** @var PaidCustomer $PaidCustomer */
$PaidCustomer = $Customer->getPaidCustomer();
$entryFlag = false;
$informationFlag = false;
if (!is_null($PaidCustomer)) {
// 未登録
if ($PaidCustomer->getPaidRegister() == $this->unregistered
|| is_null($PaidCustomer->getPaidRegister())) {
$entryFlag = true;
// 登録済み
} else {
$informationFlag = true;
}
//paid利用NG
if ($PaidCustomer->getPaidUse() == $this->notAvailable
&& is_null($PaidCustomer->getPaidRegister())) {
return;
}
} else {
$entryFlag = true;
}
$event->setParameter('isAvailablePaidEntry', $entryFlag);
$event->setParameter('isAvailablePaidInformation', $informationFlag);
$event->addSnippet('@Paid4/default/Mypage/mypage_navi.twig');
}
}
}
}