/** * Exports visible products from the current store. * Result can be limited by the `limit` and `offset` GET parameters. */ public function productAction() { if (Mage::helper('nosto_tagging')->isModuleEnabled()) { $pageSize = (int) $this->getRequest()->getParam('limit', 100); $currentOffset = (int) $this->getRequest()->getParam('offset', 0); $currentPage = $currentOffset / $pageSize + 1; $products = Mage::getModel('catalog/product')->getCollection()->addStoreFilter(Mage::app()->getStore()->getId())->addAttributeToSelect('*')->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)->setPageSize($pageSize)->setCurPage($currentPage); if ($currentPage > $products->getLastPageNumber()) { $products = array(); } $collection = new NostoExportProductCollection(); foreach ($products as $product) { if ($product->getTypeId() === Mage_Catalog_Model_Product_Type::TYPE_BUNDLE && (int) $product->getPriceType() === Mage_Bundle_Model_Product_Price::PRICE_TYPE_FIXED) { continue; } $meta = new Nosto_Tagging_Model_Meta_Product(); $meta->loadData($product); $validator = new NostoValidator($meta); if ($validator->validate()) { $collection[] = $meta; } } $this->export($collection); } }
/** * Event handler for the "catalog_product_delete_after" event. * Sends a product delete API call to Nosto. * * @param Varien_Event_Observer $observer the event observer. * * @return Nosto_Tagging_Model_Observer */ public function sendProductDelete(Varien_Event_Observer $observer) { if (Mage::helper('nosto_tagging')->isModuleEnabled()) { /** @var Mage_Catalog_Model_Product $product */ $product = $observer->getEvent()->getProduct(); // Products are always deleted from all store views, regardless of // the store view scope switcher on the product edit page. /** @var Mage_Core_Model_Store $store */ foreach (Mage::app()->getStores() as $store) { /** @var NostoAccount $account */ $account = Mage::helper('nosto_tagging/account')->find($store); if ($account === null || !$account->isConnectedToNosto()) { continue; } $model = new Nosto_Tagging_Model_Meta_Product(); $model->setProductId($product->getId()); try { $op = new NostoOperationProduct($account); $op->addProduct($model); $op->delete(); } catch (NostoException $e) { Mage::log("\n" . $e, Zend_Log::ERR, 'nostotagging.log'); } } } return $this; }