function AutoResponderMailChimp($that, $ar, $wpm_id, $email, $unsub = false) { $listID = $ar['mcID'][$wpm_id]; // get the list ID of the Membership Level $mcAPI = $ar['mcapi']; // get the MailChimp API $WishlistAPIQueueInstance = new WishlistAPIQueue(); $WLM_AUTORESPONDER_MAILCHIMP_INIT = new WLM_AUTORESPONDER_MAILCHIMP_INIT(); if ($listID) { //$listID should not be empty list($fName, $lName) = explode(" ", $that->ARSender['name'], 2); //split the name into First and Last Name $emailAddress = $that->ARSender['email']; $data = false; if ($unsub) { // if the Unsubscribe $mcOnRemCan = isset($ar['mcOnRemCan'][$wpm_id]) ? $ar['mcOnRemCan'][$wpm_id] : ""; if ($mcOnRemCan == "unsub") { //$res = $this->mcListUnsubscribe($mcAPI, $listID, $emailAddress, true); $data = array("apikey" => $mcAPI, "action" => "unsubscribe", "listID" => $listID, "email" => $emailAddress, "delete_member" => true); } elseif ($mcOnRemCan == "move" || $mcOnRemCan == "add") { $gp = $ar['mcRCGp'][$wpm_id]; $gping = $ar['mcRCGping'][$wpm_id]; $groupings = array(); if ($gp != "" && $gping != "") { $groupings = array(array('name' => $gp, 'groups' => $gping)); } $replace_interests = $mcOnRemCan == "move" ? true : false; #add name or else this will still fail $merge_vars = array('FNAME' => $fName, 'LNAME' => $lName, 'NAME' => "{$fName} {$lName}", 'GROUPINGS' => $groupings); // populate the merger vars for MailChimp //$res = $this->mcListSubscribe($mcAPI, $listID, $emailAddress, $merge_vars, true, true, $replace_interests); $data = array("apikey" => $mcAPI, "action" => "subscribe", "listID" => $listID, "email" => $emailAddress, "mergevars" => $merge_vars, "optin" => true, "update_existing" => true, "replace_interests" => $replace_interests); } } else { //else Subscribe $gp = $ar['mcGp'][$wpm_id]; $gping = $ar['mcGping'][$wpm_id]; $groupings = array(); if ($gp != "") { $groupings = array(array('name' => $gp, 'groups' => $gping)); } $optin = $ar['optin']; // get the MailChimp API $optin = $optin == 1 ? false : true; #add name or else this will still fail $merge_vars = array('FNAME' => $fName, 'LNAME' => $lName, 'NAME' => "{$fName} {$lName}", 'GROUPINGS' => $groupings); // populate the merger vars for MailChimp //$res = $this->mcListSubscribe($mcAPI, $listID, $emailAddress, $merge_vars, $optin, true, false); $data = array("apikey" => $mcAPI, "action" => "subscribe", "listID" => $listID, "email" => $emailAddress, "mergevars" => $merge_vars, "optin" => $optin, "update_existing" => 1, "replace_interests" => false); } if ($data) { $qname = "mailchimp_" . time(); $data = maybe_serialize($data); $WishlistAPIQueueInstance->add_queue($qname, $data, "For Queueing"); $WLM_AUTORESPONDER_MAILCHIMP_INIT->mcProcessQueue(); } } }
function mcProcessQueue($recnum = 10, $tries = 5) { $WishlistAPIQueueInstance = new WishlistAPIQueue(); $last_process = get_option("WLM_MailchimpAPI_LastProcess"); $current_time = time(); $tries = $tries > 1 ? (int) $tries : 5; $error = false; //lets process every 10 seconds if (!$last_process || $current_time - $last_process > 10) { $queues = $WishlistAPIQueueInstance->get_queue("mailchimp", $recnum, $tries, "tries,name"); foreach ($queues as $queue) { $data = maybe_unserialize($queue->value); if ($data['action'] == 'subscribe') { $res = $this->mcListSubscribe($data['apikey'], $data['listID'], $data['email'], $data['mergevars'], $data['optin'], $data['update_existing'], $data['replace_interests']); } elseif ($data['action'] == 'unsubscribe') { $res = $this->mcListUnsubscribe($data['apikey'], $data['listID'], $data['email'], $data['delete_member']); } if (isset($res['error'])) { $res['error'] = strip_tags($res['error']); $res['error'] = str_replace(array("\n", "\t", "\r"), '', $res['error']); $d = array('notes' => "{$res['code']}:{$res['error']}", 'tries' => $queue->tries + 1); $WishlistAPIQueueInstance->update_queue($queue->ID, $d); $error = true; } else { $WishlistAPIQueueInstance->delete_queue($queue->ID); $error = false; } } //save the last processing time when error has occured on last transaction if ($error) { $current_time = time(); if ($last_process) { update_option("WLM_MailchimpAPI_LastProcess", $current_time); } else { add_option("WLM_MailchimpAPI_LastProcess", $current_time); } } } }
public function ifscProcessQueue($recnum = 10, $tries = 5) { global $WishListMemberInstance; $txnids = $WishListMemberInstance->GetMembershipLevelsTxnIDs(9); $WishlistAPIQueueInstance = new WishlistAPIQueue(); $last_process = get_option("WLM_InfusionsoftSCAPI_LastProcess"); $current_time = time(); $tries = $tries > 1 ? (int) $tries : 5; $error = false; //lets process every 10 seconds if (!$last_process || $current_time - $last_process > 10) { $queues = $WishlistAPIQueueInstance->get_queue("infusionsoftsc", $recnum, $tries, "tries,name"); foreach ($queues as $queue) { $data = maybe_unserialize($queue->value); if ($data['action'] == 'new') { $res = $this->NewUserTagsHook($data['uid'], $data['data']); } elseif ($data['action'] == 'add') { $res = $this->AddUserTagsHook($data['uid'], $data['levels']); } elseif ($data['action'] == 'remove') { $res = $this->RemoveUserTagsHook($data['uid'], $data['levels']); } elseif ($data['action'] == 'cancel') { $res = $this->CancelUserTagsHook($data['uid'], $data['levels']); } if (isset($res['errstr'])) { $res['error'] = strip_tags($res['errstr']); $res['error'] = str_replace(array("\n", "\t", "\r"), '', $res['error']); $d = array('notes' => "{$res['errno']}:{$res['error']}", 'tries' => $queue->tries + 1); $WishlistAPIQueueInstance->update_queue($queue->ID, $d); $error = true; } else { $WishlistAPIQueueInstance->delete_queue($queue->ID); $error = false; } } //save the last processing time when error has occured on last transaction if ($error) { $current_time = time(); if ($last_process) { update_option("WLM_InfusionsoftSCAPI_LastProcess", $current_time); } else { add_option("WLM_InfusionsoftSCAPI_LastProcess", $current_time); } } } }