Return a filename => url array for external assets.

Paramètres

array $data: CSS or JS data array.

string $type: Either css or js.

array $aggregate_settings: Array of settings.

Return value

array Array of external assets to be served locally.

2 calls to _advagg_relocate_get_urls()
advagg_relocate_css_post_alter dans advagg_relocate/advagg_relocate.module
Alter the css array.
advagg_relocate_js_post_alter dans advagg_relocate/advagg_relocate.module
Alter the js array.

Fichier

advagg_relocate/advagg_relocate.module, line 1248

Code

function _advagg_relocate_get_urls(array $data, $type, array $aggregate_settings) {
    $domains_blacklist = $aggregate_settings['variables']["advagg_relocate_{$type}_domains_blacklist"];
    $files_blacklist = $aggregate_settings['variables']["advagg_relocate_{$type}_files_blacklist"];
    $urls = array();
    foreach ($data as $key => $value) {
        // Get all external js files.
        if ($value['type'] !== 'external') {
            continue;
        }
        // If no_relocate=TRUE, do not move it to be local.
        if (!empty($value['no_relocate'])) {
            continue;
        }
        if (empty($value['data'])) {
            $value['data'] = $key;
        }
        $host = parse_url($value['data'], PHP_URL_HOST);
        if (!empty($domains_blacklist)) {
            foreach ($domains_blacklist as $domain) {
                if ($domain === $host) {
                    continue 2;
                }
            }
        }
        if (!empty($files_blacklist)) {
            foreach ($files_blacklist as $file) {
                if (strpos($file, $host) !== FALSE) {
                    continue 2;
                }
            }
        }
        // Encode the URL into a filename. Force HTTPS.
        $filename = advagg_url_to_filename(advagg_force_https_path($value['data']));
        // Make sure it ends with .css or .js.
        if (stripos(strrev($filename), strrev($type)) !== 0) {
            $filename .= ".{$type}";
        }
        $urls[$filename] = $key;
    }
    return $urls;
}