16 use Magento\Store\Model\ResourceModel\Group\CollectionFactory;
28 private $categoryUrlRewriteGenerator;
33 private $urlRewriteBunchReplacer;
38 private $urlRewriteHandler;
43 private $databaseMapPool;
48 private $dataUrlRewriteClassNames;
53 private $storeGroupFactory;
68 $dataUrlRewriteClassNames = [
69 DataCategoryUrlRewriteDatabaseMap::class,
70 DataProductUrlRewriteDatabaseMap::class
72 CollectionFactory $storeGroupFactory =
null 74 $this->categoryUrlRewriteGenerator = $categoryUrlRewriteGenerator;
75 $this->urlRewriteHandler = $urlRewriteHandler;
76 $this->urlRewriteBunchReplacer = $urlRewriteBunchReplacer;
77 $this->databaseMapPool = $databaseMapPool;
78 $this->dataUrlRewriteClassNames = $dataUrlRewriteClassNames;
79 $this->storeGroupFactory = $storeGroupFactory
102 $mapsGenerated =
false;
103 if (
$category->dataHasChangedFor(
'url_key')
104 ||
$category->dataHasChangedFor(
'is_anchor')
105 || !empty(
$category->getChangedProductIds())
107 if (
$category->dataHasChangedFor(
'url_key')) {
108 $categoryUrlRewriteResult = $this->categoryUrlRewriteGenerator->generate(
$category);
109 $this->urlRewriteBunchReplacer->doBunchReplace($categoryUrlRewriteResult);
111 $productUrlRewriteResult = $this->urlRewriteHandler->generateProductUrlRewrites(
$category);
112 $this->urlRewriteBunchReplacer->doBunchReplace($productUrlRewriteResult);
113 $mapsGenerated =
true;
117 if ($mapsGenerated) {
118 $this->resetUrlRewritesDataMaps(
$category);
132 private function setCategoryStoreId(
$category)
135 $storeGroupCollection = $this->storeGroupFactory->create();
151 private function resetUrlRewritesDataMaps(
$category)
153 foreach ($this->dataUrlRewriteClassNames as
$className) {
__construct(CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator, UrlRewriteHandler $urlRewriteHandler, UrlRewriteBunchReplacer $urlRewriteBunchReplacer, DatabaseMapPool $databaseMapPool, $dataUrlRewriteClassNames=[DataCategoryUrlRewriteDatabaseMap::class, DataProductUrlRewriteDatabaseMap::class], CollectionFactory $storeGroupFactory=null)
execute(Observer $observer)