You are here

function campaignmonitor_registration_form_user_register_form_alter in Campaign Monitor 8

Same name and namespace in other branches
  1. 8.2 modules/campaignmonitor_registration/campaignmonitor_registration.module \campaignmonitor_registration_form_user_register_form_alter()
  2. 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';
    }
  }
}