You are here

public function UsersForm::buildForm in Notify 8

Same name and namespace in other branches
  1. 2.0.x 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 66

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) {
  $config = $this
    ->config('notify.settings');
  $form['#tree'] = TRUE;
  $form['info'] = [
    '#markup' => '<p>' . $this
      ->t('The following table shows all users that have notifications enabled:') . '</p>',
  ];
  $form['users'] = [];

  // Fetch users with notify enabled.
  $q = \Drupal::database()
    ->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',
    'teasers',
  ]);
  $q
    ->condition('n.status', 1);
  $q
    ->condition('v.status', 1);
  $q
    ->orderBy('v.name');
  $uresult = $q
    ->execute();
  foreach ($uresult as $user) {
    $form['users'][$user->uid] = [];
    $form['users'][$user->uid]['name'] = [
      '#markup' => $user->name,
    ];
    $form['users'][$user->uid]['mail'] = [
      '#markup' => $user->mail,
    ];
    $form['users'][$user->uid]['node'] = [
      '#type' => 'checkbox',
      '#default_value' => $user->node,
    ];
    $form['users'][$user->uid]['comment'] = [
      '#type' => 'checkbox',
      '#default_value' => $user->comment,
    ];
    $form['users'][$user->uid]['teasers'] = [
      '#type' => 'select',
      '#default_value' => $user->teasers,
      '#options' => [
        $this
          ->t('Title only'),
        $this
          ->t('Title + Teaser'),
        $this
          ->t('Title + Body'),
        $this
          ->t('Title + Body + Fields'),
      ],
    ];
    $form['users'][$user->uid]['attempts'] = [
      '#markup' => $user->attempts ? intval($user->attempts) : 0,
    ];
  }
  $form['info2'] = [
    '#markup' => '<p>' . $this
      ->t('You may check/uncheck the checkboxes and the &#8220;How much&#8220;-selection to change the users\' subscription. Press &#8220;Save settings&#8220; to save the settings.') . '</p>',
  ];
  $form['bulk'] = [
    '#title' => $this
      ->t('Bulk subscribe all users'),
    '#type' => 'checkbox',
    '#default_value' => FALSE,
    '#description' => $this
      ->t('Subscribe all non-blocked users that do not already subscribe to notifications.'),
  ];
  return parent::buildForm($form, $form_state);
}