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 Mage_ProductAlert_AddController extends Mage_Core_Controller_Front_Action
35: {
36: public function preDispatch()
37: {
38: parent::preDispatch();
39:
40: if (!Mage::getSingleton('customer/session')->authenticate($this)) {
41: $this->setFlag('', 'no-dispatch', true);
42: if(!Mage::getSingleton('customer/session')->getBeforeUrl()) {
43: Mage::getSingleton('customer/session')->setBeforeUrl($this->_getRefererUrl());
44: }
45: }
46: }
47:
48: public function testObserverAction()
49: {
50: $object = new Varien_Object();
51: $observer = Mage::getSingleton('productalert/observer');
52: $observer->process($object);
53: }
54:
55: public function priceAction()
56: {
57: $session = Mage::getSingleton('catalog/session');
58: $backUrl = $this->getRequest()->getParam(Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED);
59: $productId = (int) $this->getRequest()->getParam('product_id');
60: if (!$backUrl || !$productId) {
61: $this->_redirect('/');
62: return ;
63: }
64:
65: $product = Mage::getModel('catalog/product')->load($productId);
66: if (!$product->getId()) {
67:
68: $session->addError($this->__('Not enough parameters.'));
69: if ($this->_isUrlInternal($backUrl)) {
70: $this->_redirectUrl($backUrl);
71: } else {
72: $this->_redirect('/');
73: }
74: return ;
75: }
76:
77: try {
78: $model = Mage::getModel('productalert/price')
79: ->setCustomerId(Mage::getSingleton('customer/session')->getId())
80: ->setProductId($product->getId())
81: ->setPrice($product->getFinalPrice())
82: ->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
83: $model->save();
84: $session->addSuccess($this->__('The alert subscription has been saved.'));
85: }
86: catch (Exception $e) {
87: $session->addException($e, $this->__('Unable to update the alert subscription.'));
88: }
89: $this->_redirectReferer();
90: }
91:
92: public function stockAction()
93: {
94: $session = Mage::getSingleton('catalog/session');
95:
96: $backUrl = $this->getRequest()->getParam(Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED);
97: $productId = (int) $this->getRequest()->getParam('product_id');
98: if (!$backUrl || !$productId) {
99: $this->_redirect('/');
100: return ;
101: }
102:
103: if (!$product = Mage::getModel('catalog/product')->load($productId)) {
104:
105: $session->addError($this->__('Not enough parameters.'));
106: $this->_redirectUrl($backUrl);
107: return ;
108: }
109:
110: try {
111: $model = Mage::getModel('productalert/stock')
112: ->setCustomerId(Mage::getSingleton('customer/session')->getId())
113: ->setProductId($product->getId())
114: ->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
115: $model->save();
116: $session->addSuccess($this->__('Alert subscription has been saved.'));
117: }
118: catch (Exception $e) {
119: $session->addException($e, $this->__('Unable to update the alert subscription.'));
120: }
121: $this->_redirectReferer();
122: }
123: }
124: