Skip to content

Commit 06b976c

Browse files
committed
Merge remote-tracking branch 'mpi/MC-22606' into Chaika-PR-2019-11-19
2 parents 2959663 + 353ddb6 commit 06b976c

File tree

1 file changed

+34
-15
lines changed

1 file changed

+34
-15
lines changed

app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
namespace Magento\CatalogUrlRewrite\Observer;
99

10-
use Magento\Catalog\Model\Product;
1110
use Magento\Catalog\Model\Category;
11+
use Magento\Catalog\Model\Product;
1212
use Magento\Catalog\Model\ResourceModel\Product\Collection;
1313
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
1414
use Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider;
@@ -118,13 +118,15 @@ public function __construct(
118118
$this->productCollectionFactory = $productCollectionFactory;
119119
$this->categoryBasedProductRewriteGenerator = $categoryBasedProductRewriteGenerator;
120120

121-
$objectManager = ObjectManager::getInstance();
122-
$mergeDataProviderFactory = $mergeDataProviderFactory ?: $objectManager->get(MergeDataProviderFactory::class);
121+
$mergeDataProviderFactory = $mergeDataProviderFactory
122+
?? ObjectManager::getInstance()->get(MergeDataProviderFactory::class);
123123
$this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
124-
$this->serializer = $serializer ?: $objectManager->get(Json::class);
124+
$this->serializer = $serializer
125+
?? ObjectManager::getInstance()->get(Json::class);
125126
$this->productScopeRewriteGenerator = $productScopeRewriteGenerator
126-
?: $objectManager->get(ProductScopeRewriteGenerator::class);
127-
$this->scopeConfig = $scopeConfig ?? $objectManager->get(ScopeConfigInterface::class);
127+
?? ObjectManager::getInstance()->get(ProductScopeRewriteGenerator::class);
128+
$this->scopeConfig = $scopeConfig
129+
?? ObjectManager::getInstance()->get(ScopeConfigInterface::class);
128130
}
129131

130132
/**
@@ -207,18 +209,14 @@ public function deleteCategoryRewritesForChildren(Category $category)
207209
foreach ($categoryIds as $categoryId) {
208210
$this->urlPersist->deleteByData(
209211
[
210-
UrlRewrite::ENTITY_ID =>
211-
$categoryId,
212-
UrlRewrite::ENTITY_TYPE =>
213-
CategoryUrlRewriteGenerator::ENTITY_TYPE,
212+
UrlRewrite::ENTITY_ID => $categoryId,
213+
UrlRewrite::ENTITY_TYPE => CategoryUrlRewriteGenerator::ENTITY_TYPE,
214214
]
215215
);
216216
$this->urlPersist->deleteByData(
217217
[
218-
UrlRewrite::METADATA =>
219-
$this->serializer->serialize(['category_id' => $categoryId]),
220-
UrlRewrite::ENTITY_TYPE =>
221-
ProductUrlRewriteGenerator::ENTITY_TYPE,
218+
UrlRewrite::METADATA => $this->serializer->serialize(['category_id' => $categoryId]),
219+
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
222220
]
223221
);
224222
}
@@ -252,7 +250,7 @@ private function getCategoryProductsUrlRewrites(
252250
->addAttributeToSelect('url_key')
253251
->addAttributeToSelect('url_path');
254252

255-
foreach ($productCollection as $product) {
253+
foreach ($this->getProducts($productCollection) as $product) {
256254
if (isset($this->isSkippedProduct[$category->getEntityId()]) &&
257255
in_array($product->getId(), $this->isSkippedProduct[$category->getEntityId()])
258256
) {
@@ -270,6 +268,27 @@ private function getCategoryProductsUrlRewrites(
270268
return $mergeDataProvider->getData();
271269
}
272270

271+
/**
272+
* Get products from provided collection
273+
*
274+
* @param Collection $collection
275+
* @return \Generator|Product[]
276+
*/
277+
private function getProducts(Collection $collection): \Generator
278+
{
279+
$collection->setPageSize(1000);
280+
$pageCount = $collection->getLastPageNumber();
281+
$currentPage = 1;
282+
while ($currentPage <= $pageCount) {
283+
$collection->setCurPage($currentPage);
284+
foreach ($collection as $key => $product) {
285+
yield $key => $product;
286+
}
287+
$collection->clear();
288+
$currentPage++;
289+
}
290+
}
291+
273292
/**
274293
* Generates product URL rewrites.
275294
*

0 commit comments

Comments
 (0)