Monday, August 1, 2016

GET THE EMAIL IDs OF ALL MEMBERS THAT HAVE UNSUBSCRIBED TO MAILCHIMP IN THE LAST N DAYS AND UPDATE OUR DATABASE ACCORDINGLY

GET THE EMAIL IDs OF ALL MEMBERS THAT HAVE UNSUBSCRIBED TO MAILCHIMP IN THE LAST N DAYS AND UPDATE OUR DATABASE ACCORDINGLY

<?php
require_once("includes/db.php");
$db = new DB();
$database = "XXXX";
$list_id = 'XXX';


$unsubscribed_members = getList();
$json_array = getJson($unsubscribed_members);
$get_status = check_status($json_array);
echo '<pre>'; //print_r($json_array);
 print_r($get_status);

function check_status($array_resp){
//echo '<pre>'; print_r($array_resp);
$message[0] = 'Updated on: '.date("F j, Y, g:i a");
$message[1] = "Updates for Unsubscribed Members ";
$count = count($array_resp['members']);
for($i=0;$i<$count;$i++){
$member = $array_resp['members'][$i];
$email = $member['email_address'];
$status = $member['status'];
$last_changed = $member['last_changed'];

if($status=='unsubscribed'){
$unsubscription_status = 0;
$message[] = updateDatabase($email, $last_changed);
}

}
return $message;
}

function getList(){
global $list_id, $MCAPI;
$username = "XXX";
$password = "XXXX";
$api_key = 'XXXXXX-us3';
$dateSince= date('Y-m-d h:i:s',strtotime("-2 days"));
   
$api = array
(
'login' => $username,
'key'   => $api_key,
'url'   => 'https://us3.api.mailchimp.com/3.0/lists/'.$list_id.'/members/?count=50&status=unsubscribed&since_last_changed='.$dateSince
);
//echo '<pre>'; print_r($api);
    $result = mc_request( $api,'GET','','');    
return $result;  
}
function mc_request( $api, $type, $target, $data = false  ) {  
$ch = curl_init( $api['url'] . $target );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array
(
'Content-Type: application/json',
'Authorization: ' . $api['login'] . ' ' . $api['key'],
)
);
curl_setopt($ch, CURLOPT_HEADER, 1);  
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $type );
curl_setopt( $ch, CURLOPT_TIMEOUT, 5 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_USERAGENT, 'YOUR-USER-AGENT' );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $type );
if( $data )
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $data ) );
$response = curl_exec( $ch );
//echo '<pre>'; var_dump($response);  die("TEST");
//$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close( $ch );
return $response;
}
function getJson($subscribed_members){
$resp = substr(strstr($subscribed_members, '{'), strlen('{'));
$js_result = '{'.$resp;
$jres = json_decode($js_result,true);
return $jres;
}

function updateDatabase($email, $timestamp_opt){
global $database, $db;

$sql_check_unsubscribers = "SELECT enabled FROM $database.subscribe_email WHERE email = '$email'";
$enabled = $db->Query($sql_check_unsubscribers);
if(isset($enabled)&&($enabled!='')){
if($enabled==0)
$message = "Member with email id '$email' is already Unsubscribed! ";
else{
$sql_update_unsubscribers = "UPDATE $database.subscribe_email SET enabled=0
WHERE email = '$email'";
$upd = $db->Command($sql_update_unsubscribers);
$message = "Member with email id '$email' Unsubscribed on: '$timestamp_opt', Updated in table '$upd'";
}
}else{
//echo "NOT IN TABLE"; echo '<br>';
$sql_add_subscribers = "INSERT INTO $database.subscribe_email
(`enabled`,`typeId`,`email`,`date`)
VALUES('0','5','$email',NOW())";
$enabled = $db->Query($sql_add_subscribers);
$message = "Added member with email id '$email' as Unsubscribed! ";
}
return $message;
}

?>

No comments:

Post a Comment