1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27: 28: 29: 30: 31: 32: 33:
34: class extends Mage_Rss_Block_Abstract
35: {
36:
37: 38: 39: 40: 41:
42: const CACHE_TAG = 'block_html_rss_catalog_review';
43:
44: 45: 46: 47: 48:
49: protected function _construct()
50: {
51: $this->setCacheTags(array(self::CACHE_TAG));
52: 53: 54:
55: $this->setCacheKey('rss_catalog_review');
56: $this->setCacheLifetime(600);
57: }
58:
59: 60: 61: 62: 63:
64: protected function _toHtml()
65: {
66: $newUrl = Mage::getUrl('rss/catalog/review');
67: $title = Mage::helper('rss')->__('Pending product review(s)');
68: Mage::helper('rss')->disableFlat();
69:
70: $rssObj = Mage::getModel('rss/rss');
71: $data = array(
72: 'title' => $title,
73: 'description' => $title,
74: 'link' => $newUrl,
75: 'charset' => 'UTF-8',
76: );
77: $rssObj->_addHeader($data);
78:
79: $reviewModel = Mage::getModel('review/review');
80:
81: $collection = $reviewModel->getProductCollection()
82: ->addStatusFilter($reviewModel->getPendingStatus())
83: ->addAttributeToSelect('name', 'inner')
84: ->setDateOrder();
85:
86: Mage::dispatchEvent('rss_catalog_review_collection_select', array('collection' => $collection));
87:
88: Mage::getSingleton('core/resource_iterator')->walk(
89: $collection->getSelect(),
90: array(array($this, 'addReviewItemXmlCallback')),
91: array('rssObj'=> $rssObj, 'reviewModel'=> $reviewModel));
92: return $rssObj->createRssXml();
93: }
94:
95: 96: 97: 98: 99: 100:
101: public function addReviewItemXmlCallback($args)
102: {
103: $rssObj = $args['rssObj'];
104: $row = $args['row'];
105:
106: $store = Mage::app()->getStore($row['store_id']);
107: $urlModel = Mage::getModel('core/url')->setStore($store);
108: $productUrl = $urlModel->getUrl('catalog/product/view', array('id' => $row['entity_id']));
109: $reviewUrl = Mage::helper('adminhtml')->getUrl(
110: 'adminhtml/catalog_product_review/edit/',
111: array('id' => $row['review_id'], '_secure' => true, '_nosecret' => true));
112: $storeName = $store->getName();
113:
114: $description = '<p>'
115: . $this->__('Product: <a href="%s">%s</a> <br/>', $productUrl, $row['name'])
116: . $this->__('Summary of review: %s <br/>', $row['title'])
117: . $this->__('Review: %s <br/>', $row['detail'])
118: . $this->__('Store: %s <br/>', $storeName )
119: . $this->__('click <a href="%s">here</a> to view the review', $reviewUrl)
120: . '</p>';
121: $data = array(
122: 'title' => $this->__('Product: "%s" review By: %s', $row['name'], $row['nickname']),
123: 'link' => 'test',
124: 'description' => $description,
125: );
126: $rssObj->_addEntry($data);
127: }
128: }
129: