Implements hook_advagg_get_info_on_files_alter().
Used to make sure the info is up to date in the cache.
Related topics
File
-
advagg_js_compress/
advagg_js_compress.advagg.inc, line 23
Code
function advagg_js_compress_advagg_get_info_on_files_alter(&$return, $cached_data, $bypass_cache) {
$compressor_list = advagg_js_compress_get_enabled_compressors(array(), -1);
// Get cache ids.
$cache_ids = array();
foreach ($return as $filename => &$info) {
if (empty($info['fileext']) || $info['fileext'] !== 'js') {
continue;
}
// Check the cache.
$cache_id = 'advagg:js_compress:info:' . $info['filename_hash'];
$cache_id .= !empty($info['content_hash']) ? ':' . $info['content_hash'] : '';
$cache_ids[$filename] = $cache_id;
// Verify current data.
$advagg_js_compress = array();
if (!empty($info['advagg_js_compress'])) {
foreach ($info['advagg_js_compress'] as $values) {
$array_key = array_search($values['name'], $compressor_list);
if ($array_key !== FALSE) {
$cache_hits_data[$array_key] = $values;
}
}
}
ksort($advagg_js_compress);
$info['advagg_js_compress'] = $advagg_js_compress;
}
unset($info);
// If no cache ids are found bail out.
if (empty($cache_ids)) {
return;
}
// Get cached values.
$values = array_values($cache_ids);
$cache_hits = cache_get_multiple($values, 'cache_advagg_info');
$compressors = advagg_js_compress_get_enabled_compressors();
$advagg_get_info_on_file_cached_data = drupal_static('advagg_get_info_on_file');
// Add cached values into $return.
$filenames_info = array();
foreach ($cache_ids as $filename => $cache_id) {
$info =& $return[$filename];
// Add in cached values.
if (!empty($cache_hits[$cache_id]) && isset($cache_hits[$cache_id]->data)) {
// Verify cache data.
$cache_hits_data = array();
foreach ($cache_hits[$cache_id]->data as $values) {
$array_key = array_search($values['name'], $compressor_list);
if ($array_key !== FALSE) {
$cache_hits_data[$array_key] = $values;
}
}
ksort($cache_hits_data);
$info['advagg_js_compress'] = array_replace($info['advagg_js_compress'], $cache_hits_data);
}
// Generate missing values if needed.
foreach ($compressors as $id => $name) {
if (empty($info['advagg_js_compress'][$id])) {
$filenames_info[$filename] = $info;
break;
}
// Generate values if bypass cache is set and hashes do not match.
if ($bypass_cache && (empty($advagg_get_info_on_file_cached_data[$info['cache_id']]['content_hash']) || $info['content_hash'] !== $advagg_get_info_on_file_cached_data[$info['cache_id']]['content_hash'])) {
$filenames_info[$filename] = $info;
break;
}
}
}
// Do nothing if compressors are disabled or cache level does not equal 0.
if (empty($compressors) || variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) != 0) {
return;
}
if (!empty($filenames_info)) {
$results = advagg_js_compress_run_mutiple_tests($filenames_info, $compressors);
foreach ($results as $filename => $data) {
$info =& $return[$filename];
if (!empty($info['advagg_js_compress'])) {
$data += $info['advagg_js_compress'];
}
$info['advagg_js_compress'] = $data;
}
}
}