Given a advagg path this will return the first aggregate it can find.
Paramètres
string $directory: Path to the advagg css/js dir.
string $type: String: css or js.
Return value
string Returns aggregate filename or an empty string on failure.
2 calls to advagg_install_get_first_advagg_file()
- advagg_admin_info_form dans ./
advagg.admin.inc - Form builder; Show info about advagg and advagg settings.
- advagg_install_check_via_http dans ./
advagg.install - Make sure http requests to css/js files work correctly.
Fichier
-
./
advagg.install, line 2442
Code
function advagg_install_get_first_advagg_file($directory, $type) {
module_load_include('inc', 'advagg', 'advagg.missing');
$filename = '';
// Get contents of the advagg directory.
$scanned_directory = @scandir($directory);
// Bailout here if the advagg directory is empty.
if (empty($scanned_directory)) {
// Get a file that will generate from the database.
return advagg_generate_advagg_filename_from_db($type);
}
// Filter list.
$blacklist = array(
'..',
'.',
'.htaccess',
'parts',
);
$scanned_directory = array_diff($scanned_directory, $blacklist);
// Make the last file empty.
$scanned_directory[] = '';
foreach ($scanned_directory as $key => $filename) {
// Skip if filename is not long enough.
$len = strlen($filename);
if ($len < 91 + strlen(ADVAGG_SPACE) * 3) {
continue;
}
// See if this uri contains .gz near the end of it.
$pos = strripos($filename, '.gz', 91 + strlen(ADVAGG_SPACE) * 3);
if (!empty($pos)) {
// If this is a .gz file skip.
if ($pos == $len - 3) {
continue;
}
}
$gzip_filename = $scanned_directory[$key + 1];
$br_filename = $scanned_directory[$key + 1];
if (function_exists('brotli_compress') && defined('BROTLI_TEXT') && variable_get('advagg_brotli', ADVAGG_BROTLI)) {
$gzip_filename = $scanned_directory[$key + 2];
// Skip if the next file does not have a .br extension.
// This can occur if:
// - File is not .br compressed, or,
// - Using s3fs module and only .br compression is set. In
// this case, the advagg_advadgg_save_aggregate_alter()
// function will not add a file extension.
if (strcmp($filename . '.br', $br_filename) !== 0 && (!module_exists('s3fs') || module_exists('s3fs') && variable_get('advagg_gzip', ADVAGG_GZIP))) {
continue;
}
}
else {
// Skip if the next file is a .br file.
if (strcmp($filename . '.br', $br_filename) === 0) {
continue;
}
}
if (variable_get('advagg_gzip', ADVAGG_GZIP)) {
// Skip if the next file does not have a .gz extension.
// This can occur if:
// - File is not .gz compressed, or,
// - Using s3fs module and either:
// - Only .gz compression option is set or,
// - Both .gz and .br compression options are set. In
// this case, the advagg_advagg_save_aggregate_alter()
// function creates a .gz file by default.
if (strcmp($filename . '.gz', $gzip_filename) !== 0 && !module_exists('s3fs')) {
continue;
}
}
else {
// Skip if the next file is a .gz file.
if (strcmp($filename . '.gz', $gzip_filename) === 0) {
continue;
}
}
$data = advagg_get_hashes_from_filename(basename($filename));
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)) {
// All checked passed above, break out of loop.
break;
}
}
}
if (empty($filename)) {
return advagg_generate_advagg_filename_from_db($type);
}
return $filename;
}