/** * Register data required by process in event object * * @param \Magento\Index\Model\Event $event * @return $this */ protected function _registerEvent(\Magento\Index\Model\Event $event) { $event->addNewData(self::EVENT_MATCH_RESULT_KEY, true); $entity = $event->getEntity(); switch ($entity) { case \Magento\Catalog\Model\Product::ENTITY: $this->_registerProductEvent($event); break; case \Magento\Catalog\Model\Category::ENTITY: $this->_registerCategoryEvent($event); break; case \Magento\Store\Model\Store::ENTITY: case \Magento\Store\Model\Store::ENTITY: case \Magento\Framework\App\Config\ValueInterface::ENTITY: $process = $event->getProcess(); $process->changeStatus(\Magento\Index\Model\Process::STATUS_REQUIRE_REINDEX); break; } return $this; }
/** * Try dynamicly detect and call event handler from resource model. * Handler name will be generated from event entity and type code * * @param Event $event * @return $this */ public function callEventHandler(Event $event) { if ($event->getEntity()) { $method = $event->getEntity() . '_' . $event->getType(); } else { $method = $event->getType(); } $method = str_replace(' ', '', ucwords(str_replace('_', ' ', $method))); $resourceModel = $this->_getResource(); if (method_exists($resourceModel, $method)) { $resourceModel->{$method}($event); } return $this; }
/** * Register data required by process in event object * * @param Event $event * @return void */ protected function _registerEvent(Event $event) { $event->addNewData(self::EVENT_MATCH_RESULT_KEY, true); switch ($event->getEntity()) { case Product::ENTITY: $this->_registerCatalogProductEvent($event); break; case ValueInterface::ENTITY: case Store::ENTITY: case Attribute::ENTITY: case Group::ENTITY: $event->addNewData('catalogsearch_fulltext_skip_call_event_handler', true); $process = $event->getProcess(); $process->changeStatus(Process::STATUS_REQUIRE_REINDEX); break; case Category::ENTITY: $this->_registerCatalogCategoryEvent($event); break; default: break; } }