$to_add = array();
foreach (array_chunk($report_members, 49, true) as $chunk) {
    $list_infos = $api->listMemberInfo($list_id, array_keys($chunk));
    if (!empty($api->errorMessage)) {
        trigger_error("Mailchimp API Error calling listMemberInfo(): " . $api->errorMessage, E_USER_ERROR);
    }
    if ($DEBUG > 1) {
        bam("LIST INFOS:");
        bam($list_infos);
        bam("========================");
    }
    foreach ($list_infos['data'] as $list_member) {
        if (!empty($list_member['error'])) {
            $to_add[] = getMergeVars($chunk[strtolower($list_member['email_address'])], $list_member['email_address']);
        } else {
            $merge_vars = getMergeVars($chunk[strtolower($list_member['email'])], $list_member['email']);
            $do_update = FALSE;
            foreach ($merge_vars as $k => $v) {
                if (trim($list_member['merges'][$k]) != trim($v)) {
                    if ($DEBUG) {
                        bam("Difference found for " . $list_member['email']);
                    }
                    if ($DEBUG > 1) {
                        bam("-------------\nJethro:");
                        bam($merge_vars);
                        bam("-------------\nMailchimp:");
                        bam($list_member);
                        bam("-------------");
                    }
                    $do_update = TRUE;
                }
Exemple #2
0
    }
    if ($DEBUG) {
        bam($list_infos);
    }
    foreach ($list_infos['data'] as $list_member) {
        if (empty($list_member['error'])) {
            $merge_vars = getMergeVars($chunk[$list_member['email']], $list_member['email']);
            if ($merge_vars == $list_member['merges']) {
                // nothing to add or update so delete from $chunk
                unset($chunk[$list_member['email']]);
            }
        }
    }
    // $chunk now only contains report members who need to be added or updated.
    foreach ($chunk as $email => $data) {
        $to_add[] = getMergeVars($data, $email);
    }
}
if ($DEBUG) {
    bam("TO ADD / UPDATE:");
    bam($to_add);
}
if (!empty($to_add)) {
    $api->listBatchSubscribe($list_id, $to_add, false, true);
    if (!empty($api->errorMessage)) {
        trigger_error("Mailchimp API Error calling listBatchSubscribe(): " . $api->errorMessage, E_USER_ERROR);
    }
}
// Then, for all list members, check if they are in the report members list and if not add them to the "remove" list.
$list_members = $api->listMembers($list_id, 'subscribed', null, 0, 10000);
if (!empty($api->errorMessage)) {