![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-catalog/Block/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Block\Product; /** * Class AbstractProduct * @api * @deprecated 102.0.0 * @SuppressWarnings(PHPMD.NumberOfChildren) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @since 100.0.2 */ class AbstractProduct extends \Magento\Framework\View\Element\Template { /** * @var array */ protected $_priceBlock = []; /** * Flag which allow/disallow to use link for as low as price * * @var bool */ protected $_useLinkForAsLowAs = true; /** * Default product amount per row * * @var int */ protected $_defaultColumnCount = 3; /** * Product amount per row depending on custom page layout of category * * @var array */ protected $_columnCountLayoutDepend = []; /** * Core registry * * @var \Magento\Framework\Registry */ protected $_coreRegistry; /** * Tax data * * @var \Magento\Tax\Helper\Data */ protected $_taxData; /** * Catalog config * * @var \Magento\Catalog\Model\Config */ protected $_catalogConfig; /** * @var \Magento\Framework\Math\Random */ protected $_mathRandom; /** * @var \Magento\Checkout\Helper\Cart */ protected $_cartHelper; /** * @var \Magento\Wishlist\Helper\Data */ protected $_wishlistHelper; /** * @var \Magento\Catalog\Helper\Product\Compare */ protected $_compareProduct; /** * @var \Magento\Catalog\Helper\Image */ protected $_imageHelper; /** * @var ReviewRendererInterface */ protected $reviewRenderer; /** * @var \Magento\CatalogInventory\Api\StockRegistryInterface */ protected $stockRegistry; /** * @var ImageBuilder * @since 102.0.0 */ protected $imageBuilder; /** * @param Context $context * @param array $data */ public function __construct(\Magento\Catalog\Block\Product\Context $context, array $data = []) { $this->_imageHelper = $context->getImageHelper(); $this->imageBuilder = $context->getImageBuilder(); $this->_compareProduct = $context->getCompareProduct(); $this->_wishlistHelper = $context->getWishlistHelper(); $this->_cartHelper = $context->getCartHelper(); $this->_catalogConfig = $context->getCatalogConfig(); $this->_coreRegistry = $context->getRegistry(); $this->_taxData = $context->getTaxData(); $this->_mathRandom = $context->getMathRandom(); $this->reviewRenderer = $context->getReviewRenderer(); $this->stockRegistry = $context->getStockRegistry(); parent::__construct($context, $data); } /** * Retrieve url for add product to cart * * Will return product view page URL if product has required options * * @param \Magento\Catalog\Model\Product $product * @param array $additional * @return string */ public function getAddToCartUrl($product, $additional = []) { if (!$product->getTypeInstance()->isPossibleBuyFromList($product)) { if (!isset($additional['_escape'])) { $additional['_escape'] = true; } if (!isset($additional['_query'])) { $additional['_query'] = []; } $additional['_query']['options'] = 'cart'; return $this->getProductUrl($product, $additional); } return $this->_cartHelper->getAddUrl($product, $additional); } /** * Retrieves url for form submitting. * * Some objects can use setSubmitRouteData() to set route and params for form submitting, * otherwise default url will be used * * @param \Magento\Catalog\Model\Product $product * @param array $additional * @return string */ public function getSubmitUrl($product, $additional = []) { $submitRouteData = $this->getData('submit_route_data'); if ($submitRouteData) { $route = $submitRouteData['route']; $params = isset($submitRouteData['params']) ? $submitRouteData['params'] : []; $submitUrl = $this->getUrl($route, array_merge($params, $additional)); } else { $submitUrl = $this->getAddToCartUrl($product, $additional); } return $submitUrl; } /** * Retrieve add to wishlist params * * @param \Magento\Catalog\Model\Product $product * @return string */ public function getAddToWishlistParams($product) { return $this->_wishlistHelper->getAddParams($product); } /** * Retrieve Add Product to Compare Products List URL * * @return string */ public function getAddToCompareUrl() { return $this->_compareProduct->getAddUrl(); } /** * Gets minimal sales quantity * * @param \Magento\Catalog\Model\Product $product * @return float|null */ public function getMinimalQty($product) { $stockItem = $this->stockRegistry->getStockItem($product->getId(), $product->getStore()->getWebsiteId()); $minSaleQty = $stockItem->getMinSaleQty(); return $minSaleQty > 0 ? $minSaleQty : null; } /** * Get product reviews summary * * @param \Magento\Catalog\Model\Product $product * @param bool $templateType * @param bool $displayIfNoReviews * @return string */ public function getReviewsSummaryHtml( \Magento\Catalog\Model\Product $product, $templateType = false, $displayIfNoReviews = false ) { return $this->reviewRenderer->getReviewsSummaryHtml($product, $templateType, $displayIfNoReviews); } /** * Retrieve currently viewed product object * * @return \Magento\Catalog\Model\Product */ public function getProduct() { if (!$this->hasData('product')) { $this->setData('product', $this->_coreRegistry->registry('product')); } return $this->getData('product'); } /** * Add all attributes and apply pricing logic to products collection * to get correct values in different products lists. * E.g. crosssells, upsells, new products, recently viewed * * @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection * @return \Magento\Catalog\Model\ResourceModel\Product\Collection */ protected function _addProductAttributesAndPrices( \Magento\Catalog\Model\ResourceModel\Product\Collection $collection ) { return $collection ->addMinimalPrice() ->addFinalPrice() ->addTaxPercents() ->addAttributeToSelect($this->_catalogConfig->getProductAttributes()) ->addUrlRewrite(); } /** * Retrieve Product URL using UrlDataObject * * @param \Magento\Catalog\Model\Product $product * @param array $additional the route params * @return string */ public function getProductUrl($product, $additional = []) { if ($this->hasProductUrl($product)) { if (!isset($additional['_escape'])) { $additional['_escape'] = true; } return $product->getUrlModel()->getUrl($product, $additional); } return '#'; } /** * Check Product has URL * * @param \Magento\Catalog\Model\Product $product * @return bool */ public function hasProductUrl($product) { if ($product->getVisibleInSiteVisibilities()) { return true; } if ($product->hasUrlDataObject()) { if (in_array($product->hasUrlDataObject()->getVisibility(), $product->getVisibleInSiteVisibilities())) { return true; } } return false; } /** * Retrieve product amount per row * * @return int */ public function getColumnCount() { if (!$this->_getData('column_count')) { $pageLayout = $this->getPageLayout(); if ($pageLayout && $this->getColumnCountLayoutDepend($pageLayout->getCode())) { $this->setData('column_count', $this->getColumnCountLayoutDepend($pageLayout->getCode())); } else { $this->setData('column_count', $this->_defaultColumnCount); } } return (int) $this->_getData('column_count'); } /** * Add row size depends on page layout * * @param string $pageLayout * @param int $columnCount * @return \Magento\Catalog\Block\Product\ListProduct */ public function addColumnCountLayoutDepend($pageLayout, $columnCount) { $this->_columnCountLayoutDepend[$pageLayout] = $columnCount; return $this; } /** * Remove row size depends on page layout * * @param string $pageLayout * @return \Magento\Catalog\Block\Product\ListProduct */ public function removeColumnCountLayoutDepend($pageLayout) { if (isset($this->_columnCountLayoutDepend[$pageLayout])) { unset($this->_columnCountLayoutDepend[$pageLayout]); } return $this; } /** * Retrieve row size depends on page layout * * @param string $pageLayout * @return int|boolean */ public function getColumnCountLayoutDepend($pageLayout) { if (isset($this->_columnCountLayoutDepend[$pageLayout])) { return $this->_columnCountLayoutDepend[$pageLayout]; } return false; } /** * Retrieve current page layout * * @return string */ public function getPageLayout() { // TODO: Implement of getting current page layout return ''; } /** * Check whether the price can be shown for the specified product * * @param \Magento\Catalog\Model\Product $product * @return bool * @SuppressWarnings(PHPMD.BooleanGetMethodName) */ public function getCanShowProductPrice($product) { return $product->getCanShowPrice() !== false; } /** * Get if it is necessary to show product stock status * * @return bool */ public function displayProductStockStatus() { $statusInfo = new \Magento\Framework\DataObject(['display_status' => true]); $this->_eventManager->dispatch('catalog_block_product_status_display', ['status' => $statusInfo]); return (bool) $statusInfo->getDisplayStatus(); } /** * Get random string * * @param int $length * @param string|null $chars * @return string */ public function getRandomString($length, $chars = null) { return $this->_mathRandom->getRandomString($length, $chars); } /** * Return HTML block with price * * @param \Magento\Catalog\Model\Product $product * @return string */ public function getProductPrice(\Magento\Catalog\Model\Product $product) { return $this->getProductPriceHtml( $product, \Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE, \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST ); } /** * Return HTML block with tier price * * @param \Magento\Catalog\Model\Product $product * @param string $priceType * @param string $renderZone * @param array $arguments * @return string */ public function getProductPriceHtml( \Magento\Catalog\Model\Product $product, $priceType, $renderZone = \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST, array $arguments = [] ) { if (!isset($arguments['zone'])) { $arguments['zone'] = $renderZone; } /** @var \Magento\Framework\Pricing\Render $priceRender */ $priceRender = $this->getLayout()->getBlock('product.price.render.default'); $price = ''; if ($priceRender) { $price = $priceRender->render($priceType, $product, $arguments); } return $price; } /** * Whether redirect to cart enabled * * @return bool */ public function isRedirectToCartEnabled() { return $this->_scopeConfig->getValue( 'checkout/cart/redirect_to_cart', \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); } /** * Retrieve product details html * * @param \Magento\Catalog\Model\Product $product * @return mixed */ public function getProductDetailsHtml(\Magento\Catalog\Model\Product $product) { $renderer = $this->getDetailsRenderer($product->getTypeId()); if ($renderer) { $renderer->setProduct($product); return $renderer->toHtml(); } return ''; } /** * Get the renderer that will be used to render the details block * * @param string|null $type * @return bool|\Magento\Framework\View\Element\AbstractBlock */ public function getDetailsRenderer($type = null) { if ($type === null) { $type = 'default'; } $rendererList = $this->getDetailsRendererList(); if ($rendererList) { return $rendererList->getRenderer($type, 'default'); } return null; } /** * Return the list of details * * @return \Magento\Framework\View\Element\RendererList */ protected function getDetailsRendererList() { return $this->getDetailsRendererListName() ? $this->getLayout()->getBlock( $this->getDetailsRendererListName() ) : $this->getChildBlock( 'details.renderers' ); } /** * Retrieve product image * * @param \Magento\Catalog\Model\Product $product * @param string $imageId * @param array $attributes * @return \Magento\Catalog\Block\Product\Image */ public function getImage($product, $imageId, $attributes = []) { return $this->imageBuilder->create($product, $imageId, $attributes); } }