Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage_Adminhtml_Rss_CatalogController
  • Mage_Adminhtml_Rss_OrderController
  • Mage_Rss_Block_Abstract
  • Mage_Rss_Block_Catalog_Abstract
  • Mage_Rss_Block_Catalog_Category
  • Mage_Rss_Block_Catalog_New
  • Mage_Rss_Block_Catalog_NotifyStock
  • Mage_Rss_Block_Catalog_Review
  • Mage_Rss_Block_Catalog_Salesrule
  • Mage_Rss_Block_Catalog_Special
  • Mage_Rss_Block_Catalog_Tag
  • Mage_Rss_Block_List
  • Mage_Rss_Block_Order_Details
  • Mage_Rss_Block_Order_New
  • Mage_Rss_Block_Order_Status
  • Mage_Rss_Block_Wishlist
  • Mage_Rss_CatalogController
  • Mage_Rss_Helper_Catalog
  • Mage_Rss_Helper_Data
  • Mage_Rss_Helper_Order
  • Mage_Rss_IndexController
  • Mage_Rss_Model_Mysql4_Order
  • Mage_Rss_Model_Observer
  • Mage_Rss_Model_Resource_Order
  • Mage_Rss_Model_Rss
  • Mage_Rss_Model_Session
  • Mage_Rss_Model_System_Config_Backend_Links
  • Mage_Rss_OrderController
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Magento
  4:  *
  5:  * NOTICE OF LICENSE
  6:  *
  7:  * This source file is subject to the Open Software License (OSL 3.0)
  8:  * that is bundled with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://opensource.org/licenses/osl-3.0.php
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@magentocommerce.com so we can send you a copy immediately.
 14:  *
 15:  * DISCLAIMER
 16:  *
 17:  * Do not edit or add to this file if you wish to upgrade Magento to newer
 18:  * versions in the future. If you wish to customize Magento for your
 19:  * needs please refer to http://www.magentocommerce.com for more information.
 20:  *
 21:  * @category    Mage
 22:  * @package     Mage_Rss
 23:  * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 24:  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 25:  */
 26: 
 27: /**
 28:  * Review form block
 29:  *
 30:  * @category   Mage
 31:  * @package    Mage_Rss
 32:  * @author     Magento Core Team <core@magentocommerce.com>
 33:  */
 34: class Mage_Rss_Block_Catalog_NotifyStock extends Mage_Rss_Block_Abstract
 35: {
 36: 
 37:     /**
 38:      * Cache tag constant for feed notify stock
 39:      *
 40:      * @var string
 41:      */
 42:     const CACHE_TAG = 'block_html_rss_catalog_notifystock';
 43: 
 44:     /**
 45:      * Constructor
 46:      *
 47:      * @return null
 48:      */
 49:     protected function _construct()
 50:     {
 51:         $this->setCacheTags(array(self::CACHE_TAG));
 52:         /*
 53:         * setting cache to save the rss for 10 minutes
 54:         */
 55:         $this->setCacheKey('rss_catalog_notifystock');
 56:         $this->setCacheLifetime(600);
 57:     }
 58: 
 59:     /**
 60:      * Render RSS
 61:      *
 62:      * @return string
 63:      */
 64:     protected function _toHtml()
 65:     {
 66:         $newUrl = Mage::getUrl('rss/catalog/notifystock');
 67:         $title = Mage::helper('rss')->__('Low Stock Products');
 68: 
 69:         $rssObj = Mage::getModel('rss/rss');
 70:         $data = array(
 71:             'title'       => $title,
 72:             'description' => $title,
 73:             'link'        => $newUrl,
 74:             'charset'     => 'UTF-8',
 75:         );
 76:         $rssObj->_addHeader($data);
 77: 
 78:         $configManageStock = (int) Mage::getStoreConfigFlag(
 79:             Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MANAGE_STOCK);
 80:         $globalNotifyStockQty = (float) Mage::getStoreConfig(
 81:             Mage_CatalogInventory_Model_Stock_Item::XML_PATH_NOTIFY_STOCK_QTY);
 82:         Mage::helper('rss')->disableFlat();
 83:         /* @var $product Mage_Catalog_Model_Product */
 84:         $product = Mage::getModel('catalog/product');
 85:         /* @var $collection Mage_Catalog_Model_Resource_Product_Collection */
 86:         $collection = $product->getCollection();
 87:         $stockItemTable = $collection->getTable('cataloginventory/stock_item');
 88: 
 89:         $stockItemWhere = '({{table}}.low_stock_date is not null) '
 90:             . " AND ( ({{table}}.use_config_manage_stock=1 AND {$configManageStock}=1)"
 91:             . " AND {{table}}.qty < "
 92:             . "IF({$stockItemTable}.`use_config_notify_stock_qty`, {$globalNotifyStockQty}, {{table}}.notify_stock_qty)"
 93:             . ' OR ({{table}}.use_config_manage_stock=0 AND {{table}}.manage_stock=1) )';
 94: 
 95:         $collection
 96:             ->addAttributeToSelect('name', true)
 97:             ->joinTable('cataloginventory/stock_item', 'product_id=entity_id',
 98:                 array(
 99:                      'qty'=>'qty',
100:                      'notify_stock_qty'=>'notify_stock_qty',
101:                      'use_config' => 'use_config_notify_stock_qty',
102:                      'low_stock_date' => 'low_stock_date'),
103:                 $stockItemWhere, 'inner')
104:             ->setOrder('low_stock_date');
105: 
106:         $collection->addAttributeToFilter('status',
107:             array('in' => Mage::getSingleton('catalog/product_status')->getVisibleStatusIds()));
108:         Mage::dispatchEvent('rss_catalog_notify_stock_collection_select', array('collection' => $collection));
109: 
110:         /*
111:         using resource iterator to load the data one by one
112:         instead of loading all at the same time. loading all data at the same time can cause the big memory allocation.
113:         */
114:         Mage::getSingleton('core/resource_iterator')->walk(
115:             $collection->getSelect(),
116:             array(array($this, 'addNotifyItemXmlCallback')),
117:             array('rssObj'=> $rssObj, 'product'=>$product, 'globalQty' => $globalNotifyStockQty)
118:         );
119: 
120:         return $rssObj->createRssXml();
121:     }
122: 
123:     /**
124:      * Adds single product to feed
125:      *
126:      * @param array $args
127:      * @return void
128:      */
129:     public function addNotifyItemXmlCallback($args)
130:     {
131:         $product = $args['product'];
132:         $product->setData($args['row']);
133:         $url = Mage::helper('adminhtml')->getUrl('adminhtml/catalog_product/edit/',
134:             array('id' => $product->getId(), '_secure' => true, '_nosecret' => true));
135:         $qty = 1 * $product->getQty();
136:         $description = Mage::helper('rss')->__('%s has reached a quantity of %s.', $product->getName(), $qty);
137:         $rssObj = $args['rssObj'];
138:         $data = array(
139:             'title'         => $product->getName(),
140:             'link'          => $url,
141:             'description'   => $description,
142:         );
143:         $rssObj->_addEntry($data);
144:     }
145: }
146: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0