Same name and namespace in other branches
  1. 7.x-1.x advagg_js_compress/advagg_js_compress.module \advagg_js_compress_test_file() 1 commentaire

Test a file, making sure it is compressible.

Paramètres

string $filename: Path and filename of the js file to test.

array $compressors: List of compressors to test.

string $cache_id: The cache ID for this file.

bool $debug: Set to TRUE to debug.

Return value

array Array showing the results of the compression tests.

1 call to advagg_js_compress_test_file()
advagg_js_compress_run_test dans advagg_js_compress/advagg_js_compress.advagg.inc
Test a JS file to see if it compresses well.
2 string references to 'advagg_js_compress_test_file'
advagg_js_compress_run_mutiple_tests dans advagg_js_compress/advagg_js_compress.advagg.inc
Test a JS file to see if it compresses well.
advagg_js_compress_run_test dans advagg_js_compress/advagg_js_compress.advagg.inc
Test a JS file to see if it compresses well.

Fichier

advagg_js_compress/advagg_js_compress.module, line 309

Code

function advagg_js_compress_test_file($filename, array $compressors = array(), $cache_id = '', $debug = FALSE) {
    $contents = (string) @advagg_file_get_contents($filename);
    // Get the JS string length before the compression operation.
    $contents_before = $contents;
    $before = strlen($contents);
    module_load_include('inc', 'advagg_js_compress', 'advagg_js_compress.advagg');
    if (empty($compressors)) {
        list(, , $compressors) = advagg_js_compress_configuration();
    }
    $results = array();
    foreach ($compressors as $key => $name) {
        $contents = $contents_before;
        $aggregate_settings['variables']['advagg_js_compressor'] = $key;
        // Compress it.
        $no_errors = advagg_js_compress_prep($contents, $filename, $aggregate_settings, FALSE, FALSE, FALSE, TRUE);
        $after = strlen($contents);
        $ratio = 0;
        if ($before != 0) {
            $ratio = ($before - $after) / $before;
        }
        // Set to "-1" if the compressor threw an error.
        if ($no_errors === FALSE) {
            $results[$key] = array(
                'code' => -1,
                'ratio' => round($ratio, 5),
                'name' => $name,
            );
        }
        elseif ($ratio < 0.001) {
            $results[$key] = array(
                'code' => -2,
                'ratio' => round($ratio, 5),
                'name' => $name,
            );
        }
        elseif ($ratio > 0.999) {
            $results[$key] = array(
                'code' => -3,
                'ratio' => round($ratio, 5),
                'name' => $name,
            );
        }
        else {
            $results[$key] = array(
                'code' => 1,
                'ratio' => round($ratio, 5),
                'name' => $name,
            );
        }
        if ($debug) {
            $results[$key]['contents'] = $contents;
        }
    }
    if (!empty($cache_id)) {
        $cache = cache_get($cache_id, 'cache_advagg_info');
        // Merge in old cached data.
        if (!empty($cache->data)) {
            // Do not merge in -1 code.
            foreach ($cache->data as $key => $value) {
                if ($value['code'] == -1) {
                    unset($cache->data[$key]);
                }
            }
            $results += $cache->data;
        }
        // CACHE_PERMANENT isn't good here. Use 2 weeks from now + 0-45 days.
        // The random 0 to 45 day addition is to prevent a cache stampeed.
        cache_set($cache_id, $results, 'cache_advagg_info', round(REQUEST_TIME + 1209600 + mt_rand(0, 3888000), -3));
    }
    return $results;
}