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:
35: class extends Mage_Core_Controller_Front_Action
36: {
37: protected function isFeedEnable($code)
38: {
39: return Mage::getStoreConfig('rss/catalog/'.$code);
40: }
41:
42: protected function checkFeedEnable($code)
43: {
44: if ($this->isFeedEnable($code)) {
45: $this->getResponse()->setHeader('Content-type', 'text/xml; charset=UTF-8');
46: return true;
47: } else {
48: $this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
49: $this->getResponse()->setHeader('Status','404 File not found');
50: $this->_forward('nofeed','index','rss');
51: return false;
52: }
53: }
54:
55: public function newAction()
56: {
57: $this->checkFeedEnable('new');
58: $this->loadLayout(false);
59: $this->renderLayout();
60: }
61:
62: public function specialAction()
63: {
64: $this->checkFeedEnable('special');
65: $this->loadLayout(false);
66: $this->renderLayout();
67: }
68:
69: public function salesruleAction()
70: {
71: $this->checkFeedEnable('salesrule');
72: $this->loadLayout(false);
73: $this->renderLayout();
74: }
75:
76: public function tagAction()
77: {
78: if ($this->checkFeedEnable('tag')) {
79: $tagName = urldecode($this->getRequest()->getParam('tagName'));
80: $tagModel = Mage::getModel('tag/tag');
81: $tagModel->loadByName($tagName);
82: if ($tagModel->getId() && $tagModel->getStatus()==$tagModel->getApprovedStatus()) {
83: Mage::register('tag_model', $tagModel);
84: $this->loadLayout(false);
85: $this->renderLayout();
86: return;
87: }
88: }
89: $this->_forward('nofeed', 'index', 'rss');
90: }
91:
92: public function notifystockAction()
93: {
94: $this->getResponse()->setHeader('Content-type', 'text/xml; charset=UTF-8');
95: $this->loadLayout(false);
96: $this->renderLayout();
97: }
98:
99: public function reviewAction()
100: {
101: $this->getResponse()->setHeader('Content-type', 'text/xml; charset=UTF-8');
102: $this->loadLayout(false);
103: $this->renderLayout();
104: }
105:
106: public function categoryAction()
107: {
108: if ($this->checkFeedEnable('category')) {
109: $this->loadLayout(false);
110: $this->renderLayout();
111: }
112: }
113:
114: 115: 116: 117: 118:
119: public function preDispatch()
120: {
121: if ($this->getRequest()->getActionName() == 'notifystock') {
122: $this->_currentArea = 'adminhtml';
123: Mage::helper('rss')->authAdmin('catalog/products');
124: }
125: if ($this->getRequest()->getActionName() == 'review') {
126: $this->_currentArea = 'adminhtml';
127: Mage::helper('rss')->authAdmin('catalog/reviews_ratings');
128: }
129: return parent::preDispatch();
130: }
131: }
132: