![]() 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/app/code/Cnc/CsBlock/Block/ |
<?php /** * Copyright (c) 2020 Kaliop Digital Commerce (https://digitalcommerce.kaliop.com) All Rights Reserved. * https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * Cnc * Radosław Stępień <[email protected]> <[email protected]> */ namespace Cnc\CsBlock\Block; use Aheadworks\Csblock\Model\CsblockFactory; use Aheadworks\Csblock\Model\ResourceModel\Content\CollectionFactory as ContentCollectionFactory; use Aheadworks\Csblock\Model\ResourceModel\Csblock\CollectionFactory as CsBlockCollectionFactory; use Cnc\Catalog\Model\Config; use Kaliop\CatalogGenericProductItem\ViewModel\Product\Item as GenericProductItemViewModel; use Magento\Catalog\Api\Data\ProductInterface; use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory as CategoryCollectionFactory; use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory as ProductCollectionFactory; use Magento\Customer\Model\Session; use Magento\Framework\Data\Form\FormKey; use Magento\Framework\Stdlib\DateTime\DateTime; use Magento\Framework\View\Element\Template\Context; class ProductSelection extends Base { const PRODUCTS_SKUS = 'products_skus'; const PRODUCTS_SKUS_DELIMITER = ','; const PRODUCTS_MAX_COUNT = 12; /** * @var GenericProductItemViewModel */ protected $genericProductItemViewModel; /** * ProductSelection constructor. * @param Context $context * @param FormKey $formKey * @param CsBlockCollectionFactory $csblockCollectionFactory * @param ContentCollectionFactory $contentCollectionFactory * @param CsblockFactory $csblockFactory * @param Session $customerSession * @param DateTime $dateTime * @param CategoryCollectionFactory $categoryCollectionFactory * @param ProductCollectionFactory $productCollectionFactory * @param GenericProductItemViewModel $genericProductItemViewModel * @param array $data */ public function __construct( Context $context, FormKey $formKey, CsBlockCollectionFactory $csblockCollectionFactory, ContentCollectionFactory $contentCollectionFactory, CsblockFactory $csblockFactory, Session $customerSession, DateTime $dateTime, CategoryCollectionFactory $categoryCollectionFactory, ProductCollectionFactory $productCollectionFactory, GenericProductItemViewModel $genericProductItemViewModel, array $data = [] ) { parent::__construct( $context, $formKey, $csblockCollectionFactory, $contentCollectionFactory, $csblockFactory, $customerSession, $dateTime, $categoryCollectionFactory, $productCollectionFactory, $data ); $this->genericProductItemViewModel = $genericProductItemViewModel; } /** * @return string */ public function getProductsSkus() { return $this->getData(self::PRODUCTS_SKUS) ?: ''; } /** * @return bool|ProductInterface[] */ public function getProducts() { $selectedProducts = false; if ($productsSkus = $this->getProductsSkus()) { $productsSkusArray = explode(self::PRODUCTS_SKUS_DELIMITER, $productsSkus); $selectedProducts = $this->productCollectionFactory->create() ->addAttributeToSelect([ 'name', 'image', 'price', Config::PRODUCT_ATTRIBUTE_CODE_AVAILABILITY_ICON, Config::PRODUCT_ATTRIBUTE_CODE_STATE_OF_WEAR ]) ->addAttributeToFilter( 'sku', ['in' => $productsSkusArray] )->getItems(); $selectedProducts = array_slice($selectedProducts, 0, self::PRODUCTS_MAX_COUNT); } return $selectedProducts; } /** * @return GenericProductItemViewModel */ public function getGenericProductItemViewModel() { return $this->genericProductItemViewModel; } }