You are here

function mailchimp_lists_process_subscribe_form_choices in Mailchimp 7.2

Same name and namespace in other branches
  1. 8 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
  2. 7.5 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
  3. 7.3 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
  4. 7.4 modules/mailchimp_lists/mailchimp_lists.module \mailchimp_lists_process_subscribe_form_choices()
  5. 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');
      }
    }
  }
}