You are here

public function ContentConfirmForm::buildForm in GatherContent 8.3

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 ConfirmFormBase::buildForm

1 call to ContentConfirmForm::buildForm()
ContentUpdateConfirmForm::buildForm in src/Form/ContentUpdateConfirmForm.php
Form constructor.
1 method overrides ContentConfirmForm::buildForm()
ContentUpdateConfirmForm::buildForm in src/Form/ContentUpdateConfirmForm.php
Form constructor.

File

src/Form/ContentConfirmForm.php, line 111

Class

ContentConfirmForm
Provides a node deletion confirmation form.

Namespace

Drupal\gathercontent\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildForm($form, $form_state);
  $created_mapping_ids = Mapping::loadMultiple();
  $projects = $contents = [];
  $mapping_array = [];
  foreach ($created_mapping_ids as $mapping) {

    /** @var \Drupal\gathercontent\Entity\Mapping $mapping */
    if ($mapping
      ->hasMapping()) {
      $projects[$mapping
        ->getGathercontentProjectId()] = $mapping
        ->getGathercontentProject();
      $mapping_array[$mapping
        ->id()] = [
        'gc_template' => $mapping
          ->getGathercontentTemplate(),
        'ct' => $mapping
          ->getContentTypeName(),
      ];
    }
  }
  $nodes = Node::loadMultiple($this->nodeIds);
  $selected_projects = [];
  $content_obj = new Content();
  foreach ($created_mapping_ids as $mapping) {
    if (!in_array($mapping
      ->getGathercontentProjectId(), $selected_projects)) {
      $selected_projects[] = $mapping
        ->getGathercontentProjectId();
      $content = $content_obj
        ->getContents($mapping
        ->getGathercontentProjectId());
      foreach ($content as $c) {
        $single_content = [];
        $single_content['gc_updated'] = $c->updated_at;
        $single_content['status'] = $c->status;
        $single_content['name'] = $c->name;
        $single_content['project_id'] = $c->project_id;
        $contents[$c->id] = $single_content;
      }
    }
  }
  $base_url = 'http://' . \Drupal::config('gathercontent.settings')
    ->get('gathercontent_urlkey') . '.gathercontent.com/item/';
  $content_table = [];
  foreach ($nodes as $item) {

    /** @var Drupal\node\Entity\Node $item */
    $content_table[$item
      ->id()] = [
      'status' => [
        'data' => [
          'color' => [
            '#type' => 'html_tag',
            '#tag' => 'div',
            '#value' => ' ',
            '#attributes' => [
              'style' => 'width:20px; height: 20px; float: left; margin-right: 5px; background: ' . $contents[$item->gc_id->value]['status']->data->color,
            ],
          ],
          'label' => [
            '#plain_text' => $contents[$item->gc_id->value]['status']->data->name,
          ],
        ],
        'class' => [
          'gc-item',
          'status-item',
        ],
      ],
      'gathercontent_project' => [
        'data' => $projects[$contents[$item->gc_id->value]['project_id']],
      ],
      'title' => [
        'data' => $item
          ->getTitle(),
        'class' => [
          'gc-item',
          'gc-item--name',
        ],
      ],
      'gathercontent_title' => [
        'data' => $contents[$item->gc_id->value]['name'],
      ],
      'gathercontent_updated' => [
        'data' => date('F d, Y - H:i', strtotime($contents[$item->gc_id->value]['gc_updated']->date)),
        'class' => [
          'gc-item',
          'gc-item-date',
        ],
        'data-date' => date('Y-m-d.H:i:s', strtotime($contents[$item->gc_id->value]['gc_updated']->date)),
      ],
      'drupal_updated' => [
        'data' => date('F d, Y - H:i', $item
          ->getChangedTime()),
        'class' => [
          'gc-item',
          'gc-item-date',
        ],
        'data-date' => date('Y-m-d.H:i:s', $item
          ->getChangedTime()),
      ],
      'content_type' => [
        'data' => $mapping_array[$item->gc_mapping_id->value]['ct'],
      ],
      'gathercontent_template' => [
        'data' => $mapping_array[$item->gc_mapping_id->value]['gc_template'],
        'class' => [
          'template-name-item',
        ],
      ],
      'drupal_open' => [
        'data' => Link::fromTextAndUrl($this
          ->t('Open'), Url::fromUri('entity:node/' . $item
          ->id()))
          ->toRenderable(),
      ],
      'gathercontent_open' => [
        'data' => Link::fromTextAndUrl($this
          ->t('Open'), Url::fromUri($base_url . $item->gc_id->value))
          ->toRenderable(),
      ],
    ];
  }
  $header = [
    'status' => $this
      ->t('Status'),
    'gathercontent_project' => $this
      ->t('GatherContent project'),
    'title' => $this
      ->t('Item Name'),
    'gathercontent_title' => $this
      ->t('GatherContent item name'),
    'drupal_updated' => $this
      ->t('Last updated in Drupal'),
    'gathercontent_updated' => $this
      ->t('Last updated in GatherContent'),
    'content_type' => $this
      ->t('Content type name'),
    'gathercontent_template' => $this
      ->t('GatherContent template'),
    'drupal_open' => $this
      ->t('Open in Drupal'),
    'gathercontent_open' => $this
      ->t('Open in GatherContent'),
  ];
  $form['nodes'] = [
    '#type' => 'table',
    '#header' => $header,
    '#rows' => $content_table,
    '#empty' => t('No content available.'),
  ];
  return $form;
}