| Current Path : /var/www/clients/client3/web2/web/vendor/magento/module-paypal/Block/PayLater/ |
| Current File : /var/www/clients/client3/web2/web/vendor/magento/module-paypal/Block/PayLater/Banner.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Paypal\Block\PayLater;
use Magento\Framework\View\Element\Template;
use Magento\Paypal\Model\PayLaterConfig;
use Magento\Paypal\Model\SdkUrl;
/**
* PayPal PayLater component block
* @api
*/
class Banner extends Template
{
/**
* @var PayLaterConfig
*/
private $payLaterConfig;
/**
* @var SdkUrl
*/
private $sdkUrl;
/**
* @var string
*/
private $placement = '';
/**
* @var string
*/
private $position = '';
/**
* @param Template\Context $context
* @param PayLaterConfig $payLaterConfig
* @param SdkUrl $sdkUrl
* @param array $data
*/
public function __construct(
Template\Context $context,
PayLaterConfig $payLaterConfig,
SdkUrl $sdkUrl,
array $data = []
) {
parent::__construct($context, $data);
$this->payLaterConfig = $payLaterConfig;
$this->sdkUrl = $sdkUrl;
$this->placement = $data['placement'] ?? '';
$this->position = $data['position'] ?? '';
}
/**
* Disable block output
*
* @return string
*/
protected function _toHtml(): string
{
if (!$this->isEnabled()) {
return '';
}
return parent::_toHtml();
}
/**
* @inheritdoc
*/
public function getJsLayout()
{
$jsComponent = $this->jsLayout['components']['payLater']['component']
?? 'Magento_Paypal/js/view/paylater';
//Extend block component config with defaults
$componentConfig = $this->jsLayout['components']['payLater']['config'] ?? [];
$defaultConfig = ['sdkUrl' => $this->getPayPalSdkUrl()];
$config = array_replace($defaultConfig, $componentConfig);
$displayAmount = $config['displayAmount'] ?? false;
$config['displayAmount'] = !$displayAmount || $this->payLaterConfig->isPPBillingAgreementEnabled()
? false : true;
//Extend block component attributes with defaults
$componentAttributes = $this->jsLayout['components']['payLater']['config']['attributes'] ?? [];
$config['attributes'] = array_replace($this->getStyleAttributesConfig(), $componentAttributes);
$config['attributes']['data-pp-placement'] = $this->placement;
$this->jsLayout = [
'components' => [
'payLater' => [
'component' => $jsComponent,
'config' => $config
]
]
];
return parent::getJsLayout();
}
/**
* Build\Get URL to PP SDK
*
* @return string
*/
private function getPayPalSdkUrl(): string
{
return $this->sdkUrl->getUrl();
}
/**
* Retrieve style configuration
*
* @return string[]
*/
private function getStyleAttributesConfig(): array
{
return $this->payLaterConfig->getSectionConfig($this->placement, PayLaterConfig::CONFIG_KEY_STYLE);
}
/**
* Check if block should be displayed
*
* @return bool
*/
private function isEnabled(): bool
{
$enabled = $this->payLaterConfig->isEnabled($this->placement);
return $enabled &&
$this->payLaterConfig->getSectionConfig($this->placement, PayLaterConfig::CONFIG_KEY_POSITION) ===
$this->position;
}
}