? modules/system/menu-update.php Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.1 diff -u -p -r1.1 system.admin.inc --- modules/system/system.admin.inc 22 May 2007 05:52:17 -0000 1.1 +++ modules/system/system.admin.inc 25 May 2007 00:21:22 -0000 @@ -16,17 +16,17 @@ function system_main_admin_page($arg = N drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the status report for more information.', array('@status' => url('admin/logs/status'))), 'error'); } $result = db_query("SELECT * FROM {menu_links} ml INNER JOIN {menu_router} m ON ml.router_path = m.path - WHERE ml.href like 'admin/%' AND ml.href != 'admin/help' AND ml.depth = 2 AND ml.menu_name = 'navigation' + WHERE ml.link_path like 'admin/%' AND ml.link_path != 'admin/help' AND ml.depth = 2 AND ml.menu_name = 'navigation' ORDER BY p1 ASC, p2 ASC, p3 ASC"); - while ($item = db_fetch_object($result)) { + while ($item = db_fetch_array($result)) { _menu_link_translate($item); - if (!$item->access) { + if (!$item['access']) { continue; } - $block = (array)$item; + $block = $item; $block['content'] = ''; - if ($item->block_callback && function_exists($item->block_callback)) { - $function = $item->block_callback; + if ($item['block_callback'] && function_exists($item['block_callback'])) { + $function = $item['block_callback']; $block['content'] .= $function(); } $block['content'] .= theme('admin_block_content', system_admin_menu_block($item)); Index: modules/system/system.install =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.install,v retrieving revision 1.115 diff -u -p -r1.115 system.install --- modules/system/system.install 22 May 2007 05:52:17 -0000 1.115 +++ modules/system/system.install 25 May 2007 00:21:23 -0000 @@ -265,6 +265,17 @@ function system_install() { INDEX expire (expire) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); + db_query("CREATE TABLE {cache_menu} ( + cid varchar(255) BINARY NOT NULL default '', + data longblob, + expire int NOT NULL default '0', + created int NOT NULL default '0', + headers text, + serialized int(1) NOT NULL default '0', + PRIMARY KEY (cid), + INDEX expire (expire) + ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); + db_query("CREATE TABLE {comments} ( cid int NOT NULL auto_increment, pid int NOT NULL default '0', @@ -379,9 +390,9 @@ function system_install() { db_query("CREATE TABLE {menu_links} ( menu_name varchar(64) NOT NULL default '', - mlid int NOT NULL default '0', + mlid int unsigned NOT NULL auto_increment, plid int NOT NULL default '0', - href varchar(255) NOT NULL default '', + link_path varchar(255) NOT NULL default '', router_path varchar(255) NOT NULL default '', hidden smallint NOT NULL default '0', external smallint NOT NULL default '0', @@ -399,8 +410,10 @@ function system_install() { link_title varchar(255) NOT NULL default '', options text, PRIMARY KEY (mlid), - KEY parents (plid, p1, p2, p3, p4, p5), - KEY menu_name_path (menu_name, href), + KEY router_path (router_path), + KEY plid (plid), + KEY parents (p1, p2, p3, p4, p5), + KEY menu_name_path (menu_name, link_path), KEY menu_expanded_children (expanded, has_children) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); @@ -781,10 +794,20 @@ function system_install() { serialized smallint NOT NULL default '0', PRIMARY KEY (cid) )"); + db_query("CREATE TABLE {cache_menu} ( + cid varchar(255) NOT NULL default '', + data bytea, + expire int NOT NULL default '0', + created int NOT NULL default '0', + headers text, + serialized smallint NOT NULL default '0', + PRIMARY KEY (cid) + )"); db_query("CREATE INDEX {cache}_expire_idx ON {cache} (expire)"); db_query("CREATE INDEX {cache_filter}_expire_idx ON {cache_filter} (expire)"); db_query("CREATE INDEX {cache_page}_expire_idx ON {cache_page} (expire)"); db_query("CREATE INDEX {cache_form}_expire_idx ON {cache_form} (expire)"); + db_query("CREATE INDEX {cache_menu}_expire_idx ON {cache_form} (expire)"); db_query("CREATE TABLE {comments} ( cid serial, @@ -900,9 +923,9 @@ function system_install() { db_query("CREATE TABLE {menu_links} ( menu_name varchar(64) NOT NULL default '', - mlid serial, + mlid serial CHECK (mlid >= 0), plid int NOT NULL default '0', - href varchar(255) NOT NULL default '', + link_path varchar(255) NOT NULL default '', router_path varchar(255) NOT NULL default '', hidden smallint NOT NULL default '0', external smallint NOT NULL default '0', @@ -921,8 +944,11 @@ function system_install() { options text, PRIMARY KEY (mlid) )"); - db_query("CREATE INDEX {menu_links}_parents_idx ON {menu_links} (plid, p1, p2, p3, p4, p5)"); - db_query("CREATE INDEX {menu_links}_menu_name_idx ON {menu_links} (menu_name, href)"); + + db_query("CREATE INDEX {menu_links}_router_path_idx ON {menu_links} (router_path)"); + db_query("CREATE INDEX {menu_links}_plid_idx ON {menu_links} (plid)"); + db_query("CREATE INDEX {menu_links}_parents_idx ON {menu_links} (p1, p2, p3, p4, p5)"); + db_query("CREATE INDEX {menu_links}_menu_name_idx ON {menu_links} (menu_name, link_path)"); db_query("CREATE INDEX {menu_links}_expanded_children_idx ON {menu_links} (expanded, has_children)"); db_query("CREATE TABLE {node} ( @@ -3925,14 +3951,15 @@ function system_update_6012() { db_add_column($ret, 'cache', 'serialized', 'smallint', array('default' => "'0'", 'not null' => TRUE)); db_add_column($ret, 'cache_filter', 'serialized', 'smallint', array('default' => "'0'", 'not null' => TRUE)); db_add_column($ret, 'cache_page', 'serialized', 'smallint', array('default' => "'0'", 'not null' => TRUE)); + db_add_column($ret, 'cache_menu', 'serialized', 'smallint', array('default' => "'0'", 'not null' => TRUE)); break; case 'mysql': case 'mysqli': $ret[] = update_sql("ALTER TABLE {cache} ADD serialized int(1) NOT NULL default '0'"); $ret[] = update_sql("ALTER TABLE {cache_filter} ADD serialized int(1) NOT NULL default '0'"); $ret[] = update_sql("ALTER TABLE {cache_page} ADD serialized int(1) NOT NULL default '0'"); + $ret[] = update_sql("ALTER TABLE {cache_menu} ADD serialized int(1) NOT NULL default '0'"); break; - } return $ret; @@ -4093,6 +4120,130 @@ function system_update_6018() { } /** + * Install menu_router and menu_links tables. + */ +function system_update_6019() { + $ret = array(); + + switch ($GLOBALS['db_type']) { + case 'pgsql': + $ret[] = update_sql("CREATE TABLE {menu_router} ( + path varchar(255) NOT NULL default '', + load_functions varchar(255) NOT NULL default '', + to_arg_functions varchar(255) NOT NULL default '', + access_callback varchar(255) NOT NULL default '', + access_arguments text, + page_callback varchar(255) NOT NULL default '', + page_arguments text, + fit int NOT NULL default 0, + number_parts int NOT NULL default 0, + tab_parent varchar(255) NOT NULL default '', + tab_root varchar(255) NOT NULL default '', + title varchar(255) NOT NULL default '', + title_callback varchar(255) NOT NULL default '', + title_arguments varchar(255) NOT NULL default '', + type int NOT NULL default 0, + block_callback varchar(255) NOT NULL default '', + description TEXT, + position varchar(255) NOT NULL default '', + weight int NOT NULL default 0, + file text NOT NULL default '', + PRIMARY KEY (path) + )"); + $ret[] = update_sql("CREATE INDEX {menu_router}_fit_idx ON {menu_router} (fit)"); + $ret[] = update_sql("CREATE INDEX {menu_router}_tab_parent_idx ON {menu_router} (tab_parent)"); + + $ret[] = update_sql("CREATE TABLE {menu_links} ( + menu_name varchar(64) NOT NULL default '', + mlid serial CHECK (mlid >= 0), + plid int NOT NULL default '0', + link_path varchar(255) NOT NULL default '', + router_path varchar(255) NOT NULL default '', + hidden smallint NOT NULL default '0', + external smallint NOT NULL default '0', + has_children int NOT NULL default '0', + expanded smallint NOT NULL default '0', + weight int NOT NULL default '0', + depth int NOT NULL default '0', + p1 int NOT NULL default '0', + p2 int NOT NULL default '0', + p3 int NOT NULL default '0', + p4 int NOT NULL default '0', + p5 int NOT NULL default '0', + p6 int NOT NULL default '0', + module varchar(255) NOT NULL default 'system', + link_title varchar(255) NOT NULL default '', + options text, + PRIMARY KEY (mlid) + )"); + $ret[] = update_sql("CREATE INDEX {menu_links}_router_path_idx ON {menu_links} (router_path)"); + $ret[] = update_sql("CREATE INDEX {menu_links}_plid_idx ON {menu_links} (plid)"); + $ret[] = update_sql("CREATE INDEX {menu_links}_parents_idx ON {menu_links} (p1, p2, p3, p4, p5)"); + $ret[] = update_sql("CREATE INDEX {menu_links}_menu_name_idx ON {menu_links} (menu_name, link_path)"); + $ret[] = update_sql("CREATE INDEX {menu_links}_expanded_children_idx ON {menu_links} (expanded, has_children)"); + + break; + case 'mysql': + case 'mysqli': + $ret[] = update_sql("CREATE TABLE {menu_router} ( + path varchar(255) NOT NULL default '', + load_functions varchar(255) NOT NULL default '', + to_arg_functions varchar(255) NOT NULL default '', + access_callback varchar(255) NOT NULL default '', + access_arguments text, + page_callback varchar(255) NOT NULL default '', + page_arguments text, + fit int NOT NULL default 0, + number_parts int NOT NULL default 0, + tab_parent varchar(255) NOT NULL default '', + tab_root varchar(255) NOT NULL default '', + title varchar(255) NOT NULL default '', + title_callback varchar(255) NOT NULL default '', + title_arguments varchar(255) NOT NULL default '', + type int NOT NULL default 0, + block_callback varchar(255) NOT NULL default '', + description TEXT, + position varchar(255) NOT NULL default '', + weight int NOT NULL default 0, + file mediumtext NOT NULL default '', + PRIMARY KEY (path), + KEY fit (fit), + KEY tab_parent (tab_parent) + ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); + + $ret[] = update_sql("CREATE TABLE {menu_links} ( + menu_name varchar(64) NOT NULL default '', + mlid int unsigned NOT NULL auto_increment, + plid int NOT NULL default '0', + link_path varchar(255) NOT NULL default '', + router_path varchar(255) NOT NULL default '', + hidden smallint NOT NULL default '0', + external smallint NOT NULL default '0', + has_children int NOT NULL default '0', + expanded smallint NOT NULL default '0', + weight int NOT NULL default '0', + depth int NOT NULL default '0', + p1 int NOT NULL default '0', + p2 int NOT NULL default '0', + p3 int NOT NULL default '0', + p4 int NOT NULL default '0', + p5 int NOT NULL default '0', + p6 int NOT NULL default '0', + module varchar(255) NOT NULL default 'system', + link_title varchar(255) NOT NULL default '', + options text, + PRIMARY KEY (mlid), + KEY router_path (router_path), + KEY plid (plid), + KEY parents (p1, p2, p3, p4, p5), + KEY menu_name_path (menu_name, link_path), + KEY menu_expanded_children (expanded, has_children) + ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); + break; + } +} + +/** * @} End of "defgroup updates-5.x-to-6.x" * The next series of updates should start at 7000. */ Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.481 diff -u -p -r1.481 system.module --- modules/system/system.module 23 May 2007 08:00:46 -0000 1.481 +++ modules/system/system.module 25 May 2007 00:21:24 -0000 @@ -144,6 +144,7 @@ function system_menu() { $items['admin/by-task'] = array( 'title' => 'By task', 'page callback' => 'system_main_admin_page', + 'file' => 'system.admin.inc', 'type' => MENU_DEFAULT_LOCAL_TASK, ); $items['admin/by-module'] = array( @@ -392,14 +393,14 @@ function system_user($type, $edit, &$use */ function system_admin_menu_block($item) { $content = array(); - if (!isset($item->mlid)) { - $item->mlid = db_result(db_query("SELECT mlid FROM {menu_links} ml WHERE ml.router_path = '%s' AND menu_name = 'navigation'", $item->path)); + if (!isset($item['mlid'])) { + $item['mlid'] = db_result(db_query("SELECT mlid FROM {menu_links} ml WHERE ml.router_path = '%s' AND menu_name = 'navigation'", $item['path'])); } $result = db_query("SELECT * FROM {menu_links} ml INNER JOIN {menu_router} m ON ml.router_path = m.path - WHERE ml.plid = '%s' AND ml.menu_name = 'navigation' ORDER BY m.weight, m.title", $item->mlid); - while ($item = db_fetch_object($result)) { + WHERE ml.plid = %d AND ml.menu_name = 'navigation' ORDER BY m.weight, m.title", $item['mlid']); + while ($item = db_fetch_array($result)) { _menu_link_translate($item); - if (!$item->access) { + if (!$item['access']) { continue; } $content[] = (array)$item;