function mailchimp_lists_list_form_submit in Mailchimp 7.2
Submit handler for mailchimp_lists_list_form().
File
- modules/
mailchimp_lists/ includes/ mailchimp_lists.admin.inc, line 439 - mailchimp_lists module admin settings.
Code
function mailchimp_lists_list_form_submit($form, &$form_state) {
$list = isset($form_state['list']) ? $form_state['list'] : mailchimp_list_create();
$is_new = isset($list->is_new) && $list->is_new;
// Set this value here for use in webhook call below:
$list->mc_list_id = $form_state['values']['mc_list_id'];
$mcapi = mailchimp_get_api_object();
$webhook_ret = FALSE;
// If the webhook was enabled before, check to see if it should be disabled:
if (!empty($list->settings['webhooks'])) {
if (!$is_new && !$form_state['values']['webhooks']) {
$webhook_ret = $mcapi
->listWebhookDel($list->mc_list_id, mailchimp_webhook_url());
}
}
else {
if ($form_state['values']['webhooks']) {
$webhook_ret = $mcapi
->listWebhookAdd($list->mc_list_id, mailchimp_webhook_url(), array(
'subscribe' => FALSE,
'unsubscribe' => TRUE,
'profile' => TRUE,
'cleaned' => TRUE,
'upemail' => TRUE,
'campaign' => FALSE,
), array(
'user' => TRUE,
'admin' => TRUE,
'api' => TRUE,
));
// Handle errors in setting webooks:
if (!$webhook_ret) {
drupal_set_message(t('Unable to connect webhooks: @msg', array(
'@msg' => $mcapi->errorMessage,
)), 'error');
}
}
}
// Check for altered roles.
$added_roles = FALSE;
$removed_roles = FALSE;
// We intuit the anonymous RID based on the Allow Anonymous setting:
$form_state['values']['roles'][DRUPAL_ANONYMOUS_RID] = $form_state['values']['allow_anonymous'];
if (!$is_new) {
foreach ($form_state['values']['roles'] as $role_id => $role) {
$was_on = !empty($form_state['list']->settings['roles'][$role_id]);
$set_on = !empty($role);
if ($was_on && !$set_on) {
$removed_roles = TRUE;
}
if (!$was_on && $set_on) {
$added_roles = TRUE;
}
if ($added_roles && $removed_roles) {
break;
}
}
}
if ($added_roles || $removed_roles) {
mailchimp_lists_queue_existing($list, $removed_roles);
}
$list->label = $form_state['values']['label'];
$list->name = $form_state['values']['name'];
$list->description = $form_state['values']['description'];
$list->settings = array(
'roles' => array_filter($form_state['values']['roles']),
'mergefields' => isset($form_state['values']['mergefields']) ? $form_state['values']['mergefields'] : NULL,
'mergefields_display' => isset($form_state['values']['mergefields_display']) ? $form_state['values']['mergefields_display'] : NULL,
'doublein' => $form_state['values']['doublein'],
'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'],
'form_label' => $form_state['values']['form_label'],
'submit_label' => $form_state['values']['submit_label'],
'include_interest_groups' => $form_state['values']['include_interest_groups'],
'opt_in_interest_groups' => $form_state['values']['opt_in_interest_groups'],
'interest_groups_label' => $form_state['values']['interest_groups_label'],
'cron' => $form_state['values']['cron'],
'webhooks' => $webhook_ret & $form_state['values']['webhooks'],
'allow_anonymous' => $form_state['values']['allow_anonymous'],
'required' => $form_state['values']['required'],
);
if ($ret = mailchimp_lists_save($list)) {
drupal_set_message(t('List @name has been saved.', array(
'@name' => $list->label,
)));
$form_state['redirect'] = 'admin/config/services/mailchimp/lists';
}
else {
drupal_set_message(t('There has been an error saving your list.'), 'error');
}
}