function campaignmonitor_registration_form_user_register_form_alter in Campaign Monitor 8
Same name and namespace in other branches
- 8.2 modules/campaignmonitor_registration/campaignmonitor_registration.module \campaignmonitor_registration_form_user_register_form_alter()
- 7 modules/campaignmonitor_registration/campaignmonitor_registration.module \campaignmonitor_registration_form_user_register_form_alter()
Implements hook_form_BASE_FORM_ID_alter().
Hooks into the registration form and adds the option to select one of the available Campaign Monitor lists on registration.
File
- modules/
campaignmonitor_registration/ campaignmonitor_registration.module, line 21
Code
function campaignmonitor_registration_form_user_register_form_alter(&$form, FormStateInterface &$form_state) {
// Get connected to the API and retrieve the lists.
$lists = campaignmonitor_get_lists();
$config = Drupal::config('campaignmonitor_registration.settings');
// Build options for the form selector.
$options = [];
$option_descriptions = [];
foreach ($lists as $list_id => $list) {
// Check if the list is selected to be shown.
$list_options = campaignmonitor_get_list_settings($list_id);
if (campaignmonitor_is_list_enabled($list_id) && $list_options && isset($list_options['display']['registration']) && $list_options['display']['registration']) {
$options[$list_id] = $list['name'];
$defaults = campaignmonitor_get_list_settings($list_id);
if (isset($defaults['display']['description'])) {
$option_descriptions[$list_id] = $defaults['display']['description'];
}
}
}
if (!empty($options)) {
$form['campaignmonitor'] = [
'#type' => 'fieldset',
'#title' => t('News lists'),
];
$defaults = campaignmonitor_get_lists();
$form['campaignmonitor']['lists'] = [
'#type' => 'checkboxes',
'#description' => !empty($defaults['instructions']) ? t($defaults['instructions']) : t('Select the news lists that you want to subscribe to.'),
'#options' => $options,
'#option_descriptions' => $option_descriptions,
'#after_build' => array(
'_campaignmonitor_registration_option_descriptions',
),
];
}
foreach (array_keys($form['actions']) as $action) {
if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
$form['actions'][$action]['#submit'][] = 'campaignmonitor_registration_form_user_register_submit';
}
}
}