26 private $metadataPool;
31 private $collectionFactory;
38 private $idsBySku = [];
46 \
Magento\Framework\EntityManager\MetadataPool $metadataPool,
50 $this->metadataPool = $metadataPool;
51 $this->collectionFactory = $collectionFactory;
52 $this->idsLimit = (int)$idsLimit;
61 foreach (
$skus as $sku) {
62 $unifiedSku = strtolower(trim($sku));
63 if (!isset($this->idsBySku[$unifiedSku])) {
68 if (!empty($neededSkus)) {
72 $linkField = $this->metadataPool->getMetadata(\
Magento\Catalog\Api\Data\ProductInterface::class)
76 $this->idsBySku[strtolower(trim(
$item->getSku()))][
$item->getData($linkField)] =
$item->getTypeId();
81 foreach (
$skus as $sku) {
82 $unifiedSku = strtolower(trim($sku));
83 if (isset($this->idsBySku[$unifiedSku])) {
87 $this->truncateToLimit();
96 private function truncateToLimit()
98 if (count($this->idsBySku) > $this->idsLimit) {
99 $this->idsBySku = array_slice($this->idsBySku, round($this->idsLimit / -2));
__construct(\Magento\Framework\EntityManager\MetadataPool $metadataPool, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory, $idsLimit)
foreach($websiteCodes as $websiteCode) $skus
retrieveProductIdsBySkus(array $skus)