function css_emimage_advagg_build_aggregate_plans_alter in CSS Embedded Images 7
Implements hook_advagg_build_aggregate_plans_alter().
File
- ./
css_emimage.advagg.inc, line 35 - CSS Embedded Images module.
Code
function css_emimage_advagg_build_aggregate_plans_alter(&$files, &$modified, $type) {
if ($type != 'css') {
return;
}
if (!variable_get('css_emimage_files', CSS_EMIMAGE_FILES)) {
return;
}
// Save all 3 operating modes into hooks hash.
$modes = array(
'base' => '',
'emimage' => '',
'orginal' => '',
);
foreach ($modes as $mode => &$value) {
$GLOBALS['conf']['css_emimage_mode'] = $mode;
drupal_static_reset('advagg_get_current_hooks_hash');
drupal_static_reset('advagg_current_hooks_hash_array');
$value = advagg_get_current_hooks_hash();
}
$filename_hashes =& drupal_static('advagg_get_info_on_file');
$new_files = array();
foreach ($files as $filename => $data) {
$total_base64_size = 0;
foreach ($data['files'] as $fileinfo) {
// Only run if css is not browser specific.
if (!empty($fileinfo['browsers']) && ($fileinfo['browsers']['!IE'] !== TRUE || $fileinfo['browsers']['IE'] !== TRUE)) {
continue;
}
if (!isset($fileinfo['css_emimage']) || !is_array($fileinfo['css_emimage'])) {
css_emimage_advagg_scan_for_changes($fileinfo['data'], TRUE);
// Cache info.
$cache_id = 'advagg:file:' . $fileinfo['filename_hash'];
$fileinfo = isset($filename_hashes[$cache_id]) ? $filename_hashes[$cache_id] : NULL;
}
// Skip if no css images are in here.
if (empty($fileinfo['css_emimage'])) {
continue;
}
foreach ($fileinfo['css_emimage'] as $image_name => $image_info) {
$total_base64_size += $image_info['base64_size'];
}
}
// No css images; skip.
if (empty($total_base64_size)) {
$new_files[$filename] = $data;
continue;
}
// Create new files to handle the extra data.
// Add in the base file.
if ($total_base64_size > variable_get('css_emimage_inline_datauri_limit', CSS_EMIMAGE_INLINE_DATAURI_LIMIT)) {
$base_filename = css_emimage_replace_filename($filename, $modes['base']);
$new_files[$base_filename] = $data;
foreach ($new_files[$base_filename]['files'] as $key => $fileinfo) {
$new_files[$base_filename]['files'][$key]['browsers'] = array(
'IE' => 'gte IE 8',
);
}
}
// Add in the css embedded file.
$emimage_filename = css_emimage_replace_filename($filename, $modes['emimage']);
$new_files[$emimage_filename] = $data;
foreach ($new_files[$emimage_filename]['files'] as $key => $fileinfo) {
$new_files[$emimage_filename]['files'][$key]['browsers'] = array(
'IE' => 'gte IE 8',
);
}
// Add in the IE fallback file (orginal file).
$new_files[$filename] = $data;
foreach ($new_files[$filename]['files'] as $key => $fileinfo) {
$new_files[$filename]['files'][$key]['browsers'] = array(
'!IE' => FALSE,
'IE' => 'lte IE 7',
);
}
}
$files = $new_files;
}