diff --git a/vendor/magento/module-shared-catalog/Model/SharedCatalogAssignment.php b/vendor/magento/module-shared-catalog/Model/SharedCatalogAssignment.php index 6ac24b956ed7..732de3d21f2e 100644 --- a/vendor/magento/module-shared-catalog/Model/SharedCatalogAssignment.php +++ b/vendor/magento/module-shared-catalog/Model/SharedCatalogAssignment.php @@ -121,7 +121,6 @@ public function unassignProductsForCategories( array $assignCategoriesIds ) { $products = $this->getUnassignProductsByCategoryIds( - $sharedCatalogId, $unassignCategoriesIds, $assignCategoriesIds ); @@ -268,22 +267,24 @@ public function getAssignProductsByCategoryIds(array $assignCategoriesIds): arra /** * Get products to be unassigned from shared catalog when categories are unassigned. * - * @param int $sharedCatalogId * @param array $unassignCategoriesIds * @param array $assignedCategoriesIds * @return array */ private function getUnassignProductsByCategoryIds( - $sharedCatalogId, array $unassignCategoriesIds, array $assignedCategoriesIds ) { - $sharedCatalog = $this->sharedCatalogRepository->get($sharedCatalogId); + if (empty($unassignCategoriesIds)) { + return []; + } $assignedCategoriesIds = array_diff($assignedCategoriesIds, $unassignCategoriesIds); + if (empty($assignedCategoriesIds)) { + return $this->getProductsByCategoryIds($unassignCategoriesIds); + } $unassignProducts = []; - $this->searchCriteriaBuilder->addFilter('customer_group_id', $sharedCatalog->getCustomerGroupId()); - $searchCriteria = $this->searchCriteriaBuilder->create(); - foreach ($this->sharedCatalogProductItemRepository->getList($searchCriteria)->getItems() as $product) { + $products = $this->getProductsByCategoryIds($unassignCategoriesIds); + foreach ($products as $product) { $product = $this->sharedCatalogInvalidation->checkProductExist($product->getSku()); if (empty(array_intersect($product->getCategoryIds(), $assignedCategoriesIds))) { $unassignProducts[] = $product;