![]() 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-reports/Model/Product/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Reports\Model\Product; use Magento\Catalog\Model\ResourceModel\Product\Collection as ProductCollection; use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory as ProductCollectionFactory; use Magento\Store\Model\StoreManagerInterface; /** * Retrieve products data for reports by entity id's */ class DataRetriever { /** * @var ProductCollectionFactory */ private $productCollectionFactory; /** * @var StoreManagerInterface */ private $storeManager; /** * DataRetriever constructor. * * @param ProductCollectionFactory $productCollectionFactory * @param StoreManagerInterface $storeManager */ public function __construct( ProductCollectionFactory $productCollectionFactory, StoreManagerInterface $storeManager ) { $this->productCollectionFactory = $productCollectionFactory; $this->storeManager = $storeManager; } /** * Retrieve products data by entity id's * * @param array $entityIds * @return array */ public function execute(array $entityIds = []): array { $productCollection = $this->getProductCollection($entityIds); return $this->prepareDataByCollection($productCollection); } /** * Get product collection filtered by entity id's * * @param array $entityIds * @return ProductCollection */ private function getProductCollection(array $entityIds = []): ProductCollection { $productCollection = $this->productCollectionFactory->create(); $productCollection->addAttributeToSelect('name'); $productCollection->addIdFilter($entityIds); $productCollection->addPriceData(null, $this->getWebsiteIdForFilter()); return $productCollection; } /** * Retrieve website id for filter collection * * @return int */ private function getWebsiteIdForFilter(): int { $defaultStoreView = $this->storeManager->getDefaultStoreView(); if ($defaultStoreView) { $websiteId = (int)$defaultStoreView->getWebsiteId(); } else { $websites = $this->storeManager->getWebsites(); $website = reset($websites); $websiteId = (int)$website->getId(); } return $websiteId; } /** * Prepare data by collection * * @param ProductCollection $productCollection * @return array */ private function prepareDataByCollection(ProductCollection $productCollection): array { $productsData = []; foreach ($productCollection as $product) { $productsData[$product->getId()] = $product->getData(); } return $productsData; } }