You are here

public function SubscriberExportForm::buildForm in Simplenews 3.x

Same name and namespace in other branches
  1. 8.2 src/Form/SubscriberExportForm.php \Drupal\simplenews\Form\SubscriberExportForm::buildForm()
  2. 8 src/Form/SubscriberExportForm.php \Drupal\simplenews\Form\SubscriberExportForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/SubscriberExportForm.php, line 67

Class

SubscriberExportForm
Do a mass subscription for a list of email addresses.

Namespace

Drupal\simplenews\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {

  // Get sensible default values for the form elements in this form.
  $default['states'] = isset($_GET['states']) ? $_GET['states'] : [
    'active' => 'active',
  ];
  $default['subscribed'] = isset($_GET['subscribed']) ? $_GET['subscribed'] : [
    'subscribed' => 'subscribed',
  ];
  $default['newsletters'] = isset($_GET['newsletters']) ? $_GET['newsletters'] : [];
  $form['states'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Status'),
    '#options' => [
      'active' => $this
        ->t('Active users'),
      'inactive' => $this
        ->t('Inactive users'),
    ],
    '#default_value' => $default['states'],
    '#description' => $this
      ->t('Subscriptions matching the selected states will be exported.'),
    '#required' => TRUE,
  ];
  $form['subscribed'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Subscribed'),
    '#options' => [
      'subscribed' => $this
        ->t('Subscribed to the newsletter'),
      'unconfirmed' => $this
        ->t('Unconfirmed to the newsletter'),
      'unsubscribed' => $this
        ->t('Unsubscribed from the newsletter'),
    ],
    '#default_value' => $default['subscribed'],
    '#description' => $this
      ->t('Subscriptions matching the selected subscription states will be exported.'),
    '#required' => TRUE,
  ];
  $options = simplenews_newsletter_list();
  $form['newsletters'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Newsletter'),
    '#options' => $options,
    '#default_value' => $default['newsletters'],
    '#description' => $this
      ->t('Subscriptions matching the selected newsletters will be exported.'),
    '#required' => TRUE,
  ];

  // Get export results and display them in a text area. Only get the results
  // if the form is build after redirect, not after submit.
  $input = $form_state
    ->getUserInput();
  if (isset($_GET['states']) && empty($input)) {
    $form['emails'] = [
      '#type' => 'textarea',
      '#title' => $this
        ->t('Export results'),
      '#cols' => 60,
      '#rows' => 5,
      '#value' => $this
        ->getEmails($_GET['states'], $_GET['subscribed'], $_GET['newsletters']),
    ];
  }
  $form['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Export'),
  ];
  return $form;
}