Skip to content

Commit 7cacec1

Browse files
committed
URL rewrite fix while product website update using mass action
1 parent 0a91fff commit 7cacec1

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

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

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
use Magento\Store\Model\Store;
1414
use Magento\UrlRewrite\Model\UrlPersistInterface;
1515
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
16+
use Magento\Store\Api\StoreWebsiteRelationInterface;
17+
use Magento\Framework\App\ObjectManager;
1618

1719
/**
1820
* Observer to assign the products to website
@@ -39,22 +41,31 @@ class ProductToWebsiteChangeObserver implements ObserverInterface
3941
*/
4042
protected $request;
4143

44+
/**
45+
* @var StoreWebsiteRelationInterface
46+
*/
47+
private $storeWebsiteRelation;
48+
4249
/**
4350
* @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
4451
* @param UrlPersistInterface $urlPersist
4552
* @param ProductRepositoryInterface $productRepository
4653
* @param RequestInterface $request
54+
* @param StoreWebsiteRelationInterface $storeWebsiteRelation
4755
*/
4856
public function __construct(
4957
ProductUrlRewriteGenerator $productUrlRewriteGenerator,
5058
UrlPersistInterface $urlPersist,
5159
ProductRepositoryInterface $productRepository,
52-
RequestInterface $request
60+
RequestInterface $request,
61+
StoreWebsiteRelationInterface $storeWebsiteRelation = null
5362
) {
5463
$this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
5564
$this->urlPersist = $urlPersist;
5665
$this->productRepository = $productRepository;
5766
$this->request = $request;
67+
$this->storeWebsiteRelation = $storeWebsiteRelation ?:
68+
ObjectManager::getInstance()->get(StoreWebsiteRelationInterface::class);
5869
}
5970

6071
/**
@@ -73,10 +84,17 @@ public function execute(\Magento\Framework\Event\Observer $observer)
7384
);
7485

7586
if (!empty($this->productUrlRewriteGenerator->generate($product))) {
76-
$this->urlPersist->deleteByData([
77-
UrlRewrite::ENTITY_ID => $product->getId(),
78-
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
79-
]);
87+
if ($this->request->getParam('remove_website_ids')) {
88+
foreach ($this->request->getParam('remove_website_ids') as $webId) {
89+
foreach ($this->storeWebsiteRelation->getStoreByWebsiteId($webId) as $storeId) {
90+
$this->urlPersist->deleteByData([
91+
UrlRewrite::ENTITY_ID => $product->getId(),
92+
UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
93+
UrlRewrite::STORE_ID => $storeId
94+
]);
95+
}
96+
}
97+
}
8098
if ($product->getVisibility() != Visibility::VISIBILITY_NOT_VISIBLE) {
8199
$this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
82100
}

0 commit comments

Comments
 (0)