/** * 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; }