/** * Function to save subscriber from Checkout. * The parent saveOrder Action from Mage_Checkout_OnepageController will be called */ public function saveOrderAction() { $customerSession = Mage::getSingleton('customer/session'); $newsletter = $this->getRequest()->getPost('newsletter'); if (isset($newsletter['subscribe'])) { if ($newsletter['subscribe'] == '1') { // Get the Email $mail = $this->getOnepage()->getQuote()->getBillingAddress()->getEmail(); // Get the Email if there is no mail in billing address if ($customerSession->isLoggedIn() && empty($mail)) { $mail = $customerSession->getCustomer()->getEmail(); } if ($this->getOnepage()->getQuote()->getCheckoutMethod() == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER) { Mage::getSingleton('checkout/session')->setNewRegistration(true); } else { Mage::getSingleton('checkout/session')->setNewRegistration(false); } // Register and subscribe the new guest or customer Mage::getModel('newsletter/subscriber')->subscribe($mail); //Change Status to subscribed if checkout is custome registration if ($this->getOnepage()->getQuote()->getCheckoutMethod() == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER) { $subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($mail); if ($subscriber) { $subscriber->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED); $subscriber->save(); } } } } parent::saveOrderAction(); }