function menu_rebuild in Drupal 6
Same name and namespace in other branches
- 4 includes/menu.inc \menu_rebuild()
- 5 includes/menu.inc \menu_rebuild()
- 7 includes/menu.inc \menu_rebuild()
(Re)populate the database tables used by various menu functions.
This function will clear and populate the {menu_router} table, add entries to {menu_links} for new router items, then remove stale items from {menu_links}. If called from update.php or install.php, it will also schedule a call to itself on the first real page load from menu_execute_active_handler(), because the maintenance page environment is different and leaves stale data in the menu tables.
Related topics
15 calls to menu_rebuild()
- default_profile_tasks in profiles/
default/ default.profile - Perform any final installation tasks for this profile.
- drupal_flush_all_caches in includes/
common.inc - Flush all cached data on the site.
- install_tasks in ./
install.php - Tasks performed after the database is initialized.
- menu_enable in modules/
menu/ menu.module - Implementation of hook_enable()
- menu_execute_active_handler in includes/
menu.inc - Execute the page callback associated with the current path
File
- includes/
menu.inc, line 1695 - API for the Drupal menu system.
Code
function menu_rebuild() {
if (!lock_acquire('menu_rebuild')) {
// Wait for another request that is already doing this work.
// We choose to block here since otherwise the router item may not
// be avaiable in menu_execute_active_handler() resulting in a 404.
lock_wait('menu_rebuild');
return FALSE;
}
$menu = menu_router_build(TRUE);
_menu_navigation_links_rebuild($menu);
// Clear the menu, page and block caches.
menu_cache_clear_all();
_menu_clear_page_cache();
if (defined('MAINTENANCE_MODE')) {
variable_set('menu_rebuild_needed', TRUE);
}
else {
variable_del('menu_rebuild_needed');
}
lock_release('menu_rebuild');
return TRUE;
}