You are here

function advagg_get_files_from_hashes in Advanced CSS/JS Aggregation 7.2

Get the files that belong inside of this aggregate.

Parameters

string $type: String: css or js.

string $aggregate_filenames_hash: Hash of the groupings of files.

string $aggregate_contents_hash: Hash of the files contents.

Return value

array List of files in the order they should be included.

3 calls to advagg_get_files_from_hashes()
advagg_admin_get_file_info in ./advagg.admin.inc
Get detailed info about the given filename.
advagg_install_get_first_advagg_file in ./advagg.install
Given a advagg path this will return the first aggregate it can find.
advagg_missing_create_file in ./advagg.missing.inc
Given a filename create that file.

File

./advagg.missing.inc, line 712
Advanced CSS/JS aggregation module.

Code

function advagg_get_files_from_hashes($type, $aggregate_filenames_hash, $aggregate_contents_hash) {

  // Create main query for the advagg_aggregates_versions table.
  $query = db_select('advagg_aggregates_versions', 'aav')
    ->condition('aav.aggregate_filenames_hash', $aggregate_filenames_hash)
    ->condition('aav.aggregate_contents_hash', $aggregate_contents_hash);

  // Create join query for the advagg_aggregates table.
  $subquery_aggregates = $query
    ->join('advagg_aggregates', 'aa', 'aa.aggregate_filenames_hash =
    aav.aggregate_filenames_hash AND aa.aggregate_filenames_hash = :aggregate_filenames_hash', array(
    ':aggregate_filenames_hash' => $aggregate_filenames_hash,
  ));

  // Create join query for the advagg_files table.
  $query
    ->join('advagg_files', 'af', 'af.filename_hash = aa.filename_hash AND
    af.filetype = :type AND af.filesize > 0', array(
    ':type' => $type,
  ));

  // Select fields and ordering of the query; add in query comment as well.
  $query = $query
    ->fields('af', array(
    'filename',
  ))
    ->fields($subquery_aggregates, array(
    'settings',
  ))
    ->orderBy('porder', 'ASC');
  $query
    ->comment('Query called from ' . __FUNCTION__ . '()');
  $results = $query
    ->execute();

  // Add in files that are included in this aggregate.
  $files = array();
  foreach ($results as $value) {
    $files[$value->filename] = unserialize($value->settings);
  }

  // Try again with weak file verification.
  if (empty($files) && variable_get('advagg_weak_file_verification', ADVAGG_WEAK_FILE_VERIFICATION)) {
    if (variable_get('advagg_debug', ADVAGG_DEBUG) >= 2) {
      watchdog('advagg-debug', 'Filehash @filename of type @type has an aggregate_contents_hash variable; the 2rd hash is incorrect.', array(
        '@filename' => $aggregate_filenames_hash,
        '@type' => $type,
      ), WATCHDOG_DEBUG);
    }

    // Create main query for the advagg_aggregates_versions table.
    $query = db_select('advagg_aggregates_versions', 'aav')
      ->condition('aav.aggregate_filenames_hash', $aggregate_filenames_hash);

    // Create join query for the advagg_aggregates table.
    $subquery_aggregates = $query
      ->join('advagg_aggregates', 'aa', 'aa.aggregate_filenames_hash =
      aav.aggregate_filenames_hash AND aa.aggregate_filenames_hash = :aggregate_filenames_hash', array(
      ':aggregate_filenames_hash' => $aggregate_filenames_hash,
    ));

    // Create join query for the advagg_files table.
    $query
      ->join('advagg_files', 'af', 'af.filename_hash = aa.filename_hash AND
      af.filetype = :type', array(
      ':type' => $type,
    ));

    // Select fields and ordering of the query; add in query comment as well.
    $query = $query
      ->fields('af', array(
      'filename',
    ))
      ->fields($subquery_aggregates, array(
      'settings',
    ))
      ->orderBy('porder', 'ASC');
    $query
      ->comment('Query called from ' . __FUNCTION__ . '()');
    $results = $query
      ->execute();

    // Add in files that are included in this aggregate.
    $files = array();
    foreach ($results as $value) {
      $files[$value->filename] = unserialize($value->settings);
    }
  }
  return $files;
}