diff --git a/includes/common.inc b/includes/common.inc index 57fd73c06e..92a3b63d66 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -7656,11 +7656,8 @@ function drupal_implode_tags($tags) { * * Empties cache tables, rebuilds the menu cache and theme registries, and * invokes a hook so that other modules' cache data can be cleared as well. - * - * @param $force - * Force a full menu rebuild even if {menu_router} didn't change. */ -function drupal_flush_all_caches($force = FALSE) { +function drupal_flush_all_caches() { // Change query-strings on css/js files to enforce reload for all users. _drupal_flush_css_js(); @@ -7677,7 +7674,8 @@ function drupal_flush_all_caches($force = FALSE) { node_types_rebuild(); // node_menu() defines menu items based on node types so it needs to come // after node types are rebuilt. - menu_rebuild($force); + $force_menu_rebuild = variable_get('rebuild_menu_during_cache_clear', TRUE); + menu_rebuild($force_menu_rebuild); // Synchronize to catch any actions that were added or removed. actions_synchronize(); diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc index 0f91242c27..408f84543c 100644 --- a/modules/system/system.admin.inc +++ b/modules/system/system.admin.inc @@ -1694,18 +1694,18 @@ function system_performance_settings() { '#title' => t('Clear cache'), ); + $form['clear_cache']['rebuild_menu_during_cache_clear'] = array( + '#type' => 'checkbox', + '#title' => t('Rebuild menu during cache clear'), + '#default_value' => variable_get('rebuild_menu_during_cache_clear', TRUE), + ); + $form['clear_cache']['clear'] = array( '#type' => 'submit', '#value' => t('Clear all caches'), '#submit' => array('system_clear_cache_submit'), ); - $form['clear_cache']['clear_rebuild'] = array( - '#type' => 'submit', - '#value' => t('Clear all caches and rebuild menu'), - '#submit' => array('system_clear_cache_rebuild_submit'), - ); - $form['caching'] = array( '#type' => 'fieldset', '#title' => t('Caching'), @@ -1785,6 +1785,9 @@ function system_performance_settings() { * @ingroup forms */ function system_clear_cache_submit($form, &$form_state) { + $force_menu_rebuild = $form_state['values']['rebuild_menu_during_cache_clear']; + variable_set('rebuild_menu_during_cache_clear', $force_menu_rebuild); + drupal_flush_all_caches(); drupal_set_message(t('Caches cleared.')); }