You are here

function campaignmonitor_user_form in Campaign Monitor 7

Same name and namespace in other branches
  1. 5.2 campaignmonitor.module \campaignmonitor_user_form()
  2. 5 campaignmonitor.module \campaignmonitor_user_form()
  3. 6 campaignmonitor.module \campaignmonitor_user_form()
  4. 6.2 campaignmonitor.module \campaignmonitor_user_form()

Builds the selection list for the user profile page.

1 string reference to 'campaignmonitor_user_form'
campaignmonitor_user_menu in modules/campaignmonitor_user/campaignmonitor_user.module
Implements hook_menu().

File

modules/campaignmonitor_user/campaignmonitor_user.module, line 53
Tab to the profile page to select newsletters to subscribe to.

Code

function campaignmonitor_user_form() {
  global $user;
  $form = [];

  // Get connected to the API and get lists.
  $cm = CampaignMonitor::getConnector();
  $lists = $cm
    ->getLists();

  // Build options for the form selector.
  $options = [];
  $default = [];
  foreach ($lists as $list_id => $list) {

    // Check if the list is selected to be shown.
    $list_options = variable_get('campaignmonitor_list_' . $list_id, []);
    if (campaignmonitor_is_list_enabled($list_id) && isset($list_options['display']['user']) && $list_options['display']['user']) {
      $options[$list_id] = $list['name'];

      // Check if the user is subscribed to the current list.
      $default[$list_id] = 0;
      if ($cm
        ->isSubscribed($list_id, $user->mail)) {
        $default[$list_id] = $list_id;
      }
    }
  }
  $defaults = variable_get('campaignmonitor_general', []);
  if (!empty($options)) {
    $form['lists'] = [
      '#type' => 'checkboxes',
      '#title' => t('News lists'),
      '#description' => !empty($defaults['instructions']) ? t('%instructions', [
        '%instructions' => $defaults['instructions'],
      ]) : t('Select the news lists that you want to subscribe to.'),
      '#options' => $options,
      '#default_value' => $default,
    ];
    $form['submit'] = [
      '#type' => 'submit',
      '#value' => t('Update subscriptions'),
    ];
  }
  else {
    drupal_set_message(t('There are no available lists to subscribe to at the moment.'), 'warning');
  }
  $form['#submit'][] = 'campaignmonitor_user_form_submit';
  return $form;
}