*/ class Mage_ProductAlert_UnsubscribeController extends Mage_Core_Controller_Front_Action { public function preDispatch() { parent::preDispatch(); if (!Mage::getSingleton('customer/session')->authenticate($this)) { $this->setFlag('', 'no-dispatch', true); if(!Mage::getSingleton('customer/session')->getBeforeUrl()) { Mage::getSingleton('customer/session')->setBeforeUrl($this->_getRefererUrl()); } } } public function priceAction() { $productId = (int) $this->getRequest()->getParam('product'); if (!$productId) { $this->_redirect(''); return; } $session = Mage::getSingleton('catalog/session'); /* @var $session Mage_Catalog_Model_Session */ $product = Mage::getModel('catalog/product')->load($productId); if (!$product->getId() || !$product->isVisibleInCatalog()) { /* @var $product Mage_Catalog_Model_Product */ Mage::getSingleton('customer/session')->addError($this->__('The product is not found.')); $this->_redirect('customer/account/'); return ; } try { $model = Mage::getModel('productalert/price') ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId()) ->setProductId($product->getId()) ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()) ->loadByParam(); if ($model->getId()) { $model->delete(); } $session->addSuccess($this->__('The alert subscription has been deleted.')); } catch (Exception $e) { $session->addException($e, $this->__('Unable to update the alert subscription.')); } $this->_redirectUrl($product->getProductUrl()); } public function priceAllAction() { $session = Mage::getSingleton('customer/session'); /* @var $session Mage_Customer_Model_Session */ try { Mage::getModel('productalert/price')->deleteCustomer( $session->getCustomerId(), Mage::app()->getStore()->getWebsiteId() ); $session->addSuccess($this->__('You will no longer receive price alerts for this product.')); } catch (Exception $e) { $session->addException($e, $this->__('Unable to update the alert subscription.')); } $this->_redirect('customer/account/'); } public function stockAction() { $productId = (int) $this->getRequest()->getParam('product'); if (!$productId) { $this->_redirect(''); return; } $session = Mage::getSingleton('catalog/session'); /* @var $session Mage_Catalog_Model_Session */ $product = Mage::getModel('catalog/product')->load($productId); /* @var $product Mage_Catalog_Model_Product */ if (!$product->getId() || !$product->isVisibleInCatalog()) { Mage::getSingleton('customer/session')->addError($this->__('The product was not found.')); $this->_redirect('customer/account/'); return ; } try { $model = Mage::getModel('productalert/stock') ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId()) ->setProductId($product->getId()) ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()) ->loadByParam(); if ($model->getId()) { $model->delete(); } $session->addSuccess($this->__('You will no longer receive stock alerts for this product.')); } catch (Exception $e) { $session->addException($e, $this->__('Unable to update the alert subscription.')); } $this->_redirectUrl($product->getProductUrl()); } public function stockAllAction() { $session = Mage::getSingleton('customer/session'); /* @var $session Mage_Customer_Model_Session */ try { Mage::getModel('productalert/stock')->deleteCustomer( $session->getCustomerId(), Mage::app()->getStore()->getWebsiteId() ); $session->addSuccess($this->__('You will no longer receive stock alerts.')); } catch (Exception $e) { $session->addException($e, $this->__('Unable to update the alert subscription.')); } $this->_redirect('customer/account/'); } }