Example #1
0
 /**
  * Observes: customer_customer_authenticated
  * 
  * @param type $observer
  * @return \MailUp_MailUpSync_Model_Observer
  */
 public function leggiUtente($observer)
 {
     $model = $observer->getEvent()->getModel();
     if (empty($model)) {
         $model = $model = $observer->getEvent()->getDataObject();
     }
     if (isset($GLOBALS["__sl_mailup_leggi_utente"])) {
         return $this;
     }
     $GLOBALS["__sl_mailup_leggi_utente"] = true;
     try {
         $WSDLUrl = 'http://services.mailupnet.it/MailupReport.asmx?WSDL';
         $user = Mage::getStoreConfig('mailup_newsletter/mailup/username_ws');
         $password = Mage::getStoreConfig('mailup_newsletter/mailup/password_ws');
         $headers = array('User' => $user, 'Password' => $password);
         $header = new SOAPHeader("http://ws.mailupnet.it/", 'Authentication', $headers);
         $soapclient = new SoapClient($WSDLUrl, array('trace' => 1, 'exceptions' => 1, 'connection_timeout' => 10));
         $soapclient->__setSoapHeaders($header);
         $loginData = array('user' => Mage::getStoreConfig('mailup_newsletter/mailup/username_ws'), 'pwd' => Mage::getStoreConfig('mailup_newsletter/mailup/password_ws'), 'consoleId' => substr(Mage::getStoreConfig('mailup_newsletter/mailup/username_ws'), 1));
         $result = get_object_vars($soapclient->LoginFromId($loginData));
         $xml = simplexml_load_string($result['LoginFromIdResult']);
         $errorCode = (string) $xml->errorCode;
         $errorDescription = (string) $xml->errorDescription;
         $accessKey = (string) $xml->accessKey;
         $result = $soapclient->ReportByUser(array("accessKey" => $accessKey, "email" => $model->getEmail(), "listID" => Mage::getStoreConfig('mailup_newsletter/mailup/list'), "messageID" => 0));
         $result = get_object_vars($result);
         $xml = simplexml_load_string($result['ReportByUserResult']);
         $stato_registrazione = (string) $xml->Canali->Email;
         if (Mage::getStoreConfig('mailup_newsletter/mailup/enable_log')) {
             Mage::log("stato registrazione: " . $stato_registrazione);
         }
         if ($stato_registrazione) {
             // Ensure that before_save does not fire
             $this->_authenticationCalled[$model->getEmail()] = true;
             // Set subscription based on returned $stato_registrazione
             switch (strtolower($stato_registrazione)) {
                 case "iscritto":
                     Mage::getModel('newsletter/subscriber')->loadByEmail($model->getEmail())->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED)->save();
                     $model->setIsSubscribed(1);
                     $model->save();
                     break;
                 case "in attesa":
                     Mage::getModel('newsletter/subscriber')->loadByEmail($model->getEmail())->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED)->save();
                     Mage::getSingleton('core/session')->addNotice(Mage::helper("mailup")->__("Your subscription is waiting for confirmation"));
                     break;
                 default:
                     Mage::getModel('newsletter/subscriber')->loadByEmail($model->getEmail())->setStatus(Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED)->save();
                     $model->setIsSubscribed(0);
                     $model->save();
             }
         }
     } catch (Exception $e) {
         Mage::logException($e);
     }
     return $this;
 }