diff --git a/modules/mailchimp_lists/mailchimp_lists.admin.inc b/modules/mailchimp_lists/mailchimp_lists.admin.inc index 386e16c..874fbc4 100644 --- a/modules/mailchimp_lists/mailchimp_lists.admin.inc +++ b/modules/mailchimp_lists/mailchimp_lists.admin.inc @@ -198,6 +198,18 @@ function mailchimp_lists_list_form($form, &$form_state, $list = NULL) { ), ), ); + $form['list_settings']['settings']['show_user_edit_form'] = array( + '#type' => 'checkbox', + '#title' => t('Show Subscription Options in the user edit form'), + '#description' => t('If set, newsletter subscriptions will be added to the user edit form rather than in a new tab'), + '#default_value' => isset($list->settings['show_user_edit_form']) ? $list->settings['show_user_edit_form'] : FALSE, + '#states' => array( + // only show for optional lists + 'visible' => array( + ':input[name="list_type"]' => array('value' => MAILCHIMP_LISTTYPE_OPTIONAL), + ), + ), + ); $form['list_settings']['settings']['include_interest_groups'] = array( '#type' => 'checkbox', '#title' => t('Include interest groups on subscription form.'), @@ -470,6 +482,7 @@ function mailchimp_lists_list_form_submit($form, &$form_state) { 'show_register_form' => $form_state['values']['show_register_form'], 'default_register_form_optin' => $form_state['values']['default_register_form_optin'], 'show_account_form' => $form_state['values']['show_account_form'], + 'show_user_edit_form' => $form_state['values']['show_user_edit_form'], 'include_interest_groups' => $form_state['values']['include_interest_groups'], 'interest_groups_label' => $form_state['values']['interest_groups_label'], 'cron' => $form_state['values']['cron'], diff --git a/modules/mailchimp_lists/mailchimp_lists.module b/modules/mailchimp_lists/mailchimp_lists.module index fc8dc84..9fa2ddd 100644 --- a/modules/mailchimp_lists/mailchimp_lists.module +++ b/modules/mailchimp_lists/mailchimp_lists.module @@ -587,7 +587,7 @@ function mailchimp_lists_auth_newsletter_form(&$form, $list, $account) { * Submit handler to add users to lists when editing/creating a user */ function mailchimp_lists_user_subscribe_form_submit($form, &$form_state) { - $account = $form_state['values']['account']; + $account = isset($form_state['user']) ? $form_state['user'] : $form_state['values']['account']; $mcapi = mailchimp_get_api_object(); foreach ($form_state['values']['mailchimp_lists'] as $form_list) { $list = $form_list['list']; @@ -899,3 +899,52 @@ function mailchimp_lists_queue_existing($list) { return $count; } + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function mailchimp_lists_form_user_profile_form_alter(&$form, &$form_state, $form_id) { + $account = $form['#user']; + + $lists = mailchimp_lists_get_available_lists($account, + MAILCHIMP_LISTTYPE_OPTIONAL, array('show_user_edit_form' => 1)); + + if (!empty($lists)) { + // wrap in a fieldset + $form['mailchimp_lists'] = array( + '#type' => 'fieldset', + '#title' => t('Newsletters'), + '#tree' => TRUE, + ); + foreach ($lists as $list) { + mailchimp_lists_auth_newsletter_form($form['mailchimp_lists'], $list, $account); + } + + // Add the submit handler. + $form['#submit'][] = 'mailchimp_lists_user_subscribe_form_submit'; + } + +} + +/** + * Implement hook_field_extra_fields(). + */ +function mailchimp_lists_field_extra_fields() { + $extra['user']['user'] = array( + 'form' => array( + 'mailchimp_lists' => array( + 'label' => t('Newsletters'), + 'description' => t('Mailchimp lists'), + 'weight' => -4, + ), + ), + 'display' => array( + 'mailchimp_lists' => array( + 'label' => t('Newsletters'), + 'description' => t('Mailchimp lists'), + 'weight' => 0, + ), + ), + ); + return $extra; +}