. */ /* */ /*************************************************************************************/ namespace PayPal\Hook; use PayPal\Model\PaypalCartQuery; use PayPal\PayPal; use PayPal\Service\Base\PayPalBaseService; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\RequestStack; use Thelia\Core\Event\Hook\HookRenderEvent; use Thelia\Core\Hook\BaseHook; use Thelia\Core\HttpFoundation\Session\Session; /** * Class FrontHookManager * @package PayPal\Hook */ class FrontHookManager extends BaseHook { /** @var RequestStack */ protected $requestStack; /** @var ContainerInterface */ protected $container; /** * FrontHookManager constructor. * @param RequestStack $requestStack * @param ContainerInterface $container */ public function __construct(RequestStack $requestStack, ContainerInterface $container) { $this->requestStack = $requestStack; $this->container = $container; } /** * @param HookRenderEvent $event */ public function onLoginMainBottom(HookRenderEvent $event) { $templateData = $event->getArguments(); $templateData['paypal_appid'] = PayPalBaseService::getLogin(); $templateData['paypal_authend'] = PayPalBaseService::getMode(); $event->add( $this->render( 'paypal/login-bottom.html', $templateData ) ); } /** * @param HookRenderEvent $event */ public function onOrderInvoicePaymentExtra(HookRenderEvent $event) { $templateData = $event->getArguments(); $templateData['method_paypal_with_in_context'] = PayPal::getConfigValue('method_paypal_with_in_context'); $event->add( $this->render( 'paypal/order-invoice-payment-extra.html', $templateData ) ); } /** * @param HookRenderEvent $event */ public function onOrderInvoiceBottom(HookRenderEvent $event) { $templateData = $event->getArguments(); $templateData['paypal_mode'] = PayPalBaseService::getMode(); $templateData['paypal_merchantid'] = PayPalBaseService::getMerchantId(); $event->add( $this->render( 'paypal/order-invoice-bottom.html', $templateData ) ); } public function onOrderInvoiceJavascriptInitialization(HookRenderEvent $event) { $render = $this->render( 'paypal/order-invoice-js.html', [ 'module_id' => PayPal::getModuleId(), ] ); $event->add($render); } /** * @param HookRenderEvent $event */ public function onOrderPlacedAdditionalPaymentInfo(HookRenderEvent $event) { $templateData = $event->getArguments(); $event->add( $this->render( 'paypal/order-placed-additional-payment-info.html', $templateData ) ); } /** * @param HookRenderEvent $event */ public function onCartBottom(HookRenderEvent $event) { $payPal = new PayPal(); $payPal->setContainer($this->container); if (PayPal::getConfigValue('method_express_checkout') == 1 && $payPal->isValidPayment()) { $templateData = $event->getArguments(); $templateData['paypal_mode'] = PayPalBaseService::getMode(); $templateData['paypal_merchantid'] = PayPalBaseService::getMerchantId(); $event->add( $this->render( 'paypal/cart-bottom.html', $templateData ) ); } } /** * @param HookRenderEvent $event */ public function onOrderDeliveryFormBottom(HookRenderEvent $event) { if ($this->isValidExpressCheckout()) { $templateData = $event->getArguments(); $event->add( $this->render( 'paypal/order-delivery-bottom.html', $templateData ) ); } } /** * @param HookRenderEvent $event */ public function onOrderAfterJavascriptInclude(HookRenderEvent $event) { if ($this->isValidExpressCheckout()) { $templateData = $event->getArguments(); $event->add( $this->render( 'paypal/order-delivery-bottom-js.html', $templateData ) ); } } protected function isValidExpressCheckout() { $isValid = false; /** @var Session $session */ $session = $this->requestStack->getCurrentRequest()->getSession(); $cart = $session->getSessionCart($this->dispatcher); $payPal = new PayPal(); $payPal->setContainer($this->container); if (PayPal::getConfigValue('method_express_checkout') == 1 && $payPal->isValidPayment()) { if (null !== $payPalCart = PaypalCartQuery::create()->findOneById($cart->getId())) { if ($payPalCart->getExpressPaymentId() && $payPalCart->getExpressPayerId() && $payPalCart->getExpressToken()) { $isValid = true; } } } return $isValid; } }