Move analytics.js to be a file instead of inline.

Paramètres

array $js: JS array.

4 calls to advagg_mod_ga_inline_to_file()
advagg_mod_admin_settings_form dans advagg_mod/advagg_mod.admin.inc
Form builder; Configure advagg settings.
advagg_mod_advagg_current_hooks_hash_array_alter dans advagg_mod/advagg_mod.module
Implements hook_advagg_current_hooks_hash_array_alter().
advagg_mod_js_pre_alter dans advagg_mod/advagg_mod.module
Alter the js array.
advagg_mod_js_pre_alter dans advagg_mod/advagg_mod.module
Alter the js array.
4 string references to 'advagg_mod_ga_inline_to_file'
advagg_mod.module dans advagg_mod/advagg_mod.module
Advanced aggregation modifier module.
advagg_mod_admin_settings_form dans advagg_mod/advagg_mod.admin.inc
Form builder; Configure advagg settings.
advagg_mod_advagg_current_hooks_hash_array_alter dans advagg_mod/advagg_mod.module
Implements hook_advagg_current_hooks_hash_array_alter().
advagg_mod_js_pre_alter dans advagg_mod/advagg_mod.module
Alter the js array.

Fichier

advagg_mod/advagg_mod.module, line 3473

Code

function advagg_mod_ga_inline_to_file(array &$js) {
    // Do nothing if the googleanalytics module is not enabled.
    if (!module_exists('googleanalytics') || !is_callable('googleanalytics_api') || !is_callable('_googleanalytics_cache')) {
        return;
    }
    // Get inline GA js and put it inside of an aggregrate.
    $ga_script = '';
    $debug = variable_get('googleanalytics_debug', 0);
    $api = googleanalytics_api();
    if ($api['api'] === 'analytics.js') {
        $library_tracker_url = '//www.google-analytics.com/' . ($debug ? 'analytics_debug.js' : 'analytics.js');
        $library_cache_url = 'http:' . $library_tracker_url;
    }
    else {
        // Which version of the tracking library should be used?
        if ($trackdoubleclick = variable_get('googleanalytics_trackdoubleclick', FALSE)) {
            $library_tracker_url = 'stats.g.doubleclick.net/dc.js';
            $library_cache_url = 'http://' . $library_tracker_url;
        }
        else {
            $library_tracker_url = '.google-analytics.com/ga.js';
            $library_cache_url = 'http://www' . $library_tracker_url;
        }
    }
    $ga_script = _googleanalytics_cache($library_cache_url);
    if (variable_get('googleanalytics_cache', 0) && $ga_script) {
        $mod_base_url = substr($GLOBALS['base_root'] . $GLOBALS['base_path'], strpos($GLOBALS['base_root'] . $GLOBALS['base_path'], '//') + 2);
        $mod_base_url_len = strlen($mod_base_url);
        $ga_script = substr($ga_script, stripos($ga_script, $mod_base_url) + $mod_base_url_len);
    }
    else {
        $ga_script = $library_cache_url;
        if ($api['api'] === 'ga.js' && $GLOBALS['is_https']) {
            if (!empty($trackdoubleclick)) {
                $ga_script = str_replace('http://', 'https://', $ga_script);
            }
            else {
                $ga_script = str_replace('http://www', 'https://ssl', $ga_script);
            }
        }
    }
    if (!empty($ga_script)) {
        foreach ($js as $key => $value) {
            // Skip if not inline.
            if ($value['type'] !== 'inline') {
                continue;
            }
            $add_ga = FALSE;
            // GoogleAnalytics 2.x inline loader string.
            if ($api['api'] === 'analytics.js') {
                $start = strpos($value['data'], '(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();');
                $end = strpos($value['data'], '})(window,document,"script",');
                if ($start === 0) {
                    // Strip loader string.
                    $js[$key]['data'] = substr($value['data'], 0, $start + 133) . substr($value['data'], $end);
                    $js[$key]['data'] = advagg_mod_defer_inline_js($js[$key]['data']);
                    $add_ga = TRUE;
                }
            }
            // GoogleAnalytics 1.x inline loader string.
            if ($api['api'] === 'ga.js') {
                $start = strpos($value['data'], '(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src =');
                $end = strpos($value['data'], '";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();');
                if ($start !== FALSE && $end !== FALSE) {
                    // Strip loader string.
                    $js[$key]['data'] = substr($value['data'], 0, $start) . substr($value['data'], $end + 91);
                    $js[$key]['no_defer'] = TRUE;
                    $add_ga = TRUE;
                }
            }
            if ($add_ga) {
                // Add GA analytics.js file to the $js array.
                $js[$ga_script] = array(
                    'data' => $ga_script,
                    'type' => 'file',
                    'async' => TRUE,
                    'defer' => TRUE,
                );
                $js[$ga_script] += $value;
                break;
            }
        }
    }
}