You are here

public function UsersForm::buildForm in Notify 2.0.x

Same name and namespace in other branches
  1. 8 src/Form/UsersForm.php \Drupal\notify\Form\UsersForm::buildForm()
  2. 1.0.x src/Form/UsersForm.php \Drupal\notify\Form\UsersForm::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 ConfigFormBase::buildForm

File

src/Form/UsersForm.php, line 67

Class

UsersForm
Defines a form that configures forms module settings.

Namespace

Drupal\notify\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
  $db_connection = \Drupal::database();
  $form['#tree'] = TRUE;
  $form['info'] = [
    '#markup' => '<p>' . $this
      ->t('The following table shows all users that have notifications enabled:') . '</p>',
  ];

  // Fetch users with notify enabled.
  $q = $db_connection
    ->select('notify', 'n');
  $q
    ->join('users', 'u', 'n.uid = u.uid');
  $q
    ->join('users_field_data', 'v', 'n.uid = v.uid');
  $q
    ->fields('v', [
    'uid',
    'name',
    'mail',
    'langcode',
  ]);
  $q
    ->fields('n', [
    'status',
    'node',
    'comment',
    'attempts',
  ]);
  $q
    ->condition('n.status', 1);
  $q
    ->condition('v.status', 1);
  $q
    ->orderBy('v.name');
  $uresult = $q
    ->execute();
  $form['settings'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('List of users'),
  ];
  $form['settings']['table'] = [
    '#tree' => TRUE,
    '#type' => 'table',
    '#header' => [
      $this
        ->t('Username'),
      $this
        ->t('E-mail Address'),
      $this
        ->t('Content'),
      $this
        ->t('Comment'),
      $this
        ->t('Failed Attempts'),
    ],
    '#id' => 'notify_settings_table',
  ];
  foreach ($uresult as $user) {
    $form['settings']['table'][$user->uid]['username'] = [
      '#markup' => $user->name,
    ];
    $form['settings']['table'][$user->uid]['mail'] = [
      '#markup' => $user->mail,
    ];
    $form['settings']['table'][$user->uid]['node'] = [
      '#type' => 'checkbox',
      '#default_value' => $user->node,
    ];
    $form['settings']['table'][$user->uid]['comment'] = [
      '#type' => 'checkbox',
      '#default_value' => $user->comment,
    ];
    $form['settings']['table'][$user->uid]['attempts'] = [
      '#markup' => $user->attempts ? intval($user->attempts) : 0,
    ];
  }
  $form['info2'] = [
    '#markup' => '<p>' . $this
      ->t("You may check/uncheck the checkboxes to change the users' subscription. Press “Save settings” to save the settings.") . '</p>',
  ];
  $form['bulk'] = [
    '#title' => $this
      ->t('Bulk-subscribe all unsubscribed users'),
    '#type' => 'checkbox',
    '#default_value' => FALSE,
    '#description' => $this
      ->t('Apply “Default Settings” to <em>all</em> non-blocked users that do not already subscribe to notifications. Users that already has enabled “Receive email notifications” under their “Notify Settings” will not be affected.'),
  ];
  return parent::buildForm($form, $form_state);
}