You are here

public function AuditFilesUsedNotManaged::buildForm in Audit Files 4.x

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

Class

AuditFilesUsedNotManaged
Class for file used but not managed.

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,
    ];

    // Prepare the list of items to present to the user.
    if (!empty($values)) {
      foreach ($values as $file_id) {
        if (!empty($file_id)) {
          $form['changelist'][$file_id] = [
            '#type' => 'hidden',
            '#value' => $file_id,
            '#prefix' => '<li>' . $this
              ->t('File ID') . ' <strong>' . $file_id . '</strong> ' . $this
              ->t('will be deleted from the file_usage table.'),
            '#suffix' => "</li>\n",
          ];
        }
        else {
          unset($form_state
            ->getValue('files')[$file_id]);
        }
      }
    }
    $form['#title'] = $this
      ->t('Delete these items from the file_usage table?');
    $form['#attributes']['class'][] = 'confirmation';
    $form['actions'] = [
      '#type' => 'actions',
    ];
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => $this
        ->getConfirmText(),
      '#button_type' => 'primary',
      '#submit' => [
        '::confirmSubmissionHandlerDeleteFile',
      ],
    ];
    $form['actions']['cancel'] = ConfirmFormHelper::buildCancelLink($this, $this
      ->getRequest());
    if (!isset($form['#theme'])) {
      $form['#theme'] = 'confirm_form';
    }
    return $form;
  }
  $file_ids = $this->filesUsedNotManaged
    ->auditfilesUsedNotManagedGetFileList();
  if (!empty($file_ids)) {
    foreach ($file_ids as $file_id) {
      $rows[$file_id] = $this->filesUsedNotManaged
        ->auditfilesUsedNotManagedGetFileData($file_id);
    }
  }

  // Set up the pager.
  if (!empty($rows)) {
    $items_per_page = $config
      ->get('auditfiles_report_options_items_per_page') ? $config
      ->get('auditfiles_report_options_items_per_page') : 50;
    if (!empty($items_per_page)) {
      $current_page = $this->pagerManager
        ->createPager(count($rows), $items_per_page)
        ->getCurrentPage();
      $pages = array_chunk($rows, $items_per_page, TRUE);
    }
  }

  // Setup the record count and related messages.
  $maximum_records = $config
    ->get('auditfiles_report_options_maximum_records') ? $config
    ->get('auditfiles_report_options_maximum_records') : 50;
  if (!empty($rows)) {
    if ($maximum_records > 0) {
      $file_count_message = $this
        ->t('Found at least @count files in the file_usage table that are not in the file_managed table.');
    }
    else {
      $file_count_message = $this
        ->t('Found @count files in the file_usage table that are not in the file_managed table.');
    }
    $form_count = $this
      ->formatPlural(count($rows), $this
      ->t('Found 1 file in the file_usage table that is not in the file_managed table.'), $file_count_message);
  }
  else {
    $form_count = $this
      ->t('Found no files in the file_usage table that are not in the file_managed table.');
  }

  // Create the form table.
  $form['files'] = [
    '#type' => 'tableselect',
    '#header' => $this->filesUsedNotManaged
      ->auditfilesUsedNotManagedGetHeader(),
    '#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']['submit'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Delete selected items from the file_usage table'),
    ];
    $form['pager'] = [
      '#type' => 'pager',
    ];
  }
  return $form;
}