![]() 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-inventory/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\CatalogInventory\Model; use Magento\CatalogInventory\Api\StockConfigurationInterface; use Magento\CatalogInventory\Api\StockItemRepositoryInterface; use Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory; use Magento\CatalogInventory\Api\StockStatusCriteriaInterfaceFactory; use Magento\CatalogInventory\Api\StockStatusRepositoryInterface; /** * Preload stock data into stock registry */ class StockRegistryPreloader { /** * @var StockItemRepositoryInterface */ private $stockItemRepository; /** * @var StockConfigurationInterface */ private $stockConfiguration; /** * @var StockRegistryStorage */ private $stockRegistryStorage; /** * @var StockItemCriteriaInterfaceFactory */ private $stockItemCriteriaFactory; /** * @var StockStatusCriteriaInterfaceFactory */ private $stockStatusCriteriaFactory; /** * @var StockStatusRepositoryInterface */ private $stockStatusRepository; /** * @param StockItemRepositoryInterface $stockItemRepository * @param StockStatusRepositoryInterface $stockStatusRepository * @param StockItemCriteriaInterfaceFactory $stockItemCriteriaFactory * @param StockStatusCriteriaInterfaceFactory $stockStatusCriteriaFactory * @param StockConfigurationInterface $stockConfiguration * @param StockRegistryStorage $stockRegistryStorage */ public function __construct( StockItemRepositoryInterface $stockItemRepository, StockStatusRepositoryInterface $stockStatusRepository, StockItemCriteriaInterfaceFactory $stockItemCriteriaFactory, StockStatusCriteriaInterfaceFactory $stockStatusCriteriaFactory, StockConfigurationInterface $stockConfiguration, StockRegistryStorage $stockRegistryStorage ) { $this->stockItemRepository = $stockItemRepository; $this->stockStatusRepository = $stockStatusRepository; $this->stockItemCriteriaFactory = $stockItemCriteriaFactory; $this->stockStatusCriteriaFactory = $stockStatusCriteriaFactory; $this->stockConfiguration = $stockConfiguration; $this->stockRegistryStorage = $stockRegistryStorage; } /** * Preload stock item into stock registry * * @param array $productIds * @param int|null $scopeId * @return \Magento\CatalogInventory\Api\Data\StockItemInterface[] */ public function preloadStockItems(array $productIds, ?int $scopeId = null): array { $scopeId = $scopeId ?? $this->stockConfiguration->getDefaultScopeId(); $criteria = $this->stockItemCriteriaFactory->create(); $criteria->setProductsFilter($productIds); $criteria->setScopeFilter($scopeId); $collection = $this->stockItemRepository->getList($criteria); $this->setStockItems($collection->getItems(), $scopeId); return $collection->getItems(); } /** * Saves stock items into registry * * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems * @param int $scopeId */ public function setStockItems(array $stockItems, int $scopeId): void { foreach ($stockItems as $item) { $this->stockRegistryStorage->setStockItem($item->getProductId(), $scopeId, $item); } } /** * Preload stock status into stock registry * * @param array $productIds * @param int|null $scopeId * @return \Magento\CatalogInventory\Api\Data\StockStatusInterface[] */ public function preloadStockStatuses(array $productIds, ?int $scopeId = null): array { $scopeId = $scopeId ?? $this->stockConfiguration->getDefaultScopeId(); $criteria = $this->stockStatusCriteriaFactory->create(); $criteria->setProductsFilter($productIds); $criteria->setScopeFilter($scopeId); $collection = $this->stockStatusRepository->getList($criteria); $this->setStockStatuses($collection->getItems(), $scopeId); return $collection->getItems(); } /** * Saves stock statuses into registry * * @param \Magento\CatalogInventory\Api\Data\StockStatusInterface[] $stockStatuses * @param int $scopeId */ public function setStockStatuses(array $stockStatuses, int $scopeId): void { foreach ($stockStatuses as $item) { $this->stockRegistryStorage->setStockStatus($item->getProductId(), $scopeId, $item); } } }