/**
  * Batch Subscription to MailChimp Lists
  *
  * @author Ruchi Kothari
  * @return bool "true" on Success, "false" otherwise
  * @throws SWIFT_Exception If the Class is not Loaded
  */
 public function Subscribe()
 {
     if (!$this->GetIsClassLoaded()) {
         throw new SWIFT_Exception(SWIFT_CLASSNOTLOADED);
         return false;
     }
     $_SWIFT_UserSyncManagerObject = new SWIFT_UserSyncManager();
     $_subscriptionResult = $_SWIFT_UserSyncManagerObject->BatchSubscribe();
     $_errorString = "";
     if (isset($_subscriptionResult['error'])) {
         $_errorString .= $_subscriptionResult['error'];
     } else {
         if (isset($_subscriptionResult['lists'])) {
             foreach ($_subscriptionResult['lists'] as $_list) {
                 foreach ($_list['errors'] as $_error) {
                     $_errorString .= $_error['email'] . ' failed';
                     $_errorString .= ' Code: ' . $_error['code'];
                     $_errorString .= ' Message: ' . $_error['message'];
                 }
             }
         }
     }
     if (!empty($_errorString)) {
         $_errorString = $this->Language->Get('mc_error') . $_errorString;
         SWIFT_Loader::LoadLibrary('ErrorLog:ErrorLog');
         SWIFT_ErrorLog::Create(SWIFT_ErrorLog::TYPE_GENERAL, $_errorString);
     }
     return true;
 }
 /**
  * Perform action(Subscription or Unsubscription) on a user
  *
  * @author Ruchi Kothari
  *
  * @param object $_SWIFT_UserObject      SWIFT_User object
  * @param int    $_unsubscribeNewsletter flag for subscription
  * @param array  $_userDetails           User details
  *
  * @return bool "true" on Success, "false" otherwise
  * @throws SWIFT_Exception If class is not loaded
  */
 public function PerformAction($_SWIFT_UserObject, $_unsubscribeNewsletter, $_userDetails)
 {
     if (!$this->GetIsClassLoaded()) {
         throw new SWIFT_Exception(SWIFT_CLASSNOTLOADED);
         return false;
     }
     //		SWIFT_Loader::LoadLibrary('User:UserProperty');
     $_subscriptionResult = true;
     // Retrieve user unsubscribe property
     $_unsubscribeStatus = SWIFT_UserProperty::RetrieveOnUser($_SWIFT_UserObject, 'mc_unsubscribe');
     if ($_unsubscribeNewsletter == 1 && $_unsubscribeStatus == '') {
         // Create user property if user doesn't want to subscribe
         SWIFT_UserProperty::CreateOrUpdate($_SWIFT_UserObject, 'mc_unsubscribe', 1);
         $_SWIFT_UserSyncManagerObject = new SWIFT_UserSyncManager();
         $_subscriptionResult = $_SWIFT_UserSyncManagerObject->MemberUnsubscribe($_userDetails['emails']['existing']);
     } else {
         if ($_unsubscribeNewsletter == 0) {
             $_userSubscribeDetails = array();
             $_userSubscribeDetails['emails'] = array();
             if ($_unsubscribeStatus == 1) {
                 // Delete user property if user want to subscribe
                 SWIFT_UserProperty::DeleteOnName($_SWIFT_UserObject, 'mc_unsubscribe');
                 $_userSubscribeDetails['emails'] = $_userDetails['emails']['existing'];
             }
             if (!empty($_userDetails['emails']['new'])) {
                 $_userSubscribeDetails['emails'] = array_merge($_userSubscribeDetails['emails'], $_userDetails['emails']['new']);
             }
             if (!empty($_userSubscribeDetails['emails'])) {
                 $_userSubscribeDetails['fullname'] = $_userDetails['fullname'];
                 $_SWIFT_UserSyncManagerObject = new SWIFT_UserSyncManager();
                 $_subscriptionResult = $_SWIFT_UserSyncManagerObject->MemberSubscribe($_userSubscribeDetails);
             }
         }
     }
     if (!empty($_userDetails['emails']['deleted'])) {
         $_SWIFT_UserSyncManagerObject = new SWIFT_UserSyncManager();
         $_subscriptionResult = $_SWIFT_UserSyncManagerObject->MemberUnsubscribe($_userDetails['emails']['deleted'], true);
     }
     return $_subscriptionResult;
 }