Implements hook_advagg_js_pre_alter().

Fichier

advagg_js_cdn/advagg_js_cdn.module, line 27

Code

function advagg_js_cdn_advagg_js_pre_alter(&$javascript, $preprocess_js, $public_downloads, $scope) {
    // Exit early if we are not going to CDN any code.
    $cdn_jquery = variable_get('advagg_js_cdn_jquery', ADVAGG_JS_CDN_JQUERY);
    $cdn_jquery_ui = variable_get('advagg_js_cdn_jquery_ui', ADVAGG_JS_CDN_JQUERY_UI);
    $cdn_swfobject = variable_get('advagg_js_cdn_swfobject', ADVAGG_JS_CDN_SWFOBJECT);
    if (!$cdn_jquery && !$cdn_jquery_ui && !$cdn_swfobject) {
        return FALSE;
    }
    // Set filepaths/versions
    $jquery_version = variable_get('advagg_js_cdn_jquery_version', '1.2.6');
    $jquery_filepath = 'misc/jquery.js';
    if (module_exists('jquery_update') && variable_get('jquery_update_replace', TRUE)) {
        // jquery_update_get_version hits disk and doesn't get cached.
        // advagg_js_cdn_advagg_js_pre_alter will run mutiple times per request so
        // caching the value of $jquery_update_version here.
        static $jquery_update_version;
        if (empty($jquery_update_version)) {
            $jquery_update_version = variable_get('advagg_js_cdn_jquery_update_version', jquery_update_get_version());
        }
        $jquery_update_filepath = drupal_get_path('module', 'jquery_update');
    }
    if (module_exists('jquery_ui')) {
        // jquery_ui_get_version hits disk and doesn't get cached.
        // advagg_js_cdn_advagg_js_pre_alter will run mutiple times per request so
        // caching the value of jquery_ui_get_version here.
        static $jquery_ui_version;
        if (empty($jquery_ui_version)) {
            $jquery_ui_version = jquery_ui_get_version();
        }
        $jquery_ui_filepath = advagg_js_cdn_get_jquery_ui_filename();
    }
    if (module_exists('swftools')) {
        $swfobject_version = variable_get('advagg_js_cdn_swfobject_version', '2.2');
        if (function_exists('swftools_get_player_path')) {
            $swfobject_filepath = swftools_get_player_path() . '/swfobject2/swfobject.js';
        }
        elseif (function_exists('swftools_get_library')) {
            $swfobject_filepath = swftools_get_library('swfobject') . '/swfobject.js';
        }
    }
    // http or https.
    $schema = advagg_get_server_schema();
    foreach ($javascript as $type => $data) {
        // Skip inline and setting js.
        if (!$data || $type == 'setting' || $type == 'inline') {
            continue;
        }
        // Search and replace.
        foreach ($data as $path => $info) {
            // jquery.js
            if ($cdn_jquery) {
                if (isset($jquery_update_filepath) && ($path == $jquery_update_filepath . '/replace/jquery.min.js' || $path == $jquery_filepath . '/replace/jquery.js')) {
                    $info['preprocess'] = FALSE;
                    $javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/jquery/' . $jquery_update_version . '/jquery.min.js'] = $info;
                    unset($javascript[$type][$path]);
                }
                elseif ($path == $jquery_filepath) {
                    $info['preprocess'] = FALSE;
                    $javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/jquery/' . $jquery_version . '/jquery.min.js'] = $info;
                    unset($javascript[$type][$path]);
                }
            }
            // jquery-ui.js
            if ($cdn_jquery_ui) {
                if (isset($jquery_ui_filepath) && isset($jquery_ui_version) && $path == $jquery_ui_filepath) {
                    $info['preprocess'] = FALSE;
                    $javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/jqueryui/' . $jquery_ui_version . '/jquery-ui.min.js'] = $info;
                    unset($javascript[$type][$path]);
                }
            }
            // swfobject.js
            if ($cdn_swfobject) {
                if (isset($swfobject_filepath) && $path == $swfobject_filepath) {
                    $info['preprocess'] = FALSE;
                    $javascript['external'][$schema . '://ajax.googleapis.com/ajax/libs/swfobject/' . $swfobject_version . '/swfobject.js'] = $info;
                    unset($javascript[$type][$path]);
                }
            }
        }
    }
}