By Adam S on
I just imported 1500 new users into my database from a couple of events we had. The user import module did not send out a single email, which is fine as long as they listed as OPT-IN in our mailchimp database.
When a person creates a new account they are automatically opt-in on our mailchimp mailing list. However, this does not happen when I bulk import through the user import module.
I think that this is the code that user import module needs to call.
/**
* Submit handler to add users to lists when editing/creating a user
*/
function mailchimp_user_profile_submit($form, &$form_state) {
if ($q = _mailchimp_get_api_object()) {
$account = new stdClass();
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(array('uid' => arg(1)));
}
else {
$account = $form_state['user'];
}
$lists = _mailchimp_get_available_lists($account);
foreach ($lists as $list) {
// ignore required lists, they are handled via hook_user
if ($list->listtype !== MAILCHIMP_LISTTYPE_REQUIRED) {
$is_subscribed = _mailchimp_is_subscribed($list->id, $account->mail, $q);
$ret = TRUE;
$selected = @$form_state['values']['mailchimp_list_'. $list->id];
// unsubscribe a subscribed user who unchecked the box for this newsletter
if ($is_subscribed && !$selected) {
$ret = _mailchimp_unsubscribe_user($list, $account->mail, TRUE, $q);
}
else if ($selected) {
// subscribe the user if they are not previously subscribed or update existing subscriptions
$merge_vars = _mailchimp_load_user_list_mergevars($account->uid, $list->id, $q->listMergeVars($list->id));
$merge_vars['EMAIL'] = $form_state['values']['mail'];
if (!empty($form_state['values']['mailchimp_list_'. $list->id .'_INTERESTS'])){
$merge_vars['INTERESTS'] = implode(',', array_filter($form_state['values']['mailchimp_list_'. $list->id .'_INTERESTS']));
}
$ret = _mailchimp_subscribe_user($list, $account->mail, $merge_vars, TRUE, $q);
}
if (!$ret) {
watchdog('mailchimp', $q->errorMessage, array(), WATCHDOG_ERROR);
}
}
}
}
}