function mailchimp_lists_field_settings_form in Mailchimp 7.4
Same name and namespace in other branches
- 7.5 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_settings_form()
- 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;
}