/** * Save category before * * @param Varien_Event_Observer $observer * @return Mage_CatalogIndex_Model_Observer */ public function catalogCategorySaveBefore(Varien_Event_Observer $observer) { $category = $observer->getEvent()->getCategory(); if ($category && $category->getId()) { $products = $category->getProductCollection(); Mage::getModel('searchanise/queue')->addActionProducts($products); // save current products ids // need for find new products in catalogCategorySaveAfter if (!empty($products)) { self::$productIdsInCategory = array(); foreach ($products as $product) { if ($product->getId()) { self::$productIdsInCategory[] = $product->getId(); } } } } return $this; }
/** * Save category after * * @param Varien_Event_Observer $observer * @return Mage_CatalogIndex_Model_Observer */ public function catalogCategorySaveAfter(Varien_Event_Observer $observer) { $category = $observer->getEvent()->getCategory(); if ($category && $category->getId()) { // For category if (!self::$isExistsCategory) { // if category was created now Mage::getModel('searchanise/queue')->addActionCategory($category); } // For products from category $products = $category->getProductCollection(); if (!empty($products)) { if (empty(self::$productIdsInCategory)) { Mage::getModel('searchanise/queue')->addActionProducts($products); } else { $productIds = array(); foreach ($products as $product) { $id = $product->getId(); if (!empty($id) && !in_array($id, self::$productIdsInCategory)) { $productIds[] = $id; } } Mage::getModel('searchanise/queue')->addActionProductIds($productIds); } } } self::$isExistsCategory = false; self::$productIdsInCategory = array(); return $this; }