You are here

function mailchimp_lists_field_settings_form in Mailchimp 7.4

Same name and namespace in other branches
  1. 7.5 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_settings_form()
  2. 7.3 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_settings_form()

Implements hook_field_settings_form().

File

modules/mailchimp_lists/includes/mailchimp_lists.field.inc, line 42
Field hooks.

Code

function mailchimp_lists_field_settings_form($this_field, $instance, $has_data) {
  $form = array();
  $lists = mailchimp_get_lists();
  $lists_exist = count($lists) > 0;
  $options = array(
    '' => t('-- Select --'),
  );
  foreach ($lists as $mc_list) {
    $options[$mc_list->id] = $mc_list->name;
  }

  // Grab the fields list.
  $fields = field_info_fields();

  // Remove options for Mailchimp lists that already have fields.
  foreach ($fields as $field) {
    if ($field['type'] == 'mailchimp_lists_subscription') {
      if ($field['id'] != $this_field['id'] && isset($field['settings']['mc_list_id'])) {
        unset($options[$field['settings']['mc_list_id']]);
      }
    }
  }

  // If there are no available lists, provide a warning..
  if (count($options) == 1) {
    $warning = $lists_exist ? 'All available Mailchimp lists are already attached to Mailchimp Subscription Fields.' : 'No available Mailchimp lists exist.';
    $warning .= ' Create a new list at !mc, then !cc.';
    drupal_set_message(t($warning, array(
      '!mc' => l(t('Mailchimp'), 'https://admin.mailchimp.com'),
      '!cc' => l(t('clear your list cache'), 'admin/config/services/mailchimp/list_cache_clear', array(
        'query' => array(
          'destination' => $_GET['q'],
        ),
      )),
    )), 'warning');
    $disabled = TRUE;
  }
  else {
    $disabled = FALSE;
  }
  $form['mc_list_id'] = array(
    '#type' => 'select',
    '#title' => t('Mailchimp List'),
    '#multiple' => FALSE,
    '#description' => t('Available Mailchimp lists which are not already attached to Mailchimp Subscription Fields. If unavailable, make sure you have created a list at !Mailchimp first, then !cacheclear.', array(
      '!Mailchimp' => l(t('Mailchimp'), 'https://admin.mailchimp.com'),
      '!cacheclear' => l(t('clear your list cache'), 'admin/config/services/mailchimp/list_cache_clear', array(
        'query' => array(
          'destination' => $_GET['q'],
        ),
      )),
    )),
    '#options' => $options,
    '#default_value' => isset($this_field['settings']['mc_list_id']) ? $this_field['settings']['mc_list_id'] : FALSE,
    '#required' => TRUE,
    '#disabled' => $disabled,
  );
  $form['double_opt_in'] = array(
    '#type' => 'checkbox',
    '#title' => t('Require subscribers to Double Opt-in'),
    '#description' => t('New subscribers will be sent a link with an email they must follow to confirm their subscription.'),
    '#default_value' => isset($this_field['settings']['double_opt_in']) ? $this_field['settings']['double_opt_in'] : FALSE,
    '#disabled' => $disabled,
  );
  $form['unsubscribe_action'] = array(
    '#type' => 'radios',
    '#title' => t('Action to take when unchecking this field'),
    '#description' => t('When this field gets unchecked you can choose if the subscriber gets unsubscribed (to keep the subscriber data in Mailchimp) or completely removed from the Mailchimp list.'),
    '#options' => array(
      'unsubscribe' => t('Unsubscribe from list'),
      'remove' => t('Remove from list'),
    ),
    '#default_value' => isset($this_field['settings']['unsubscribe_action']) ? $this_field['settings']['unsubscribe_action'] : 'remove',
  );
  return $form;
}