rendered paste bodyfunction menu_menu($caller = NULL) {
static $custom_items;
if (isset($custom_items) && isset($caller) && $caller == 'menu_menu_alter') {
return $custom_items;
}
$custom_items = array();
$result = db_query('SELECT * FROM {menu_edit} WHERE admin = 1');
while ($item = db_fetch_array($result)) {
$custom_items[] = $item['path'];
$items[$item['path']] = $item;
}
}
function menu_menu_alter(&$menu, $phase) {
switch ($phase) {
case MENU_ALTER_MODULE_DEFINED:
foreach (menu_menu('menu_menu_alter') as $path => $item) {
list($ancestors, $placeholders) = menu_get_ancestors(explode('/', $path, 6));
$inherit_path = db_result(db_query_range('SELECT path FROM {menu} WHERE path IN ('. implode (',', $placeholders) .') ORDER BY fit DESC', $ancestors, 0, 1));
foreach (array('access callback', 'access arguments', 'page callback', 'page arguments') as $key) {
$menu[$path][$key] = $menu[$inherit_path][$key];
}
}
break;
case MENU_ALTER_PREPROCESSED:
$result = db_query('SELECT * FROM {menu_edit} me WHERE admin = 0');
while ($item = db_fetch_array($result)) {
$menu[$item['path']] = $item + $menu[$item['path']];
}
break;
}
}