You are here

function mailchimp_interest_groups_form_elements in Mailchimp 7.3

Same name and namespace in other branches
  1. 8 mailchimp.module \mailchimp_interest_groups_form_elements()
  2. 7.5 mailchimp.module \mailchimp_interest_groups_form_elements()
  3. 7.4 mailchimp.module \mailchimp_interest_groups_form_elements()
  4. 2.x mailchimp.module \mailchimp_interest_groups_form_elements()

Helper function to generate form elements for a list's interest groups.

Parameters

array $mc_list: Fully loaded array with mailchimp list settings as returned by mailchimp_get_list()

array $default_values: Array of default values to use if no group subscription values already exist at MailChimp.

string $email: Optional email address to pass to the MCAPI and retrieve existing values for use as defaults.

Return value

array A collection of form elements, one per interest group.

4 calls to mailchimp_interest_groups_form_elements()
mailchimp_lists_field_get in modules/mailchimp_lists/includes/mailchimp_lists.field.inc
Entity field data callback for MailChimp subscription fields.
mailchimp_lists_field_widget_form in modules/mailchimp_lists/includes/mailchimp_lists.field.inc
Implements hook_field_widget_form().
mailchimp_lists_subscribe_form in modules/mailchimp_lists/mailchimp_lists.module
Return a form element for a single newsletter.
mailchimp_signup_subscribe_form in modules/mailchimp_signup/mailchimp_signup.module
Returns a subscription form for mailchimp lists.

File

./mailchimp.module, line 1198
Mailchimp module.

Code

function mailchimp_interest_groups_form_elements($mc_list, $default_values = array(), $email = NULL) {
  $return = array();
  foreach ($mc_list['intgroups'] as $group) {
    if ($group['form_field'] == 'hidden') {
      continue;
    }

    // Set the form field type:
    switch ($group['form_field']) {
      case 'radio':
        $field_type = 'radios';
        break;
      case 'dropdown':
        $field_type = 'select';
        break;
      default:
        $field_type = $group['form_field'];
    }

    // Extract the field options:
    $options = array();
    if ($field_type == 'select') {
      $options[''] = '-- select --';
    }
    foreach ($group['groups'] as $option) {
      $options[$option['name']] = $option['name'];
    }

    // Grab the default values for this group:
    if ($email) {
      $memberinfo = mailchimp_get_memberinfo($mc_list['id'], $email);
      if (isset($memberinfo['merges']['GROUPINGS'])) {
        $default_values = array();
        foreach ($memberinfo['merges']['GROUPINGS'] as $membergroup) {
          if ($membergroup['id'] == $group['id']) {
            foreach ($membergroup['groups'] as $option) {
              if ($option['interested']) {
                $default_values[$group['id']][] = $option['name'];
              }
            }
            break;
          }
        }
      }
    }
    $return[$group['id']] = array(
      '#type' => $field_type,
      '#title' => $group['name'],
      '#options' => $options,
      '#default_value' => isset($default_values[$group['id']]) ? $default_values[$group['id']] : array(),
      '#attributes' => array(
        'class' => array(
          'mailchimp-newsletter-interests-' . $mc_list['id'],
        ),
      ),
    );
  }
  return $return;
}