You are here

function advagg_js_cdn_js_alter in Advanced CSS/JS Aggregation 7.2

Implements hook_js_alter().

File

advagg_js_cdn/advagg_js_cdn.module, line 50
Advanced aggregation js cdn module.

Code

function advagg_js_cdn_js_alter(&$javascript) {

  // Only modify if jquery_update is not enabled.
  if (module_exists('jquery_update')) {
    return;
  }

  // Setup variables.
  // JQuery.
  $jquery_version = variable_get('advagg_js_cdn_jquery_version', ADVAGG_JS_CDN_JQUERY_VERSION);
  $min = variable_get('advagg_js_cdn_compression', ADVAGG_JS_CDN_COMPRESSION) ? '.min' : '';
  if (variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) < 0) {
    $min = '';
  }

  // JQuery ui.
  $jquery_ui_version = variable_get('advagg_js_cdn_jquery_ui_version', ADVAGG_JS_CDN_JQUERY_UI_VERSION);
  $ui_mapping = advagg_js_cdn_get_ui_mapping();
  $add_in_ui = FALSE;
  foreach ($javascript as $name => $values) {

    // Only modify if
    // advagg_js_cdn_jquery is enabled,
    // name is misc/jquery.js,
    // and type is file.
    if (variable_get('advagg_js_cdn_jquery', ADVAGG_JS_CDN_JQUERY) && $name === 'misc/jquery.js' && $javascript[$name]['type'] === 'file') {

      // Add in backup.
      $values['weight'] += 1.0E-5;
      $values['data'] = 'window.jQuery || document.write("<script src=\'' . base_path() . $values['data'] . '\'>\\x3C/script>")';
      $values['type'] = 'inline';
      $javascript[$name . 'backup.js'] = $values;

      // Change core to external.
      $javascript[$name]['data'] = '//ajax.googleapis.com/ajax/libs/jquery/' . $jquery_version . '/jquery' . $min . '.js';
      $javascript[$name]['type'] = 'external';
    }

    // Only modify if
    // advagg_js_cdn_jquery_ui is enabled,
    // name is in the $ui_mapping array.
    // and type is file.
    if (variable_get('advagg_js_cdn_jquery_ui', ADVAGG_JS_CDN_JQUERY_UI) && array_key_exists($name, $ui_mapping) && $javascript[$name]['type'] === 'file') {

      // We only need one file.
      if (!$add_in_ui) {

        // Add in backup.
        $values['weight'] += 1.0E-5;
        $values['data'] = 'window.jQuery.ui || document.write("<script src=\'' . base_path() . drupal_get_path('module', 'advagg_js_cdn') . '/js/jquery-ui.js' . '\'>\\x3C/script>")';
        $values['type'] = 'inline';
        $javascript[$name . 'backup.js'] = $values;

        // Change core to external.
        $add_in_ui = TRUE;
        $javascript[$name]['data'] = '//ajax.googleapis.com/ajax/libs/jqueryui/' . $jquery_ui_version . '/jquery-ui' . $min . '.js';
        $javascript[$name]['type'] = 'external';
      }
      else {
        unset($javascript[$name]);
      }
    }
  }
}