function mailchimp_lists_process_subscribe_form_choices in Mailchimp 7.2
Same name and namespace in other branches
- 8 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
- 7.5 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
- 7.3 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
- 7.4 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
- 2.x modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
Processor for various list form submissions.
Subscription blocks, user settings, and new user creation.
@array $list_forms: an array of mailchimp_list form values, as generated by mailchimp_lists_list_form() @account null $account: the user account to subscribe, if available. Otherwise, operations will be run with the ['mergevars']['EMAIL'] value.
2 calls to mailchimp_lists_process_subscribe_form_choices()
- mailchimp_lists_user_insert in modules/
mailchimp_lists/ mailchimp_lists.module - Implements hook_user_insert().
- mailchimp_lists_user_subscribe_form_submit in modules/
mailchimp_lists/ mailchimp_lists.module - Submit handler to add users to lists when editing/creating a user.
File
- modules/
mailchimp_lists/ mailchimp_lists.module, line 613 - Mailchimp lists module.
Code
function mailchimp_lists_process_subscribe_form_choices($list_forms, $account = NULL) {
$mcapi = mailchimp_get_api_object();
foreach ($list_forms as $form_list) {
$list = $form_list['list'];
$selected = FALSE;
$is_anonymous = !$account || !$account->uid;
$mergevars = NULL;
$function = '';
$ret = FALSE;
$interest_groups = !empty($form_list['interest_groups']) ? $form_list['interest_groups'] : NULL;
if (!$is_anonymous) {
$mail = $account->mail;
$selected = !empty($form_list['subscribe']);
$mergevars = mailchimp_lists_load_user_mergevars($account, $list, $interest_groups);
}
else {
$mail = $form_list['mergevars']['EMAIL'];
$mergevars = $form_list['mergevars'];
// Include interest groups if present:
if (!empty($interest_groups)) {
$mergevars['GROUPINGS'] = _mailchimp_lists_reformat_groupings($interest_groups);
}
}
$is_subscribed = mailchimp_is_subscribed($list->mc_list_id, $mail);
// Determine what function is appropriate.
// Unsubscribe a subscribed user who unchecked an Optional list:
if ($is_subscribed && !$selected && !$list->settings['required']) {
$function = 'remove';
}
elseif ($selected || $list->settings['required'] || $is_anonymous) {
if ($is_subscribed) {
$function = 'update';
}
else {
$function = "add";
}
}
if (!empty($function)) {
$ret = mailchimp_lists_execute_change($function, $list, $mail, $mergevars, $account, $mcapi);
if (!$ret) {
drupal_set_message(t('There was a problem with your newsletter signup: @msg', array(
'@msg' => $mcapi->errorMessage,
)), 'warning');
}
}
}
}