function advagg_get_js_aggregate_contents in Advanced CSS/JS Aggregation 7.2
Given a list of files, grab their contents and glue it into one big string.
Parameters
array $files: Array of filenames.
array $aggregate_settings: Array of settings.
string $aggregate_filename: Filename of the aggregeate.
Return value
string String containing all the files.
3 calls to advagg_get_js_aggregate_contents()
- advagg_does_js_start_with_use_strict in ./
advagg.inc - Given a js string, see if "use strict"; is the first thing ran.
- advagg_generate_filesize_processed in ./
advagg.inc - Given a filename calculate the processed filesize.
- advagg_save_aggregate in ./
advagg.missing.inc - Save an aggregate given a filename, the files included in it, and the type.
File
- ./
advagg.missing.inc, line 1029 - Advanced CSS/JS aggregation module.
Code
function advagg_get_js_aggregate_contents(array $files, array $aggregate_settings, $aggregate_filename = '') {
$write_aggregate = TRUE;
$data = '';
module_load_include('inc', 'advagg', 'advagg');
$info_on_files = advagg_load_files_info_into_static_cache(array_keys($files));
if (!empty($files)) {
// Build aggregate JS file.
foreach ($files as $filename => $settings) {
$contents = '';
// Append a ';' and a newline after each JS file to prevent them from
// running together. Also close any comment blocks.
if (is_readable($filename)) {
$file_contents = (string) @advagg_file_get_contents($filename);
$file_contents_hash = drupal_hash_base64($file_contents);
$cid = 'advagg:file:' . advagg_drupal_hash_base64($filename);
if (empty($info_on_files[$cid]['content_hash'])) {
$results = db_select('advagg_files', 'af')
->fields('af', array(
'content_hash',
'filename_hash',
))
->condition('filename', $filename)
->execute();
foreach ($results as $row) {
$info_on_files['advagg:file:' . $row->filename_hash]['content_hash'] = $row->content_hash;
}
}
if (isset($info_on_files[$cid]['content_hash']) && $info_on_files[$cid]['content_hash'] !== $file_contents_hash) {
// If the content hash doesn't match don't write the file.
$write_aggregate = advagg_missing_file_not_readable($filename, $aggregate_filename, FALSE);
}
// Make sure that the file is ended properly.
$file_contents = trim($file_contents);
if (!empty($file_contents)) {
$file_contents .= "\n;/*})'\"*/\n";
}
if (variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) < 0) {
$file_contents .= "/* Above code came from {$filename} */\n\n";
}
$contents .= $file_contents;
}
else {
// File is not readable.
$write_aggregate = advagg_missing_file_not_readable($filename, $aggregate_filename, TRUE);
}
// Allow other modules to modify this files contents.
// Call hook_advagg_get_js_file_contents_alter().
if (empty($aggregate_settings['settings']['no_alters'])) {
drupal_alter('advagg_get_js_file_contents', $contents, $filename, $aggregate_settings);
}
// Make sure that the file is ended properly.
$contents = trim($contents);
if (!empty($contents)) {
$contents .= ";/*})'\"*/\n";
}
$data .= $contents;
}
}
// Allow other modules to modify this aggregates contents.
// Call hook_advagg_get_js_aggregate_contents_alter().
if (empty($aggregate_settings['settings']['no_alters'])) {
drupal_alter('advagg_get_js_aggregate_contents', $data, $files, $aggregate_settings);
}
return array(
$data,
$write_aggregate,
);
}