function mailchimp_lists_field_widget_form in Mailchimp 7.3
Same name and namespace in other branches
- 7.5 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_widget_form()
- 7.4 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_widget_form()
Implements hook_field_widget_form().
File
- modules/
mailchimp_lists/ includes/ mailchimp_lists.field.inc, line 329 - Field hooks.
Code
function mailchimp_lists_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$default = isset($instance['default_value'][0]['subscribe']) ? $instance['default_value'][0]['subscribe'] : FALSE;
$email = NULL;
if (isset($element['#entity'])) {
$email = mailchimp_lists_load_email($instance, $element['#entity'], FALSE);
if ($email) {
$default = mailchimp_is_subscribed($field['settings']['mc_list_id'], $email);
}
}
$element += array(
'#title' => check_plain($element['#title']),
'#type' => 'fieldset',
);
$element['subscribe'] = array(
'#title' => t('Subscribe'),
'#type' => 'checkbox',
'#default_value' => $default || $instance['required'],
'#required' => $instance['required'],
'#disabled' => $instance['required'],
);
if ($instance['settings']['show_interest_groups'] || $form_state['build_info']['form_id'] == 'field_ui_field_edit_form') {
$mc_list = mailchimp_get_list($field['settings']['mc_list_id']);
$element['interest_groups'] = array(
'#type' => 'fieldset',
'#title' => check_plain($instance['settings']['interest_groups_title']),
'#weight' => 100,
'#states' => array(
'invisible' => array(
':input[name="' . $field['field_name'] . '[' . $langcode . '][0][subscribe]"]' => array(
'checked' => FALSE,
),
),
),
);
if ($form_state['build_info']['form_id'] == 'field_ui_field_edit_form') {
$element['interest_groups']['#states']['invisible'] = array(
':input[name="instance[settings][show_interest_groups]"]' => array(
'checked' => FALSE,
),
);
}
$groups_default = isset($instance['default_value'][0]['interest_groups']) ? $instance['default_value'][0]['interest_groups'] : array();
if ($mc_list['stats']['group_count']) {
$element['interest_groups'] += mailchimp_interest_groups_form_elements($mc_list, $groups_default, $email);
}
}
// Make a distinction between whether the field is edited by the system or the user.
// This is important to prevent unwanted subscription overwrites.
// @see _mailchimp_lists_field_postsave()
if (isset($element['#entity'])) {
// The field is edited via the UI.
$element['is_default'] = array(
'#type' => 'value',
'#value' => FALSE,
);
}
else {
// The field is NOT edited via the UI.
$element['is_default'] = array(
'#type' => 'value',
'#value' => TRUE,
);
}
$element['#element_validate'] = array(
'mailchimp_lists_field_widget_form_validate',
);
return $element;
}