コード例 #1
0
 /**
  * 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();
 }