You are here

function auditfiles_not_on_server_form in Audit Files 7.4

Same name and namespace in other branches
  1. 7.3 auditfiles.notonserver.inc \auditfiles_not_on_server_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_not_on_server_form'
auditfiles_menu in ./auditfiles.module
Implements hook_menu().

File

./auditfiles.notonserver.inc, line 22
Generates a report showing files in the database, but not on the server.

Code

function auditfiles_not_on_server_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_not_on_server_confirm_operation($form, $form_state);
  }
  $output = '<p>' . t('Any files listed below are in the file_managed database
    table but the physical files do not exist on the server. This might mean the
    file has been deleted using a program such as FTP, or it may mean there is
    an error in the database. You should determine if the file is still being
    used or not and either replace the missing file or delete the references to
    it from the database.') . '</p>';
  $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_not_on_server_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_not_on_server_get_file_list();
      if (!empty($file_ids)) {
        $date_format = variable_get('auditfiles_report_options_date_format', 'long');
        foreach ($file_ids as $file_id) {
          $row = _auditfiles_not_on_server_get_file_data($file_id, $date_format);
          if (isset($row)) {
            $rows[$file_id] = $row;
          }
        }
      }
    }
  }

  // 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_not_on_server_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 database that are not on the server.';
    }
    elseif ($maximum_records > 0) {
      $file_count_message = 'Found at least @count files in the database that are not on the server.';
    }
    else {
      $file_count_message = 'Found @count files in the database that are not on the server.';
    }
    $form_count = format_plural(count($rows), 'Found 1 file in the database that is not on the server.', $file_count_message);
  }
  else {
    $form_count = 'Found no files in the database that are not on the server.';
  }

  // 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_not_on_server_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 database'),
    );
    $form['pager'] = array(
      '#markup' => theme('pager'),
    );
  }
  return $form;
}