Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Validator.php
Go to the documentation of this file.
1 <?php
8 
12 class Validator implements ValidatorInterface
13 {
17  private $_paypalConfigFactory;
18 
22  private $_registry;
23 
27  private $_productTypeConfig;
28 
32  private $_paymentData;
33 
40  public function __construct(
41  \Magento\Paypal\Model\ConfigFactory $paypalConfigFactory,
42  \Magento\Framework\Registry $registry,
43  \Magento\Catalog\Model\ProductTypes\ConfigInterface $productTypeConfig,
44  \Magento\Payment\Helper\Data $paymentData
45  ) {
46  $this->_paypalConfigFactory = $paypalConfigFactory;
47  $this->_registry = $registry;
48  $this->_productTypeConfig = $productTypeConfig;
49  $this->_paymentData = $paymentData;
50  }
51 
59  public function validate($code, $isInCatalog)
60  {
61  return $this->isContextAvailable($code, $isInCatalog)
62  && $this->isPriceOrSetAvailable($isInCatalog)
63  && $this->isMethodAvailable($code);
64  }
65 
73  public function isContextAvailable($paymentCode, $isInCatalog)
74  {
76  $config = $this->_paypalConfigFactory->create();
77  $config->setMethod($paymentCode);
78 
79  // check visibility on cart or product page
80  $context = $isInCatalog ? 'visible_on_product' : 'visible_on_cart';
81  if (!$config->getValue($context)) {
82  return false;
83  }
84  return true;
85  }
86 
93  public function isPriceOrSetAvailable($isInCatalog)
94  {
95  if ($isInCatalog) {
96  // Show PayPal shortcut on a product view page only if product has nonzero price
98  $currentProduct = $this->_registry->registry('current_product');
99  if ($currentProduct !== null) {
100  $productPrice = (double)$currentProduct->getFinalPrice();
101  $typeInstance = $currentProduct->getTypeInstance();
102  if (empty($productPrice)
103  && !$this->_productTypeConfig->isProductSet($currentProduct->getTypeId())
104  && !$typeInstance->canConfigure($currentProduct)
105  ) {
106  return false;
107  }
108  }
109  }
110  return true;
111  }
112 
119  public function isMethodAvailable($paymentCode)
120  {
121  // check payment method availability
123  $methodInstance = $this->_paymentData->getMethodInstance($paymentCode);
124  if (!$methodInstance->isAvailable()) {
125  return false;
126  }
127  return true;
128  }
129 }
$config
Definition: fraud_order.php:17
__construct(\Magento\Paypal\Model\ConfigFactory $paypalConfigFactory, \Magento\Framework\Registry $registry, \Magento\Catalog\Model\ProductTypes\ConfigInterface $productTypeConfig, \Magento\Payment\Helper\Data $paymentData)
Definition: Validator.php:40
$code
Definition: info.phtml:12