You are here

public function AnonymousPublishingClAdminModeration::buildForm in Anonymous Publishing 8

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

modules/anonymous_publishing_cl/src/Form/AnonymousPublishingClAdminModeration.php, line 52

Class

AnonymousPublishingClAdminModeration
This class defines the moderation setting form for this module, available at : admin/config/people/anonymous_publishing_cl/moderation

Namespace

Drupal\anonymous_publishing_cl\Form

Code

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

  // Build an 'Update options' form.
  $form['options'] = array(
    '#type' => 'details',
    '#title' => $this
      ->t('Update options'),
    '#open' => TRUE,
    '#attributes' => array(
      'class' => array(
        'container-inline',
      ),
    ),
  );
  $options = array(
    'publish' => $this
      ->t('Publish the selected items'),
    'unpublish' => $this
      ->t('Unpublish the selected items'),
  );
  $form['options']['operation'] = array(
    '#type' => 'select',
    '#title' => $this
      ->t('Action'),
    '#title_display' => 'invisible',
    '#options' => $options,
    '#default_value' => 'publish',
  );
  $form['options']['submit'] = array(
    '#type' => 'submit',
    '#value' => $this
      ->t('Update'),
  );
  $form['apm_info'] = [
    '#markup' => t('<p>The following table shows all nodes that have been verified by email. You may publish or unpublish by selecting the corresponding line(s) and perform the update action.</p>'),
  ];
  $header = array(
    'title' => array(
      'data' => $this
        ->t('Title'),
      'specifier' => 'title',
      'sort' => 'desc',
    ),
    'type' => array(
      'data' => $this
        ->t('Type'),
      'class' => array(
        RESPONSIVE_PRIORITY_MEDIUM,
      ),
    ),
    'email' => array(
      'data' => $this
        ->t('Email'),
    ),
    'published' => array(
      'data' => $this
        ->t('Published'),
      'sort' => 'desc',
      'specifier' => 'published',
    ),
  );
  $options = array();
  $hidden_values = array();

  // Fetch all nodes that has been verified.
  $results = $this
    ->getAllContentsToModerate($header);
  foreach ($results as $row) {

    // Retrieve the title and status of the comment or node depending on
    // nature.
    if ($row->cid) {
      $comment = Comment::load($row->cid);
      if ($comment) {
        $title = $comment
          ->getSubject();
        $url = $comment
          ->permalink();
        $status = $comment
          ->isPublished() ? $this
          ->t('Published') : $this
          ->t('Unpublished');
      }
      else {
        $title = $this
          ->t('-deleted-');
        $url = null;
        $status = $this
          ->t('Unpublished');
      }
      $type = 'comment';
      $id = $row->cid;
    }
    else {
      $node = Node::load($row->nid);
      if ($node) {
        $title = $node
          ->getTitle();
        $url = Url::fromUri($node
          ->toUrl('canonical', array(
          'absolute' => TRUE,
        ))
          ->toString());
        $status = $node
          ->isPublished() ? $this
          ->t('Published') : $this
          ->t('Unpublished');
      }
      else {
        $title = $this
          ->t('-deleted-');
        $url = null;
        $status = $this
          ->t('Unpublished');
      }
      $type = 'node';
      $id = $row->nid;
    }
    if ($url) {
      $datatitle = array(
        '#type' => 'link',
        '#title' => Html::escape($title),
        '#url' => $url,
      );
    }
    else {
      $datatitle = array(
        '#markup' => Html::escape($title),
      );
    }
    $options[$id] = array(
      'title' => array(
        'data' => $datatitle,
      ),
      'type' => array(
        'data' => array(
          '#markup' => $this
            ->t($type),
        ),
      ),
      'email' => array(
        'data' => array(
          '#markup' => $row->email,
        ),
      ),
      'published' => array(
        'data' => array(
          '#markup' => $status,
        ),
      ),
    );
    $hidden_values[$row->nid] = $type;
  }
  $form['hidden_values'] = array(
    '#type' => 'hidden',
    '#value' => serialize($hidden_values),
  );
  $form['items'] = array(
    '#type' => 'tableselect',
    '#header' => $header,
    '#options' => $options,
    '#empty' => $this
      ->t('There is no verified content to moderate.'),
  );
  $form['pager'] = array(
    '#type' => 'pager',
  );
  return $form;
}