You are here

public function AuditFilesReferencedNotUsed::buildForm in Audit Files 8.3

Same name and namespace in other branches
  1. 8 src/Form/AuditFilesReferencedNotUsed.php \Drupal\auditfiles\Form\AuditFilesReferencedNotUsed::buildForm()
  2. 8.2 src/Form/AuditFilesReferencedNotUsed.php \Drupal\auditfiles\Form\AuditFilesReferencedNotUsed::buildForm()
  3. 4.x src/Form/AuditFilesReferencedNotUsed.php \Drupal\auditfiles\Form\AuditFilesReferencedNotUsed::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/AuditFilesReferencedNotUsed.php, line 120

Class

AuditFilesReferencedNotUsed
Form for Files referenced not used functionality.

Namespace

Drupal\auditfiles\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this->configFactoryStorage
    ->get('auditfiles.settings');
  $storage =& $form_state
    ->getStorage();
  if (isset($storage['confirm'])) {
    $values = $form_state
      ->getValue('files');
    $form['changelist'] = [
      '#prefix' => '<ul>',
      '#suffix' => '</ul>',
      '#tree' => TRUE,
    ];
    if (!empty($values)) {
      foreach ($values as $reference_id) {
        if (!empty($reference_id)) {
          $reference_id_parts = explode('.', $reference_id);
          if ($storage['op'] == 'add') {
            $message = $this
              ->t('will be added to the file_usage table.');
          }
          elseif ($storage['op'] == 'delete') {
            $message = $this
              ->t('will be deleted from the content.');
          }
          $form['changelist'][$reference_id] = [
            '#type' => 'hidden',
            '#value' => $reference_id,
            '#prefix' => '<li>' . $this
              ->t('File ID') . ' <strong>' . $reference_id_parts[4] . '</strong> ' . $message,
            '#suffix' => "</li>\n",
          ];
        }
        else {
          unset($form_state
            ->getValue('files')[$reference_id]);
        }
      }
    }
    if ($storage['op'] == 'add') {
      $form['#title'] = $this
        ->t('Add these files to the database?');
    }
    elseif ($storage['op'] == 'delete') {
      $form['#title'] = $this
        ->t('Delete these files from the server?');
    }
    $form['actions'] = [
      '#type' => 'actions',
    ];
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => $this
        ->getConfirmText(),
      '#button_type' => 'primary',
    ];
    $form['actions']['cancel'] = ConfirmFormHelper::buildCancelLink($this, $this
      ->getRequest());
    if (!isset($form['#theme'])) {
      $form['#theme'] = 'confirm_form';
    }
    return $form;
  }
  $file_data = $this->filesReferencedNotUsed
    ->auditfilesReferencedNotUsedGetFileList();
  if (!empty($file_data)) {
    foreach ($file_data as $reference_id => $row_data) {
      $rows[$reference_id] = $this->filesReferencedNotUsed
        ->auditfilesReferencedNotUsedGetFileData($row_data);
    }
  }
  if (!empty($rows)) {
    $items_per_page = $config
      ->get('auditfiles_report_options_items_per_page');
    if (!empty($items_per_page)) {
      $current_page = $this->pagerManager
        ->createPager(count($rows), $items_per_page)
        ->getCurrentPage();
      $pages = array_chunk($rows, $items_per_page, TRUE);
    }
  }
  $maximum_records = $config
    ->get('auditfiles_report_options_maximum_records');
  if (!empty($rows)) {
    if ($maximum_records > 0) {
      $file_count_message = $this
        ->t('Found at least @count files referenced in content that are not in the file_usage table.');
    }
    else {
      $file_count_message = $this
        ->t('Found @count files referenced in content that are not in the file_usage table.');
    }
    $form_count = $this
      ->formatPlural(count($rows), $this
      ->t('Found 1 file referenced in content that is not in the file_usage table.'), $file_count_message);
  }
  else {
    $form_count = $this
      ->t('Found no files referenced in content that are not in the file_usage table.');
  }
  $form['files'] = [
    '#type' => 'tableselect',
    '#header' => $this->filesReferencedNotUsed
      ->auditfilesReferencedNotUsedGetHeader(),
    '#empty' => $this
      ->t('No items found.'),
    '#prefix' => '<div><em>' . $form_count . '</em></div>',
  ];

  // Add the data.
  if (!empty($rows) && !empty($pages)) {
    $form['files']['#options'] = $pages[$current_page];
  }
  elseif (!empty($rows)) {
    $form['files']['#options'] = $rows;
  }
  else {
    $form['files']['#options'] = [];
  }

  // Add any action buttons.
  if (!empty($rows)) {
    $form['actions'] = [
      '#type' => 'actions',
    ];
    $form['actions']['add'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Add selected items to the file_usage table'),
      '#submit' => [
        '::submissionHandlerAddToFile',
      ],
    ];
    $text = $this
      ->t('or');
    $form['actions']['markup'] = [
      '#markup' => '&nbsp;' . $text . '&nbsp;',
    ];
    $form['actions']['delete'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Delete selected references'),
      '#submit' => [
        '::submissionHandlerDeleteFromFileUsage',
      ],
    ];
    $form['pager'] = [
      '#type' => 'pager',
    ];
  }
  return $form;
}