public function subscribe($email, $fromWebHooks = null) { $store = Mage::app()->getStore()->getStoreId(); $helper = Mage::helper('mailchimp'); if ($helper->mailChimpEnabled($store)) { $this->loadByEmail($email); $customerSession = Mage::getSingleton('customer/session'); if (!$this->getId()) { $this->setSubscriberConfirmCode($this->randomSequence()); } $isConfirmNeed = (bool) $helper->getSubscribeConfig('double_optin', $store) && !$fromWebHooks ? true : false; if (!$this->getId() || $this->getStatus() == self::STATUS_UNSUBSCRIBED || $this->getStatus() == self::STATUS_NOT_ACTIVE) { if ($isConfirmNeed) { // if user subscribes own login email - confirmation is not needed $ownerId = Mage::getModel('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId())->loadByEmail($email)->getId(); if ($customerSession->isLoggedIn() && $ownerId == $customerSession->getId()) { $this->setStatus(self::STATUS_SUBSCRIBED); } else { $this->setStatus(self::STATUS_NOT_ACTIVE); } } else { $this->setStatus(self::STATUS_SUBSCRIBED); } $this->setSubscriberEmail($email); } if ($customerSession->isLoggedIn()) { $this->setStoreId($customerSession->getCustomer()->getStoreId()); $this->setCustomerId($customerSession->getCustomerId()); } else { $this->setStoreId(Mage::app()->getStore()->getId()); $this->setCustomerId(0); } $this->setIsStatusChanged(true); try { $this->save(); if ($isConfirmNeed) { $this->sendConfirmationRequestEmail(); } else { $this->sendConfirmationSuccessEmail(); } return $this->getStatus(); } catch (Exception $e) { throw new Exception($e->getMessage()); } } else { return parent::subscribe($email); } }