public function processEvent(Mage_Index_Model_Event $event) { if ((int) Mage::getStoreConfig('solr/indexer/cms_update')) { $solr = Mage::helper('solr')->getSolr(); $entity = $event->getEntity(); $type = $event->getType(); switch ($entity) { case DMC_Solr_Model_Cms_Page::ENTITY: if ($type == Mage_Index_Model_Event::TYPE_SAVE) { $object = $event->getDataObject(); $document = $this->getSolrDocument(); if ($document->setObject($object)) { $solr->addDocument($document); $solr->addDocuments(); $solr->commit(); } } elseif ($type == Mage_Index_Model_Event::TYPE_DELETE) { $object = $event->getDataObject(); $document = $this->getSolrDocument(); if ($document->setObject($object)) { $solr->deleteDocument($document); $solr->commit(); } } break; } } }
/** * Process event based on event state data * * @param Mage_Index_Model_Event $event Indexing event. * * @return void */ protected function _processEvent(Mage_Index_Model_Event $event) { $searchTerm = $event->getDataObject(); if ($event->getType() == Mage_Index_Model_Event::TYPE_SAVE) { $this->reindex($searchTerm); } }
public function processEvent(Mage_Index_Model_Event $event) { if ((int) Mage::getStoreConfig('solr/indexer/product_update')) { $solr = Mage::helper('solr')->getSolr(); $entity = $event->getEntity(); $type = $event->getType(); switch ($entity) { case Mage_Catalog_Model_Product::ENTITY: if ($type == Mage_Index_Model_Event::TYPE_MASS_ACTION) { } elseif ($type == Mage_Index_Model_Event::TYPE_SAVE) { $object = $event->getDataObject(); $document = $this->getSolrDocument(); if ($document->setObject($object)) { $solr->addDocument($document); $solr->addDocuments(); $solr->commit(); } } elseif ($type == Mage_Index_Model_Event::TYPE_DELETE) { } break; case Mage_Catalog_Model_Resource_Eav_Attribute::ENTITY: $this->_skipReindex($event); break; } } }
/** * Modified to pull in all sibling associated products' tier prices and * to reindex child tier prices when a parent is saved. * * Process product save. * Method is responsible for index support * when product was saved and changed attribute(s) has an effect on price. * * @param Mage_Index_Model_Event $event * @return Mage_Catalog_Model_Resource_Product_Indexer_Price */ public function catalogProductSave(Mage_Index_Model_Event $event) { $productId = $event->getEntityPk(); $data = $event->getNewData(); /** * Check if price attribute values were updated */ if (!isset($data['reindex_price'])) { return $this; } $this->clearTemporaryIndexTable(); $this->_prepareWebsiteDateTable(); $indexer = $this->_getIndexer($data['product_type_id']); $processIds = array($productId); if ($indexer->getIsComposite()) { if ($this->getProductTypeById($productId) == 'configurable') { $children = $this->getChildIdsByParent($productId); $processIds = array_merge($processIds, array_keys($children)); //Ignore tier and group price data for actual configurable product $tierPriceIds = array_keys($children); } else { $tierPriceIds = $productId; } $this->_copyRelationIndexData($productId); $this->_prepareTierPriceIndex($tierPriceIds); $this->_prepareGroupPriceIndex($tierPriceIds); $indexer->reindexEntity($productId); } else { $parentIds = $this->getProductParentsByChild($productId); if ($parentIds) { $processIds = array_merge($processIds, array_keys($parentIds)); $siblingIds = array(); foreach (array_keys($parentIds) as $parentId) { $childIds = $this->getChildIdsByParent($parentId); $siblingIds = array_merge($siblingIds, array_keys($childIds)); } if (count($siblingIds) > 0) { $processIds = array_unique(array_merge($processIds, $siblingIds)); } $this->_copyRelationIndexData(array_keys($parentIds), $productId); $this->_prepareTierPriceIndex($processIds); $this->_prepareGroupPriceIndex($processIds); $indexer->reindexEntity($productId); $parentByType = array(); foreach ($parentIds as $parentId => $parentType) { $parentByType[$parentType][$parentId] = $parentId; } foreach ($parentByType as $parentType => $entityIds) { $this->_getIndexer($parentType)->reindexEntity($entityIds); } } else { $this->_prepareTierPriceIndex($productId); $this->_prepareGroupPriceIndex($productId); $indexer->reindexEntity($productId); } } $this->_copyIndexDataToMainTable($processIds); return $this; }
/** * Event handler for CMS page save events * * @param Mage_Index_Model_Event $event */ public function CmsPageSave(Mage_Index_Model_Event $event) { $storeIds = $event->getDataObject()->getStores(); $pageId = $event->getData('solr_update_page_id'); foreach ($storeIds as $storeId) { $this->rebuildStoreIndex($storeId, $pageId); } }
/** * Process event based on event state data * * @param Mage_Index_Model_Event $event Indexing event. * * @return void */ protected function _processEvent(Mage_Index_Model_Event $event) { $category = $event->getDataObject(); if ($event->getType() == Mage_Index_Model_Event::TYPE_SAVE) { if (Mage::helper('smile_elasticsearch')->isActiveEngine()) { $this->reindex($category); } } }
/** * This method is called by the core indexer process * in case of saving (insert/update) a product */ protected function _processEvent(Mage_Index_Model_Event $event) { $solr = Mage::helper('solr')->getSolr(); $object = $event->getDataObject(); // if the product is not active anymore, we will remove it from solr index if ($object->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_ENABLED) { $solr->deleteByQuery("id:{$object->getId()}"); Mage::helper('solr/log')->addDebugMessage('The object #' . $object->getId() . ' is not active and was therefore deleted.'); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('solr')->__('The Product has been removed from Solr.')); return; } // $object contains the full product object if ($event->getEntity() == 'catalog_product' && $event->getType() == 'save' && $event->getDataObject()) { if ((int) Mage::getStoreConfig('solr/indexer/product_update')) { $storeId = $object->getStoreId(); // to-do // index just those store views, we need /* $adapter = new DMC_Solr_Model_SolrServer_Adapter_Product(); $document = $adapter->getSolrDocument(); if($document->setObject($object)) { $document->setStoreId($storeId); // add doducment to adapter object $solr->addDocument($document); #echo '<pre>'; #print_r($document);exit; } // send documents to solr $solr->addDocuments(); */ if (!$storeId) { $storeIds = Mage::helper('solr')->getStoresForReindex(); } else { $storeIds = array($storeId); } $adapter = new DMC_Solr_Model_SolrServer_Adapter_Product(); $productId = $object->getId(); foreach ($storeIds as $storeId) { $object = Mage::getModel('catalog/product')->setStoreId($storeId)->load($productId); $document = $adapter->getSolrDocument(); if ($document->setObject($object)) { $document->setStoreId($storeId); $solr->addDocument($document); } } $solr->addDocuments(); // commit data to solr $solr->commit(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('solr')->__('The Product has been updated at Solr.')); } } }
protected function registerCatalogProductEvent(Mage_Index_Model_Event $event) { switch ($event->getType()) { case Mage_Index_Model_Event::TYPE_SAVE: $product = $event->getDataObject(); /** @var Mage_Catalog_Model_Product $product */ $event->addNewData('solr_update_product_id', $product->getId()); break; case Mage_Index_Model_Event::TYPE_MASS_ACTION: break; } }
protected function _registerProductEvent(Mage_Index_Model_Event $event) { $product = $event->getDataObject(); $dataChange2 = false; if ($product->dataHasChangedFor('status') && $product->getData('status') == "1" || $product->dataHasChangedFor('visibility') && $product->getData('visibility') != "1") { $dataChange2 = true; } $dataChange = $product->dataHasChangedFor('url_key') || $product->getIsChangedCategories() || $product->getIsChangedWebsites() || $dataChange2; if (!$product->getExcludeUrlRewrite() && $dataChange) { $event->addNewData('rewrite_product_ids', array($product->getId())); } }
protected function _registerEvent(Mage_Index_Model_Event $event) { $event->addNewData(self::EVENT_MATCH_RESULT_KEY, true); $entity = $event->getEntity(); switch ($entity) { case Mage_Core_Model_Store::ENTITY: case Mage_Core_Model_Store_Group::ENTITY: $process = $event->getProcess(); $process->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX); break; } return $this; }
protected function _processEvent(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (!empty($data['udreindex_product_ids'])) { $this->_getResource()->reindexProducts($data['udreindex_product_ids']); } if (!empty($data['udreindex_vendor_ids'])) { $this->_getResource()->reindexVendors($data['udreindex_vendor_ids']); } if (empty($data['catalog_product_price_skip_call_event_handler'])) { $this->callEventHandler($event); } }
protected function _processEvent(Mage_Index_Model_Event $event) { Varien_Profiler::start(__METHOD__); $data = $event->getNewData(); if (isset($data[self::EVENT_PRODUCT_IDS_KEY]) && is_array($data[self::EVENT_PRODUCT_IDS_KEY])) { $this->_startUpdate(); foreach ($data[self::EVENT_PRODUCT_IDS_KEY] as $productId) { $this->_updateProduct($productId); } $this->_finishUpdate(); } Varien_Profiler::stop(__METHOD__); }
/** * match whether the reindexing should be fired * @param Mage_Index_Model_Event $event * @return bool */ public function matchEvent(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (isset($data[self::EVENT_MATCH_RESULT_KEY])) { return $data[self::EVENT_MATCH_RESULT_KEY]; } $entity = $event->getEntity(); $result = true; if ($entity != Mage_Catalog_Model_Product::ENTITY) { return; } $event->addNewData(self::EVENT_MATCH_RESULT_KEY, $result); return $result; }
/** * @param Mana_Seo_Model_UrlIndexer $indexer * @param Mage_Index_Model_Event $event */ public function register($indexer, $event) { $db = $this->_getReadAdapter(); if ($event->getEntity() == Mage_Catalog_Model_Resource_Eav_Attribute::ENTITY) { $event->addNewData('attribute_id', $event->getData('data_object')->getId()); } elseif ($event->getEntity() == 'mana_filters/filter2') { if ($attributeId = $this->getFilterResource()->getAttributeId($event->getData('data_object'))) { $event->addNewData('attribute_id', $attributeId); } } elseif ($event->getEntity() == 'mana_filters/filter2_store') { if ($attributeId = $this->getFilterStoreResource()->getAttributeId($event->getData('data_object'))) { $event->addNewData('attribute_id', $attributeId); } } }
protected function _processEvent(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (!empty($data['amconf_update_product_id'])) { $this->doSomethingOnUpdateEvent($data['amconf_update_product_id']); } else { if (!empty($data['amconf_delete_product_id'])) { $this->doSomethingOnDeleteEvent($data['amconf_delete_product_id']); } else { if (!empty($data['amconf_mass_action_product_ids'])) { $this->doSomethingOnMassActionEvent($data['amconf_mass_action_product_ids']); } } } }
public function testMatchEventCaching() { $this->testMatchEventForChangedStoreGroup(); $storeGroup = $this->_event->getDataObject(); $storeGroup->expects($this->any())->method('dataHasChangedFor')->will($this->returnValue(false)); $this->assertTrue($this->_model->matchEvent($this->_event)); }
/** * Process event * * @param Mage_Index_Model_Event $event */ protected function _processEvent(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (!empty($data['catalog_url_reindex_all'])) { $this->reindexAll(); return $this; } // Force rewrites history saving $dataObject = $event->getDataObject(); if ($dataObject instanceof Varien_Object && $dataObject->hasData('save_rewrites_history')) { $this->_getResource()->isSaveHistory($dataObject->getData('save_rewrites_history')); } if (isset($data['rewrite_category_ids']) || isset($data['rewrite_product_ids'])) { $this->callEventHandler($event); } $this->_getResource()->resetSaveHistory(); return $this; }
protected function _registerCatalogProductMassActionEvent(Mage_Index_Model_Event $event) { $actionObject = $event->getDataObject(); $attributes = $this->_getDependentAttributes(); $reindexPrice = false; $attrData = $actionObject->getAttributesData(); if (is_array($attrData)) { foreach ($attributes as $code) { if (array_key_exists($code, $attrData)) { $reindexPrice = true; break; } } } if ($reindexPrice) { $event->addNewData('reindex_price_product_ids', $actionObject->getProductIds()); } return $this; }
protected function _processEvent(Mage_Index_Model_Event $event) { if (!$this->config->getApplicationID() || !$this->config->getAPIKey() || !$this->config->getSearchOnlyAPIKey()) { if (self::$credential_error === false) { /** @var Mage_Adminhtml_Model_Session $session */ $session = Mage::getSingleton('adminhtml/session'); $session->addError('Algolia indexing failed: You need to configure your Algolia credentials in System > Configuration > Algolia Search.'); self::$credential_error = true; } return; } $data = $event->getNewData(); /* * Reindex all products and all categories and update index settings */ if (!empty($data['algoliasearch_reindex_all'])) { $process = $event->getProcess(); $process->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX); } else { /* * Clear indexer for the deleted category including all children categories and update index for the related products. */ if (!empty($data['catalogsearch_delete_category_id'])) { $categoryIds = $data['catalogsearch_delete_category_id']; $this->engine->removeCategories(null, $categoryIds); /* * Change indexer status as need to reindex related products to update the list of categories. * It's low priority so no need to automatically reindex all related products after deleting each category. * Do not reindex all if affected products are given or product count is not indexed. */ if (!isset($data['catalogsearch_update_product_id'])) { $process = $event->getProcess(); $process->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX); } } } /* * Reindex categories. * Category products are tracked separately. The specified categories are active. See _registerCatalogCategoryEvent(). */ if (!empty($data['catalogsearch_update_category_id'])) { $this->reindexSpecificCategories($data['catalogsearch_update_category_id']); } /* * If we have added any new products to a category then we need to * update these products in Algolia indices. */ if (!empty($data['catalogsearch_update_product_id'])) { $this->reindexSpecificProducts($data['catalogsearch_update_product_id']); } }
/** * @test */ public function testCatalogProductSaveAfterMassAction() { $this->_fpc->save('product1', 'product1_cache_id', array(sha1('product_1'))); $this->_fpc->save('product2', 'product2_cache_id', array(sha1('product_2'))); $this->_fpc->save('product3', 'product3_cache_id', array(sha1('product_3'))); $event = new Mage_Index_Model_Event(); $productAction = new Mage_Catalog_Model_Product_Action(); $productAction->setProductIds(array(2, 3)); $event->setType('mass_action'); $event->setEntity('catalog_product'); $event->setDataObject($productAction); Mage::dispatchEvent('model_save_after', array('object' => $event)); $this->assertEquals('product1', $this->_fpc->load('product1_cache_id')); $this->assertFalse($this->_fpc->load('product2_cache_id')); $this->assertFalse($this->_fpc->load('product3_cache_id')); }
/** * @param Mana_Seo_Model_UrlIndexer $indexer * @param Mage_Index_Model_Event $event */ public function register($indexer, $event) { $db = $this->_getReadAdapter(); if ($event->getEntity() == 'mana_filters/filter2') { if ($event->getData('data_object')->getType() == 'category') { $event->addNewData('process_category_filter', true); } } elseif ($event->getEntity() == 'mana_filters/filter2_store') { $attributeType = $db->fetchOne($db->select()->from(array('f' => $this->getTable('mana_filters/filter2')), 'type')->where('f.id = ?', $event->getData('data_object')->getGlobalId())); if ($attributeType == 'category') { $event->addNewData('process_category_filter', true); } } }
protected function _processEvent(Mage_Index_Model_Event $event) { if (!$this->config->getApplicationID() || !$this->config->getAPIKey() || !$this->config->getSearchOnlyAPIKey()) { if (self::$credential_error === false) { Mage::getSingleton('adminhtml/session')->addError('Algolia indexing failed: You need to configure your Algolia credentials in System > Configuration > Algolia Search.'); self::$credential_error = true; } return; } $data = $event->getNewData(); /* * Reindex all products and all categories and update index settings */ if (!empty($data['algoliasearch_reindex_all'])) { $process = $event->getProcess(); $process->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX); } else { if (!empty($data['catalogsearch_delete_category_id'])) { $categoryIds = $data['catalogsearch_delete_category_id']; $this->engine->removeCategories(null, $categoryIds); /* * Change indexer status as need to reindex related products to update the list of categories. * It's low priority so no need to automatically reindex all related products after deleting each category. * Do not reindex all if affected products are given or product count is not indexed. */ if (!isset($data['catalogsearch_update_product_id'])) { $process = $event->getProcess(); $process->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX); } } } /* * Reindex categories. * Category products are tracked separately. The specified categories are active. See _registerCatalogCategoryEvent(). */ if (!empty($data['catalogsearch_update_category_id'])) { $updateCategoryIds = $data['catalogsearch_update_category_id']; $updateCategoryIds = is_array($updateCategoryIds) ? $updateCategoryIds : array($updateCategoryIds); foreach ($updateCategoryIds as $id) { $categories = Mage::getModel('catalog/category')->getCategories($id); foreach ($categories as $category) { $updateCategoryIds[] = $category->getId(); } } $this->engine->rebuildCategoryIndex(null, $updateCategoryIds); } }
/** * Register data required by product type process in event object * * @param Mage_Index_Model_Event $event */ public function registerEvent(Mage_Index_Model_Event $event) { $attributes = array('allow_open_amount', 'open_amount_min', 'open_amount_max'); $entity = $event->getEntity(); if ($entity == Mage_Catalog_Model_Product::ENTITY) { switch ($event->getType()) { case Mage_Index_Model_Event::TYPE_SAVE: /* @var $product Mage_Catalog_Model_Product */ $product = $event->getDataObject(); $reindexPrice = $product->getAmountsHasChanged(); foreach ($attributes as $code) { if ($product->dataHasChangedFor($code)) { $reindexPrice = true; break; } } if ($reindexPrice) { $event->addNewData('product_type_id', $product->getTypeId()); $event->addNewData('reindex_price', 1); } break; case Mage_Index_Model_Event::TYPE_MASS_ACTION: /* @var $actionObject Varien_Object */ $actionObject = $event->getDataObject(); $reindexPrice = false; // check if attributes changed $attrData = $actionObject->getAttributesData(); if (is_array($attrData)) { foreach ($attributes as $code) { if (array_key_exists($code, $attrData)) { $reindexPrice = true; break; } } } if ($reindexPrice) { $event->addNewData('reindex_price_product_ids', $actionObject->getProductIds()); } break; } } }
public function registerFulltextIndexerEvent(Mage_CatalogSearch_Model_Indexer_Fulltext $indexer, Mage_Index_Model_Event $event) { switch ($event->getType()) { case Mage_Index_Model_Event::TYPE_SAVE: $page = $event->getDataObject(); $event->addNewData('catalogsearch_update_cms_page_id', $page->getId()); break; case Mage_Index_Model_Event::TYPE_DELETE: $page = $event->getDataObject(); $event->addNewData('catalogsearch_delete_cms_page_id', $page->getId()); break; } return $indexer; }
/** * Process product mass update action * * @param Mage_Index_Model_Event $event * @return Mage_CatalogInventory_Model_Resource_Indexer_Stock */ public function catalogProductMassAction(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (empty($data['reindex_stock_product_ids'])) { return $this; } $adapter = $this->_getWriteAdapter(); $processIds = $data['reindex_stock_product_ids']; $select = $adapter->select()->from($this->getTable('catalog/product'), 'COUNT(*)'); $pCount = $adapter->fetchOne($select); // if affected more 30% of all products - run reindex all products if ($pCount * 0.3 < count($processIds)) { return $this->reindexAll(); } // calculate relations $select = $adapter->select()->from($this->getTable('catalog/product_relation'), 'COUNT(DISTINCT parent_id)')->where('child_id IN(?)', $processIds); $aCount = $adapter->fetchOne($select); $select = $adapter->select()->from($this->getTable('catalog/product_relation'), 'COUNT(DISTINCT child_id)')->where('parent_id IN(?)', $processIds); $bCount = $adapter->fetchOne($select); // if affected with relations more 30% of all products - run reindex all products if ($pCount * 0.3 < count($processIds) + $aCount + $bCount) { return $this->reindexAll(); } // retrieve affected parent relation products $parentIds = $this->getRelationsByChild($processIds); if ($parentIds) { $processIds = array_merge($processIds, $parentIds); } // retrieve products types $select = $adapter->select()->from($this->getTable('catalog/product'), array('entity_id', 'type_id'))->where('entity_id IN(?)', $processIds); $query = $select->query(Zend_Db::FETCH_ASSOC); $byType = array(); while ($row = $query->fetch()) { $byType[$row['type_id']][] = $row['entity_id']; } $adapter->beginTransaction(); try { $indexers = $this->_getTypeIndexers(); foreach ($indexers as $indexer) { if (!empty($byType[$indexer->getTypeId()])) { $indexer->reindexEntity($byType[$indexer->getTypeId()]); } } } catch (Exception $e) { $adapter->rollback(); throw $e; } $adapter->commit(); return $this; }
/** * Process product mass update action * * @param Mage_Index_Model_Event $event * @return Mage_Catalog_Model_Resource_Product_Indexer_Price */ public function catalogProductMassAction(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (empty($data['reindex_price_product_ids'])) { return $this; } $processIds = $data['reindex_price_product_ids']; $write = $this->_getWriteAdapter(); $select = $write->select()->from($this->getTable('catalog/product'), 'COUNT(*)'); $pCount = $write->fetchOne($select); // if affected more 30% of all products - run reindex all products if ($pCount * 0.3 < count($processIds)) { return $this->reindexAll(); } // calculate relations $select = $write->select()->from($this->getTable('catalog/product_relation'), 'COUNT(DISTINCT parent_id)')->where('child_id IN(?)', $processIds); $aCount = $write->fetchOne($select); $select = $write->select()->from($this->getTable('catalog/product_relation'), 'COUNT(DISTINCT child_id)')->where('parent_id IN(?)', $processIds); $bCount = $write->fetchOne($select); // if affected with relations more 30% of all products - run reindex all products if ($pCount * 0.3 < count($processIds) + $aCount + $bCount) { return $this->reindexAll(); } $this->reindexProductIds($processIds); return $this; }
/** * Process event * * @param Mage_Index_Model_Event $event */ protected function _processEvent(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (!empty($data['catalog_url_reindex_all'])) { $this->reindexAll(); } /* @var $urlModel Mage_Catalog_Model_Url */ $urlModel = Mage::getSingleton('catalog/url'); // Force rewrites history saving $dataObject = $event->getDataObject(); if ($dataObject instanceof Varien_Object && $dataObject->hasData('save_rewrites_history')) { $urlModel->setShouldSaveRewritesHistory($dataObject->getData('save_rewrites_history')); } if (isset($data['rewrite_product_ids'])) { $urlModel->clearStoreInvalidRewrites(); // Maybe some products were moved or removed from website foreach ($data['rewrite_product_ids'] as $productId) { $urlModel->refreshProductRewrite($productId); } } if (isset($data['rewrite_category_ids'])) { $urlModel->clearStoreInvalidRewrites(); // Maybe some categories were moved foreach ($data['rewrite_category_ids'] as $categoryId) { $urlModel->refreshCategoryRewrite($categoryId); } } }
/** * 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; }
/** * 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 = $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; }
/** * Process product massaction * * @param Mage_Index_Model_Event $event * @return Mage_Tag_Model_Resource_Indexer_Summary */ public function catalogProductMassAction(Mage_Index_Model_Event $event) { $data = $event->getNewData(); if (empty($data['tag_reindex_tag_ids'])) { return $this; } return $this->aggregate($data['tag_reindex_tag_ids']); }