* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopCheckout\Validator; use PrestaShop\Module\PrestashopCheckout\ExpressCheckout\ExpressCheckoutConfiguration; use PrestaShop\Module\PrestashopCheckout\PayPal\PayPalConfiguration; use PrestaShop\Module\PrestashopCheckout\PayPal\PayPalPayLaterConfiguration; class FrontControllerValidator { /** * @var MerchantValidator */ private $merchantValidator; /** * @var ExpressCheckoutConfiguration */ private $expressCheckoutConfiguration; /** * @var PayPalPayLaterConfiguration */ private $payLaterConfiguration; public function __construct( MerchantValidator $merchantValidator, ExpressCheckoutConfiguration $expressCheckoutConfiguration, PayPalPayLaterConfiguration $payLaterConfiguration ) { $this->merchantValidator = $merchantValidator; $this->expressCheckoutConfiguration = $expressCheckoutConfiguration; $this->payLaterConfiguration = $payLaterConfiguration; } /** * @param string $controller * * @return bool */ public function shouldLoadFrontJS($controller) { if (false === $this->merchantValidator->merchantIsValid()) { return false; } switch ($controller) { // Homepage case 'index': return $this->payLaterConfiguration->isHomePageBannerActive(); // Category case 'category': return $this->payLaterConfiguration->isCategoryPageBannerActive(); case 'orderopc': case 'order': return true; case 'product': return $this->payLaterConfiguration->isProductPageMessageActive() || $this->payLaterConfiguration->isProductPageBannerActive() || $this->payLaterConfiguration->isProductPageButtonActive() || $this->expressCheckoutConfiguration->isProductPageEnabled() || \Configuration::get(PayPalConfiguration::PS_CHECKOUT_DISPLAY_LOGO_PRODUCT); case 'cart': return $this->payLaterConfiguration->isOrderPageMessageActive() || $this->payLaterConfiguration->isOrderPageBannerActive() || $this->payLaterConfiguration->isCartPageButtonActive() || $this->expressCheckoutConfiguration->isOrderPageEnabled() || \Configuration::get(PayPalConfiguration::PS_CHECKOUT_DISPLAY_LOGO_CART); case 'authentication': return $this->expressCheckoutConfiguration->isCheckoutPageEnabled() || $this->payLaterConfiguration->isOrderPageButtonActive(); } return false; } /** * @param string $controller * * @return bool */ public function shouldLoadFrontCss($controller) { if (false === $this->merchantValidator->merchantIsValid()) { return false; } switch ($controller) { // Homepage case 'index': return $this->payLaterConfiguration->isHomePageBannerActive(); // Category case 'category': return $this->payLaterConfiguration->isCategoryPageBannerActive(); // Payment step case 'orderopc': case 'order': // Payment methods logos (always if merchant is valid), Payment4X banner, ExpressCheckout button case 'product': case 'cart': return true; // ExpressCheckout button case 'authentication': return $this->expressCheckoutConfiguration->isCheckoutPageEnabled() || $this->payLaterConfiguration->isOrderPageButtonActive(); } return false; } /** * @param string $controller * * @return bool */ public function shouldDisplayFundingLogo($controller) { if (false === $this->merchantValidator->merchantIsValid()) { return false; } switch ($controller) { case 'product': return (bool) \Configuration::get(PayPalConfiguration::PS_CHECKOUT_DISPLAY_LOGO_PRODUCT); case 'cart': return (bool) \Configuration::get(PayPalConfiguration::PS_CHECKOUT_DISPLAY_LOGO_CART); } return false; } }