matchEvent($event)) { $this->_registerEvent($event); } return $this; } /** * Process event * * @param Mage_Index_Model_Event $event * @return Mage_Index_Model_Indexer_Abstract */ public function processEvent(Mage_Index_Model_Event $event) { if ($this->matchEvent($event)) { $this->_processEvent($event); } return $this; } /** * Check if event can be matched by process * * @param Mage_Index_Model_Event $event * @return bool */ public function matchEvent(Mage_Index_Model_Event $event) { $entity = $event->getEntity(); $type = $event->getType(); return $this->matchEntityAndType($entity, $type); } /** * Check if indexer matched specific entity and action type * * @param string $entity * @param string $type * @return bool */ public function matchEntityAndType($entity, $type) { if (isset($this->_matchedEntities[$entity])) { if (in_array($type, $this->_matchedEntities[$entity])) { return true; } } return false; } /** * Rebuild all index data */ public function reindexAll() { $this->_getResource()->reindexAll(); } /** * Try dynamicly detect and call event hanler from resource model. * Handler name will be generated from event entity and type code * * @param Mage_Index_Model_Event $event * @return Mage_Index_Model_Indexer_Abstract */ public function callEventHandler(Mage_Index_Model_Event $event) { if ($event->getEntity()) { $method = $this->_camelize($event->getEntity().'_'.$event->getType()); } else { $method = $this->_camelize($event->getType()); } $resourceModel = $this->_getResource(); if (method_exists($resourceModel, $method)) { $resourceModel->$method($event); } return $this; } /** * Set whether table changes are allowed * * @deprecated after 1.6.1.0 * @param bool $value * @return Mage_Index_Model_Indexer_Abstract */ public function setAllowTableChanges($value = true) { $this->_allowTableChanges = $value; return $this; } /** * Disable resource table keys * * @return Mage_Index_Model_Indexer_Abstract */ public function disableKeys() { if (empty($this->_resourceName)) { return $this; } $resourceModel = $this->getResource(); if ($resourceModel instanceof Mage_Index_Model_Resource_Abstract) { $resourceModel->useDisableKeys(true); $resourceModel->disableTableKeys(); } return $this; } /** * Enable resource table keys * * @return Mage_Index_Model_Indexer_Abstract */ public function enableKeys() { if (empty($this->_resourceName)) { return $this; } $resourceModel = $this->getResource(); if ($resourceModel instanceof Mage_Index_Model_Resource_Abstract) { $resourceModel->useDisableKeys(true); $resourceModel->enableTableKeys(); } return $this; } /** * Whether the indexer should be displayed on process/list page * * @return bool */ public function isVisible() { return $this->_isVisible; } }