Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CategoryProcessUrlRewriteMovingObserver.php
Go to the documentation of this file.
1 <?php
7 
19 
24 {
29 
33  protected $urlPersist;
34 
38  protected $scopeConfig;
39 
43  protected $urlRewriteHandler;
44 
48  private $urlRewriteBunchReplacer;
49 
53  private $databaseMapPool;
54 
58  private $dataUrlRewriteClassNames;
59 
69  public function __construct(
74  UrlRewriteBunchReplacer $urlRewriteBunchReplacer,
75  DatabaseMapPool $databaseMapPool,
76  $dataUrlRewriteClassNames = [
77  DataCategoryUrlRewriteDatabaseMap::class,
78  DataProductUrlRewriteDatabaseMap::class
79  ]
80  ) {
81  $this->categoryUrlRewriteGenerator = $categoryUrlRewriteGenerator;
82  $this->urlPersist = $urlPersist;
83  $this->scopeConfig = $scopeConfig;
84  $this->urlRewriteHandler = $urlRewriteHandler;
85  $this->urlRewriteBunchReplacer = $urlRewriteBunchReplacer;
86  $this->databaseMapPool = $databaseMapPool;
87  $this->dataUrlRewriteClassNames = $dataUrlRewriteClassNames;
88  }
89 
94  public function execute(\Magento\Framework\Event\Observer $observer)
95  {
97  $category = $observer->getEvent()->getCategory();
98  if ($category->dataHasChangedFor('parent_id')) {
99  $saveRewritesHistory = $this->scopeConfig->isSetFlag(
102  $category->getStoreId()
103  );
104  $category->setData('save_rewrites_history', $saveRewritesHistory);
105  $categoryUrlRewriteResult = $this->categoryUrlRewriteGenerator->generate($category, true);
106  $this->urlRewriteHandler->deleteCategoryRewritesForChildren($category);
107  $this->urlRewriteBunchReplacer->doBunchReplace($categoryUrlRewriteResult);
108  $productUrlRewriteResult = $this->urlRewriteHandler->generateProductUrlRewrites($category);
109  $this->urlRewriteBunchReplacer->doBunchReplace($productUrlRewriteResult);
110  //frees memory for maps that are self-initialized in multiple classes that were called by the generators
111  $this->resetUrlRewritesDataMaps($category);
112  }
113  }
114 
121  private function resetUrlRewritesDataMaps($category)
122  {
123  foreach ($this->dataUrlRewriteClassNames as $className) {
124  $this->databaseMapPool->resetMap($className, $category->getEntityId());
125  }
126  }
127 }
__construct(CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator, UrlPersistInterface $urlPersist, ScopeConfigInterface $scopeConfig, UrlRewriteHandler $urlRewriteHandler, UrlRewriteBunchReplacer $urlRewriteBunchReplacer, DatabaseMapPool $databaseMapPool, $dataUrlRewriteClassNames=[DataCategoryUrlRewriteDatabaseMap::class, DataProductUrlRewriteDatabaseMap::class])
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31