You are here

function auditfiles_used_not_referenced_form in Audit Files 7.4

Same name and namespace in other branches
  1. 7.3 auditfiles.usednotreferenced.inc \auditfiles_used_not_referenced_form()

Generates the report.

Parameters

array $form: The form definition.

array $form_state: The current state of the form.

Return value

array The form definition.

1 string reference to 'auditfiles_used_not_referenced_form'
auditfiles_menu in ./auditfiles.module
Implements hook_menu().

File

./auditfiles.usednotreferenced.inc, line 22
Generates report showing files in file_usage, but not referenced by content.

Code

function auditfiles_used_not_referenced_form(array $form, array &$form_state) {

  // Check to see if the confirmation form needs to be displayed instead of the
  // normal form.
  if (isset($form_state['storage']['confirm'])) {
    return _auditfiles_used_not_referenced_confirm_operation($form, $form_state);
  }
  $output = '<p>' . t("Any file references listed below are in the file_usage\n    database table, but no content is recorded as referencing them. This might\n    mean the content or field has been deleted without deleting the file, or\n    that the files were uploaded by some means other than through a mechanizm\n    that utilized Drupal's file management, and the relationships between files\n    and content have not been made.\n    Click on the basename to get a list\n    of all nodes referencing that base filename (the <strong>Missing\n    references</strong> report only identifies <strong>&lt;img&gt;</strong>\n    and <strong>window.open</strong> references, this may help you identify\n    if the file is referenced by another means).");
  $output .= t('The files in this list are using the %scheme scheme and are
    relative to the files directory path, located at %path.', array(
    '%scheme' => file_default_scheme(),
    '%path' => variable_get('file_' . file_default_scheme() . '_path', conf_path() . '/files'),
  )) . '</p>';
  $form['introduction'] = array(
    '#markup' => $output,
  );

  // Get the records to display.
  // Check to see if the data has been stored.
  if (!empty($form_state['storage']['saved_rows'])) {

    // The data is currently saved, so use that.
    $rows = unserialize($form_state['storage']['saved_rows']);
  }
  else {

    // Check to see if the batch operation was just run. If so, use that data.
    $rows = variable_get('auditfiles_used_not_referenced_files_to_display', array());
    if (empty($rows)) {

      // The data is not saved and the batch operation has not been run, so get
      // the data using the default options.
      $file_ids = _auditfiles_used_not_referenced_get_file_list();
      if (!empty($file_ids)) {
        foreach ($file_ids as $file_id) {
          $rows[$file_id] = _auditfiles_used_not_referenced_get_file_data($file_id);
        }
      }
    }
  }

  // Save the data for later retrieval.
  $form['saved_rows'] = array(
    '#type' => 'hidden',
    '#value' => serialize($rows),
  );

  // Set up the pager.
  if (!empty($rows)) {
    $items_per_page = variable_get('auditfiles_report_options_items_per_page', 50);
    if (!empty($items_per_page)) {
      $current_page = pager_default_initialize(count($rows), $items_per_page);

      // Break the total data set into page sized chunks.
      $pages = array_chunk($rows, $items_per_page, TRUE);
    }
  }

  // Get any specified record selection limiters.
  $record_limiters = _auditfiles_used_not_referenced_get_record_limiters();
  $record_selection = $record_limiters['record_selection'];
  $maximum_records = $record_limiters['maximum_records'];

  // Define the form.
  // Setup the record count and related messages.
  if (!empty($rows)) {
    if ($record_selection == 'batch_sets') {
      $file_count_message = 'Found @count files in this batch set in the file_usage table that are not referenced in content.';
    }
    elseif ($maximum_records > 0) {
      $file_count_message = 'Found at least @count files in the file_usage table that are not referenced in content.';
    }
    else {
      $file_count_message = 'Found @count files in the file_usage table that are not referenced in content.';
    }
    $form_count = format_plural(count($rows), 'Found 1 file in the file_usage table that is not referenced in content.', $file_count_message);
  }
  else {
    $form_count = 'Found no files in the file_usage table that are not referenced in content.';
  }

  // Add the button to batch process the list of results.
  if ($record_selection == 'limited') {
    $batch_size = variable_get('auditfiles_report_options_batch_size', 0);
    if ($batch_size > 0) {
      $form['batch_process'] = array(
        '#type' => 'submit',
        '#value' => t('Load first batch set'),
      );
    }
    else {
      $form['batch_process'] = array(
        '#type' => 'submit',
        '#value' => t('Load all records'),
      );
    }
  }
  elseif ($record_selection == 'batch_sets') {

    // Add the button to load the previous batch set.
    $form['batch_process_prev'] = array(
      '#type' => 'submit',
      '#value' => t('Load previous batch set'),
    );

    // Add the button to load the next batch set.
    $form['batch_process_next'] = array(
      '#type' => 'submit',
      '#value' => t('Load next batch set'),
    );
  }

  // Add the button to reset the record selection.
  if ($record_selection != 'normal') {
    $form['reset_records'] = array(
      '#type' => 'submit',
      '#value' => t('Reset record selection'),
    );
  }
  $form['files'] = array(
    '#type' => 'tableselect',
    '#header' => _auditfiles_used_not_referenced_get_header(),
    '#empty' => t('No items found.'),
    '#prefix' => '<div><em>' . $form_count . '</em></div>',
  );
  if (!empty($rows) && !empty($pages)) {
    $form['files']['#options'] = $pages[$current_page];
  }
  elseif (!empty($rows)) {
    $form['files']['#options'] = $rows;
  }
  else {
    $form['files']['#options'] = array();
  }
  if (!empty($rows)) {
    $form['actions'] = array(
      '#type' => 'actions',
    );
    $form['actions']['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Delete selected items from the file_usage table'),
    );
    $form['pager'] = array(
      '#markup' => theme('pager'),
    );
  }
  return $form;
}