/** * Retrieve linked changelog * * @return View\ChangelogInterface */ public function getChangelog() { if (!$this->changelog->getViewId()) { $this->changelog->setViewId($this->getId()); } return $this->changelog; }
/** * Synchronize status for view * * @param \Magento\Framework\Mview\View\StateInterface $state * @return \Magento\Framework\Mview\View\StateInterface */ public function afterSetStatus(\Magento\Framework\Mview\View\StateInterface $state) { if (in_array($state->getViewId(), $this->viewIds)) { $viewId = $state->getViewId() == \Magento\Catalog\Model\Indexer\Category\Product::INDEXER_ID ? \Magento\Catalog\Model\Indexer\Product\Category::INDEXER_ID : \Magento\Catalog\Model\Indexer\Category\Product::INDEXER_ID; $relatedViewState = $this->state->loadByView($viewId); // if equals nothing to change if ($relatedViewState->getMode() == \Magento\Framework\Mview\View\StateInterface::MODE_DISABLED || $state->getStatus() == $relatedViewState->getStatus()) { return $state; } // suspend if ($state->getStatus() == \Magento\Framework\Mview\View\StateInterface::STATUS_SUSPENDED) { $relatedViewState->setStatus(\Magento\Framework\Mview\View\StateInterface::STATUS_SUSPENDED); $relatedViewState->setVersionId($this->changelog->setViewId($viewId)->getVersion()); $relatedViewState->save(); } else { if ($relatedViewState->getStatus() == \Magento\Framework\Mview\View\StateInterface::STATUS_SUSPENDED) { $relatedViewState->setStatus(\Magento\Framework\Mview\View\StateInterface::STATUS_IDLE); $relatedViewState->save(); } } } return $state; }