You are here

function advagg_mod_js_no_ajaxpagestate in Advanced CSS/JS Aggregation 7.2

Remove ajaxPageState CSS/JS if misc/ajax.js is not used.

Parameters

array $scripts: Render array.

1 call to advagg_mod_js_no_ajaxpagestate()
advagg_get_js in ./advagg.module
Returns a themed presentation of all JavaScript code for the current page.
2 string references to 'advagg_mod_js_no_ajaxpagestate'
advagg_get_js in ./advagg.module
Returns a themed presentation of all JavaScript code for the current page.
advagg_mod_admin_settings_form in advagg_mod/advagg_mod.admin.inc
Form builder; Configure advagg settings.

File

advagg_mod/advagg_mod.module, line 2027
Advanced aggregation modifier module.

Code

function advagg_mod_js_no_ajaxpagestate(array &$scripts) {
  if (!module_exists('advagg') || !advagg_enabled()) {
    return;
  }
  if (!variable_get('advagg_mod_js_no_ajaxpagestate', ADVAGG_MOD_JS_NO_AJAXPAGESTATE) || variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) < 0) {
    return;
  }

  // Search for the ajax file in the #items array.
  $ajax_found = FALSE;
  if (isset($scripts['#items']) && is_array($scripts['#items'])) {
    foreach ($scripts['#items'] as $key => $values) {
      if (strpos($key, 'misc/ajax.js') !== FALSE || strpos($key, 'misc/ajax.min.js')) {
        $ajax_found = TRUE;
        break;
      }
    }
  }

  // The ajax.js file was not found and there is a settings array.
  if (!$ajax_found && isset($scripts['#items']['settings']['data'])) {
    foreach ($scripts['#items']['settings']['data'] as $delta => $setting) {
      if (array_key_exists('ajaxPageState', $setting)) {

        // Remove js files.
        if (isset($scripts['#items']['settings']['data'][$delta]['ajaxPageState']['js'])) {
          unset($scripts['#items']['settings']['data'][$delta]['ajaxPageState']['js']);
        }

        // Remove css files.
        if (isset($scripts['#items']['settings']['data'][$delta]['ajaxPageState']['css'])) {
          unset($scripts['#items']['settings']['data'][$delta]['ajaxPageState']['css']);
        }

        // Cleanup.
        if (empty($scripts['#items']['settings']['data'][$delta]['ajaxPageState'])) {
          unset($scripts['#items']['settings']['data'][$delta]['ajaxPageState']);
          if (empty($scripts['#items']['settings']['data'][$delta])) {
            unset($scripts['#items']['settings']['data'][$delta]);
          }
        }
      }
    }
  }
}