Check and see if the aggressive cache can safely be enabled.
Return value
array If there are no conflicts, this will return an empty array.
2 calls to advagg_aggressive_cache_conflicts()
- advagg_admin_settings_form in ./
advagg.admin.inc - Form builder; Configure advagg settings.
- advagg_requirements in ./
advagg.install - Implements hook_requirements().
File
-
./
advagg.module, line 5337
Code
function advagg_aggressive_cache_conflicts() {
$hooks = array(
'css_alter' => TRUE,
'js_alter' => TRUE,
);
foreach ($hooks as $hook => $values) {
$hooks[$hook] = module_implements($hook);
// Also check themes as drupal_alter() allows for themes to alter things.
$themes = list_themes();
$theme_keys = array_keys($themes);
if (!empty($theme_keys)) {
foreach ($theme_keys as $theme_key) {
$function = $theme_key . '_' . $hook;
// Search loaded themes.
if (function_exists($function)) {
$hooks[$hook][] = $theme_key;
continue;
}
// Skip disabled themes.
if (empty($themes[$theme_key]->status)) {
continue;
}
// Search enabled but not loaded themes.
$file = dirname($themes[$theme_key]->filename) . '/template.php';
if (file_exists($file)) {
$contents = (string) @advagg_file_get_contents($file);
if (stripos($contents, $function)) {
$hooks[$hook][] = $theme_key;
}
}
}
}
}
$whitelist = array(
// Core.
//
// locale_js_directory variable; default: languages.
// javascript_parsed variable; default: array().
'locale',
// No control; same every time.
'simpletest',
// No control; same every time.
'seven',
// Popular contrib.
//
// No control; same every time.
'at_commerce',
// ais_adaptive_styles variable; Default: array().
// ais_adaptive_styles_method; Default: 'both-max'.
// 'ais',
//
// No control; same every time.
'bluecheese',
// drupal_static('clientside_validation_settings') array.
// 'clientside_validation',
//
// version_compare(VERSION, '7.14', '<').
'conditional_fields',
// _css_injector_load_rule() function.
// Changes the weight of all files added in init so no special handling.
// 'css_injector',
//
// disable_css_ . $theme . _all variable; default: FALSE.
// disable_css_ . $theme . _modules; default: array().
// disable_css_ . $theme . _files; default: array().
// 'disable_css',
//
// Empty call; commented code is same every time.
'elfinder',
// excluded_css_custom variable; Default: ''.
// excluded_javascript_custom variable; Default: ''.
// 'excluded',
//
// No control; same every time.
'fences',
// jqmulti_jquery_path() function.
// jqmulti_get_files() function.
// jqmulti_load_always variable; Default: FALSE.
// 'jqmulti',
//
// No control; same every time.
'jquery_dollar',
// labjs_suppress() function.
'labjs_js',
// Empty call.
'panopoly_core',
// speedy_js_production variable; Default: TRUE.
'speedy',
// logintoboggan_validating_id() function.
'logintoboggan',
);
// Allow other modules to modify the $whitelist.
// Call hook_advagg_aggressive_cache_conflicts_alter()
drupal_alter('advagg_aggressive_cache_conflicts', $whitelist);
$questionable_modules = array();
foreach ($hooks as $hook => $modules) {
foreach ($modules as $key => $module) {
// Anything from advagg is ok.
if (strpos($module, 'advagg') === 0 || strpos($module, '_advagg') === 0) {
unset($modules[$key]);
continue;
}
// Remove known modules that should work with aggressive caching.
if (in_array($module, $whitelist)) {
unset($modules[$key]);
}
else {
$questionable_modules[$module] = $module;
}
}
}
return $questionable_modules;
}