Implements hook_advagg_save_aggregate_alter().

Used to add in a .gz file if none exits and use packer on non gzip file.

Related topics

File

advagg_js_compress/advagg_js_compress.advagg.inc, line 164

Code

function advagg_js_compress_advagg_save_aggregate_alter(&$files_to_save, $aggregate_settings, $other_parameters) {
    list($files, $type) = $other_parameters;
    // Return if gzip and brotli are disabled.
    // Return if packer is disabled.
    // Return if type is not js.
    if (empty($aggregate_settings['variables']['advagg_gzip']) && empty($aggregate_settings['variables']['advagg_brotli']) || empty($aggregate_settings['variables']['advagg_js_compress_packer']) || $type !== 'js') {
        return;
    }
    // Use the first file in the array.
    $data = reset($files_to_save);
    $uri = key($files_to_save);
    // Use packer on non gzip/brotli js files.
    $compressor = 2;
    module_load_include('inc', 'advagg', 'advagg');
    // Make sure all files in this aggregate are compatible with packer.
    foreach ($files as $file => $settings) {
        $info = advagg_get_info_on_file($file);
        if (!isset($info['advagg_js_compress'][$compressor]['code'])) {
            // Add in selected compressor.
            $compressors = advagg_js_compress_get_enabled_compressors(array(), $compressor);
            // Test file here on the spot.
            $info['advagg_js_compress'] = advagg_js_compress_run_test($file, $info, $compressors);
        }
        // If this file causes php to bomb or the ratio is way too good then do not
        // use packer on this aggregate.
        if (!isset($info['advagg_js_compress'][$compressor]['code']) || $info['advagg_js_compress'][$compressor]['code'] == -1 || $info['advagg_js_compress'][$compressor]['code'] == -3) {
            return;
        }
    }
    // Use packer on non gzip/brotli JS data.
    $aggregate_settings['variables']['advagg_js_compressor'] = $compressor;
    advagg_js_compress_prep($data, $uri, $aggregate_settings, FALSE);
    $files_to_save[$uri] = $data;
}