diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php index 6080c14ee2469410b7e7d195cd1c55cf8ada738f..59353c595c4ba97c1ce2e616c1a42512dbffe243 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php @@ -20,7 +20,7 @@ class ChildrenUrlRewriteGenerator protected $categoryUrlRewriteGeneratorFactory; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider @@ -36,7 +36,7 @@ class ChildrenUrlRewriteGenerator $this->categoryUrlRewriteGeneratorFactory = $categoryUrlRewriteGeneratorFactory; $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance() ->get(UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -49,7 +49,7 @@ class ChildrenUrlRewriteGenerator */ public function generate($storeId, Category $category, $rootCategoryId = null) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) { $childCategory->setStoreId($storeId); $childCategory->setData('save_rewrites_history', $category->getData('save_rewrites_history')); @@ -60,8 +60,6 @@ class ChildrenUrlRewriteGenerator ); } - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } } diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php index c2adf7bb7a3ffe658e0c708c2256a06efaab2454..b9936fa73d5ba2e1fb52edf7ed4ef2d01d3b2333 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php @@ -17,7 +17,13 @@ class CurrentUrlRewritesRegenerator protected $urlRewriteFactory; /** @var \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */ - private $urlRewritePlaceholder; + private $urlRewritePrototype; + + /** + * @var \Magento\Catalog\Model\Category + * @deprecated + */ + protected $category; /** * @var \Magento\UrlRewrite\Model\UrlFinderInterface @@ -29,7 +35,7 @@ class CurrentUrlRewritesRegenerator private $urlRewriteMap; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator @@ -47,13 +53,13 @@ class CurrentUrlRewritesRegenerator ) { $this->categoryUrlPathGenerator = $categoryUrlPathGenerator; $this->urlRewriteFactory = $urlRewriteFactory; - $this->urlRewritePlaceholder = $urlRewriteFactory->create(); + $this->urlRewritePrototype = $urlRewriteFactory->create(); $this->urlFinder = $urlFinder; $this->urlRewriteMap = $urlRewriteMap ?: \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteMap::class); $urlRewritesSetFactory = $urlRewritesSetFactory ?: \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\UrlRewrite\Model\UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -66,7 +72,7 @@ class CurrentUrlRewritesRegenerator */ public function generate($storeId, \Magento\Catalog\Model\Category $category, $rootCategoryId = null) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $currentUrlRewrites = $this->urlRewriteMap->getByIdentifiers( $category->getEntityId(), $storeId, @@ -82,9 +88,7 @@ class CurrentUrlRewritesRegenerator ); } - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** @@ -98,7 +102,7 @@ class CurrentUrlRewritesRegenerator if ($category->getData('save_rewrites_history')) { $targetPath = $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId); if ($url->getRequestPath() !== $targetPath) { - $generatedUrl = clone $this->urlRewritePlaceholder; + $generatedUrl = clone $this->urlRewritePrototype; $generatedUrl->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE) ->setEntityId($category->getEntityId()) ->setRequestPath($url->getRequestPath()) @@ -124,7 +128,7 @@ class CurrentUrlRewritesRegenerator ? $url->getTargetPath() : $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId); if ($url->getRequestPath() !== $targetPath) { - $generatedUrl = clone $this->urlRewritePlaceholder; + $generatedUrl = clone $this->urlRewritePrototype; $generatedUrl->setEntityType(CategoryUrlRewriteGenerator::ENTITY_TYPE) ->setEntityId($category->getEntityId()) ->setRequestPath($url->getRequestPath()) diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/Plugin/Storage.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/Plugin/Storage.php index e3916f991d1ba8f1ddbfa147e2bfd4e14bb3617c..be48210298231e759195bd65b1b0e428a1939317 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Category/Plugin/Storage.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/Plugin/Storage.php @@ -62,7 +62,7 @@ class Storage */ public function beforeDeleteByData(StorageInterface $object, array $data) { - $this->productResource->removeMultipleByFilter($data); + $this->productResource->removeMultipleByProductCategory($data); } /** diff --git a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php index fcf434fdb53de95cfd37f44a40855784e599e869..ff3e4198332e43e44e94f08d0881342551153e8b 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php @@ -23,6 +23,12 @@ class CategoryUrlRewriteGenerator /** @var StoreViewService */ protected $storeViewService; + /** + * @var \Magento\Catalog\Model\Category + * @deprecated + */ + protected $category; + /** @var \Magento\CatalogUrlRewrite\Model\Category\CanonicalUrlRewriteGenerator */ protected $canonicalUrlRewriteGenerator; @@ -33,7 +39,7 @@ class CategoryUrlRewriteGenerator protected $childrenUrlRewriteGenerator; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @var bool @@ -63,7 +69,7 @@ class CategoryUrlRewriteGenerator $this->categoryRepository = $categoryRepository; $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance() ->get(UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -96,7 +102,7 @@ class CategoryUrlRewriteGenerator */ protected function generateForGlobalScope(Category $category, $overrideStoreUrls, $rootCategoryId = null) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $categoryId = $category->getId(); foreach ($category->getStoreIds() as $storeId) { if (!$this->isGlobalScope($storeId) @@ -107,7 +113,6 @@ class CategoryUrlRewriteGenerator } } $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); return $result; } @@ -165,7 +170,7 @@ class CategoryUrlRewriteGenerator */ protected function generateForSpecificStoreView(Category $category, $storeId, $rootCategoryId = null) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $urlRewritesSet->merge( $this->canonicalUrlRewriteGenerator->generate($storeId, $category) ); @@ -175,8 +180,6 @@ class CategoryUrlRewriteGenerator $urlRewritesSet->merge( $this->currentUrlRewritesRegenerator->generate($storeId, $category, $rootCategoryId) ); - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } } diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteMap.php index 17ec499f753638122a42221a9841572b401c36f2..70bb44c75b8f4cef9927fdc7216ccfc320140da7 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteMap.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteMap.php @@ -25,7 +25,7 @@ class UrlRewriteMap private $urlFinder; /** @var UrlRewrite */ - private $urlRewritePlaceholder; + private $urlRewritePrototype; /** * @param DataMapPoolInterface $dataMapPool @@ -39,7 +39,7 @@ class UrlRewriteMap ) { $this->dataMapPool = $dataMapPool; $this->urlFinder = $urlFinder; - $this->urlRewritePlaceholder = $urlRewriteFactory->create(); + $this->urlRewritePrototype = $urlRewriteFactory->create(); } /** @@ -98,7 +98,7 @@ class UrlRewriteMap */ private function createUrlRewrite($data) { - $dataObject = clone $this->urlRewritePlaceholder; + $dataObject = clone $this->urlRewritePrototype; $dataObject->setUrlRewriteId($data['url_rewrite_id']); $dataObject->setEntityType($data['entity_type']); $dataObject->setEntityId($data['entity_id']); diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php index 1f85f5a3d2766e130c281b736bc898727c8edf10..ddb91986f249d7edd07576f5a27337172d7967ce 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php @@ -23,6 +23,18 @@ use Magento\UrlRewrite\Model\UrlRewritesSetFactory; */ class CurrentUrlRewritesRegenerator { + /** + * @var Product + * @deprecated + */ + protected $product; + + /** + * @var ObjectRegistry + * @deprecated + */ + protected $productCategories; + /** * @var UrlFinderInterface * @deprecated @@ -36,13 +48,13 @@ class CurrentUrlRewritesRegenerator protected $urlRewriteFactory; /** @var UrlRewrite */ - private $urlRewritePlaceholder; + private $urlRewritePrototype; /** @var UrlRewriteMap */ private $urlRewriteMap; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @param UrlFinderInterface $urlFinder @@ -61,11 +73,11 @@ class CurrentUrlRewritesRegenerator $this->urlFinder = $urlFinder; $this->productUrlPathGenerator = $productUrlPathGenerator; $this->urlRewriteFactory = $urlRewriteFactory; - $this->urlRewritePlaceholder = $urlRewriteFactory->create(); + $this->urlRewritePrototype = $urlRewriteFactory->create(); $this->urlRewriteMap = $urlRewriteMap ?: ObjectManager::getInstance()->get(UrlRewriteMap::class); $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance() ->get(UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -79,7 +91,7 @@ class CurrentUrlRewritesRegenerator */ public function generate($storeId, Product $product, ObjectRegistry $productCategories, $rootCategoryId = null) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $currentUrlRewrites = $this->urlRewriteMap->getByIdentifiers( $product->getEntityId(), $storeId, @@ -99,9 +111,7 @@ class CurrentUrlRewritesRegenerator ); } - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** @@ -116,7 +126,7 @@ class CurrentUrlRewritesRegenerator if ($product->getData('save_rewrites_history')) { $targetPath = $this->productUrlPathGenerator->getUrlPathWithSuffix($product, $storeId, $category); if ($url->getRequestPath() !== $targetPath) { - $generatedUrl = clone $this->urlRewritePlaceholder; + $generatedUrl = clone $this->urlRewritePrototype; $generatedUrl->setEntityType(ProductUrlRewriteGenerator::ENTITY_TYPE) ->setEntityId($product->getEntityId()) ->setRequestPath($url->getRequestPath()) @@ -145,7 +155,7 @@ class CurrentUrlRewritesRegenerator ? $this->productUrlPathGenerator->getUrlPathWithSuffix($product, $storeId, $category) : $url->getTargetPath(); if ($url->getRequestPath() !== $targetPath) { - $generatedUrl = clone $this->urlRewritePlaceholder; + $generatedUrl = clone $this->urlRewritePrototype; $generatedUrl->setEntityType(ProductUrlRewriteGenerator::ENTITY_TYPE) ->setEntityId($product->getEntityId()) ->setRequestPath($url->getRequestPath()) diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php index cc64dc99962d3e8287d38466b4962275d8e11723..a586e8433f9d3e7776a3a186b497447b1b9c9229 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php @@ -59,7 +59,7 @@ class ProductScopeRewriteGenerator private $canonicalUrlRewriteGenerator; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @param StoreViewService $storeViewService @@ -90,7 +90,7 @@ class ProductScopeRewriteGenerator $this->anchorUrlRewriteGenerator = $anchorUrlRewriteGenerator; $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance() ->get(UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -115,7 +115,7 @@ class ProductScopeRewriteGenerator public function generateForGlobalScope($productCategories, Product $product, $rootCategoryId = null) { $productId = $product->getEntityId(); - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; foreach ($product->getStoreIds() as $id) { if (!$this->isGlobalScope($id) && @@ -130,9 +130,7 @@ class ProductScopeRewriteGenerator } } - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** @@ -146,7 +144,7 @@ class ProductScopeRewriteGenerator */ public function generateForSpecificStoreView($storeId, $productCategories, Product $product, $rootCategoryId = null) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $categories = []; foreach ($productCategories as $category) { if ($this->isCategoryProperForGenerating($category, $storeId)) { @@ -173,9 +171,7 @@ class ProductScopeRewriteGenerator $this->anchorUrlRewriteGenerator->generate($storeId, $product, $productCategories) ); - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php index c13dcee6bfa09bcee2c7bb5cc12e6b91a85d0c57..1b1fc472a7ab44309a2bb6a23741744ea6f077e4 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php @@ -31,6 +31,12 @@ class ProductUrlRewriteGenerator */ protected $storeViewService; + /** + * @var \Magento\Catalog\Model\Product + * @deprecated + */ + protected $product; + /** * @deprecated * @var \Magento\CatalogUrlRewrite\Model\Product\CurrentUrlRewritesRegenerator diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ResourceModel/Category/Product.php b/app/code/Magento/CatalogUrlRewrite/Model/ResourceModel/Category/Product.php index 1605ad2643113b05a2c86d51537f0652b2e85b99..c90478af47676c070be49d9acd29954a9ace0c42 100644 --- a/app/code/Magento/CatalogUrlRewrite/Model/ResourceModel/Category/Product.php +++ b/app/code/Magento/CatalogUrlRewrite/Model/ResourceModel/Category/Product.php @@ -70,12 +70,13 @@ class Product extends AbstractDb } /** - * Removes data by entities from url_rewrite table using a select + * Removes multiple entities from url_rewrite table using entities from catalog_url_rewrite_product_category + * Example: $filter = ['category_id' => [1, 2, 3], 'product_id' => [1, 2, 3]] * * @param array $filter * @return int */ - public function removeMultipleByFilter(array $filter) + public function removeMultipleByProductCategory(array $filter) { return $this->getConnection()->delete( $this->getTable(self::TABLE_NAME), diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php index 2d15d4f627359d30e8ae4488ece51987043a2da7..a9307ddd14f30eb972d7f3a85fb3a960f622708e 100644 --- a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php +++ b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php @@ -100,7 +100,7 @@ class AfterImportDataObserver implements ObserverInterface ]; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @param \Magento\Catalog\Model\ProductFactory $catalogProductFactory @@ -136,7 +136,7 @@ class AfterImportDataObserver implements ObserverInterface $this->urlFinder = $urlFinder; $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance() ->get(UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -269,7 +269,7 @@ class AfterImportDataObserver implements ObserverInterface */ protected function generateUrls() { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $urlRewritesSet->merge($this->canonicalUrlRewriteGenerate()); $urlRewritesSet->merge($this->categoriesUrlRewriteGenerate()); $urlRewritesSet->merge($this->currentUrlRewritesRegenerate()); @@ -278,9 +278,7 @@ class AfterImportDataObserver implements ObserverInterface unset($this->products); $this->products = []; - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php index 4c52725e5e964cc9d883e8f5c26a0b8172f6931e..ca5ae2b5beba56031eadc0b4331e1c6f898a645d 100644 --- a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php +++ b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php @@ -41,7 +41,7 @@ class UrlRewriteHandler private $categoryBasedProductRewriteGenerator; /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */ - private $urlRewritesSetPlaceHolder; + private $urlRewritesSetPrototype; /** * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider @@ -66,7 +66,7 @@ class UrlRewriteHandler $this->productCollectionFactory = $productCollectionFactory; $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance() ->get(UrlRewritesSetFactory::class); - $this->urlRewritesSetPlaceHolder = $urlRewritesSetFactory->create(); + $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create(); } /** @@ -77,7 +77,7 @@ class UrlRewriteHandler */ public function generateProductUrlRewrites(Category $category) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; $this->isSkippedProduct = []; $saveRewriteHistory = $category->getData('save_rewrites_history'); $storeId = $category->getStoreId(); @@ -118,9 +118,7 @@ class UrlRewriteHandler ); } - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** @@ -136,7 +134,7 @@ class UrlRewriteHandler $saveRewriteHistory, $rootCategoryId = null ) { - $urlRewritesSet = clone $this->urlRewritesSetPlaceHolder; + $urlRewritesSet = clone $this->urlRewritesSetPrototype; /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection */ $productCollection = $category->getProductCollection() ->addAttributeToSelect('name') @@ -155,9 +153,7 @@ class UrlRewriteHandler ); } - $result = $urlRewritesSet->getData(); - $urlRewritesSet->resetData(); - return $result; + return $urlRewritesSet->getData(); } /** diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/Plugin/StorageTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/Plugin/StorageTest.php index 5c068cc59b7246e7033acfe76205f3b3c705e2d5..f2dad1e1035b5dfcc6112f17d569263d41cf578c 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/Plugin/StorageTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/Plugin/StorageTest.php @@ -102,7 +102,7 @@ class StorageTest extends \PHPUnit_Framework_TestCase { $data = [1, 2, 3]; $this->productResourceModel->expects(static::once()) - ->method('removeMultipleByFilter') + ->method('removeMultipleByProductCategory') ->with($data)->willReturnSelf(); $this->plugin->beforeDeleteByData($this->storage, $data); } diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteMapTest.php index a84fbc302bd9a0e40073fe0e17da91f83d9ce541..c6ea0f0ce444ce92dde13d8ee8c05ba43a08ca11 100644 --- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteMapTest.php +++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteMapTest.php @@ -26,7 +26,7 @@ class UrlRewriteMapTest extends \PHPUnit_Framework_TestCase private $urlRewriteFactoryMock; /** @var UrlRewrite|\PHPUnit_Framework_MockObject_MockObject */ - private $urlRewritePlaceholderMock; + private $urlRewritePrototypeMock; /** @var UrlFinderInterface|\PHPUnit_Framework_MockObject_MockObject */ private $urlFinderMock; @@ -39,11 +39,11 @@ class UrlRewriteMapTest extends \PHPUnit_Framework_TestCase $this->dataMapPoolMock = $this->getMock(DataMapPoolInterface::class); $this->urlFinderMock = $this->getMock(UrlFinderInterface::class); $this->urlRewriteFactoryMock = $this->getMock(UrlRewriteFactory::class, ['create'], [], '', false); - $this->urlRewritePlaceholderMock = new UrlRewrite(); + $this->urlRewritePrototypeMock = new UrlRewrite(); $this->urlRewriteFactoryMock->expects($this->any()) ->method('create') - ->willReturn($this->urlRewritePlaceholderMock); + ->willReturn($this->urlRewritePrototypeMock); $this->model = (new ObjectManager($this))->getObject( UrlRewriteMap::class, diff --git a/app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php b/app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php index 480bfc5ddc354a1b60328a49bfe90b55fd4e6ad1..184eb9486a23507fdd0d3e580229213f2d230dac 100644 --- a/app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php +++ b/app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php @@ -8,7 +8,9 @@ namespace Magento\UrlRewrite\Model; use Magento\UrlRewrite\Service\V1\Data\UrlRewrite; /** - * Removes duplicates for a set/array of Url Rewrites + * This class is to be used as a container for new generated url rewrites by adding new ones using merge method + * Removes duplicates for a set/array of Url Rewrites based on the unique key of the url_rewrites table + * */ class UrlRewritesSet { @@ -23,13 +25,13 @@ class UrlRewritesSet * @param UrlRewrite[] $urlRewritesArray * @return void */ - public function merge($urlRewritesArray) + public function merge(array $urlRewritesArray) { $separator = '_'; foreach ($urlRewritesArray as $urlRewrite) { $key = $urlRewrite->getRequestPath() . $separator . $urlRewrite->getStoreId(); if ($key !== $separator) { - $this->data[$urlRewrite->getRequestPath() . $separator . $urlRewrite->getStoreId()] = $urlRewrite; + $this->data[$key] = $urlRewrite; } else { $this->data[] = $urlRewrite; } @@ -45,15 +47,4 @@ class UrlRewritesSet { return $this->data; } - - /** - * Resets the container to an empty array - * - * @return void - */ - public function resetData() - { - unset($this->data); - $this->data = []; - } } diff --git a/app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php b/app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php index 131f8cbe1a739e602e71a76cbf1852dc9a21be55..ce5b944cb3b5ff3760dd47cb2b64b93632843e57 100644 --- a/app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php +++ b/app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php @@ -69,21 +69,6 @@ class UrlRewritesSetTest extends \PHPUnit_Framework_TestCase $this->assertNotEmpty($this->urlRewritesSet->getData()); } - /** - * Run test resetData method - * - * @return void - */ - public function testResetData() - { - $data = new \ReflectionProperty($this->urlRewritesSet, 'data'); - $data->setAccessible(true); - $data->setValue($this->urlRewritesSet, [new UrlRewrite()]); - $data->setAccessible(false); - $this->urlRewritesSet->resetData(); - $this->assertEmpty($this->urlRewritesSet->getData()); - } - /** * Data provider for testMerge *