You are here

function advagg_admin_get_file_info in Advanced CSS/JS Aggregation 7.2

Get detailed info about the given filename.

Parameters

string $filename: Name of file to lookup.

Return value

array Returns an array of detailed info about this file.

Related topics

2 calls to advagg_admin_get_file_info()
advagg_admin_get_file_info_callback in ./advagg.admin.inc
Display file info via ajax callback.
advagg_admin_get_file_info_submit in ./advagg.admin.inc
Display file info in a drupal message.

File

./advagg.admin.inc, line 1469
Admin page callbacks for the advanced CSS/JS aggregation module.

Code

function advagg_admin_get_file_info($filename) {
  module_load_include('inc', 'advagg', 'advagg.missing');
  module_load_include('inc', 'advagg', 'advagg');

  // Strip quotes and trim.
  $filename = trim(str_replace(array(
    '"',
    "'",
  ), '', $filename));
  $data = advagg_get_hashes_from_filename(basename($filename));
  $output = array();
  if (is_array($data)) {
    list($type, $aggregate_filenames_hash, $aggregate_contents_hash) = $data;

    // Get a list of files.
    $files = advagg_get_files_from_hashes($type, $aggregate_filenames_hash, $aggregate_contents_hash);
    if (empty($files)) {
      list($css_path, $js_path) = advagg_get_root_files_dir();

      // Skip if the file exists.
      if ($type === 'css') {
        $uri = $css_path[0] . '/' . $filename;
      }
      elseif ($type === 'js') {
        $uri = $js_path[0] . '/' . $filename;
      }
      if (file_exists($uri)) {
        $atime = advagg_get_atime($aggregate_filenames_hash, $aggregate_contents_hash, $uri);
        if (REQUEST_TIME - $atime > variable_get('drupal_stale_file_threshold', 2592000)) {
          $files = t('This is an old aggregate, it should be deleted on the next cron run.');
        }
        else {
          $files = t('This is an old aggregate, it should be deleted on the cron run after !time.', array(
            '!time' => format_interval(variable_get('drupal_stale_file_threshold', 2592000) - (REQUEST_TIME - $atime)),
          ));
        }
      }
      else {
        $files = t('This aggregate file no longer exists.');
      }
    }
    $data['files'] = $files;

    // Get detailed info on each file.
    $files_info_filenames = array();
    foreach ($data['files'] as $filename => &$info) {
      $files_info_filenames[] = $filename;
    }
    unset($info);

    // Get filesystem data.
    $files_info = advagg_get_info_on_files($files_info_filenames);
    foreach ($data['files'] as $filename => &$info) {
      $info += $files_info[$filename];
      if (module_exists('advagg_bundler')) {
        $bundler = advagg_bundler_analysis($filename);
        $info['group_hash'] = $bundler['group_hash'];
      }
    }
    unset($info);
    $output = $data;
  }
  else {
    $results = db_select('advagg_files', 'af')
      ->fields('af')
      ->condition('filename', '%' . db_like($filename), 'LIKE')
      ->execute();
    while ($row = $results
      ->fetchAssoc()) {
      $row += advagg_get_info_on_file($row['filename']);
      if (module_exists('advagg_bundler')) {
        $bundler = advagg_bundler_analysis($row['filename']);
        $row['group_hash'] = $bundler['group_hash'];
      }
      $output[] = $row;
    }
  }
  return $output;
}