/**
  * Retrieve linked changelog
  *
  * @return View\ChangelogInterface
  */
 public function getChangelog()
 {
     if (!$this->changelog->getViewId()) {
         $this->changelog->setViewId($this->getId());
     }
     return $this->changelog;
 }
Example #2
0
 /**
  * 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;
 }
 /**
  * Build trigger statement for INSER, UPDATE, DELETE events
  *
  * @param string $event
  * @param \Magento\Framework\Mview\View\ChangelogInterface $changelog
  * @return string
  */
 protected function buildStatement($event, $changelog)
 {
     switch ($event) {
         case Trigger::EVENT_INSERT:
         case Trigger::EVENT_UPDATE:
             return sprintf("INSERT IGNORE INTO %s (%s) VALUES (NEW.%s);", $this->connection->quoteIdentifier($this->resource->getTableName($changelog->getName())), $this->connection->quoteIdentifier($changelog->getColumnName()), $this->connection->quoteIdentifier($this->getColumnName()));
         case Trigger::EVENT_DELETE:
             return sprintf("INSERT IGNORE INTO %s (%s) VALUES (OLD.%s);", $this->connection->quoteIdentifier($this->resource->getTableName($changelog->getName())), $this->connection->quoteIdentifier($changelog->getColumnName()), $this->connection->quoteIdentifier($this->getColumnName()));
         default:
             return '';
     }
 }