diff options
Diffstat (limited to 'modules/menu/menu.module')
-rw-r--r-- | modules/menu/menu.module | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/modules/menu/menu.module b/modules/menu/menu.module index f542ad5d7..3996acbc2 100644 --- a/modules/menu/menu.module +++ b/modules/menu/menu.module @@ -302,7 +302,7 @@ function menu_nodeapi(&$node, $op) { break; case 'delete': // Delete all menu module links that point to this node. - $result = db_query("SELECT mlid FROM {menu_links} WHERE link_path = 'node/%d' AND module = 'menu'", $node->nid); + $result = db_query("SELECT mlid FROM {menu_links} WHERE link_path = :path AND module = 'menu'", array(':path' => 'node/'. $node->nid)); while ($m = db_fetch_array($result)) { menu_link_delete($m['mlid']); } @@ -314,10 +314,15 @@ function menu_nodeapi(&$node, $op) { $item = array(); if (isset($node->nid)) { // Give priority to the default menu - $mlid = db_result(db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = 'node/%d' AND menu_name = '%s' AND module = 'menu' ORDER BY mlid ASC", $node->nid, $menu_name, 0, 1)); + $mlid = db_result(db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND menu_name = :menu_name AND module = 'menu' ORDER BY mlid ASC", array( + ':path' => 'node/'. $node->nid, + ':menu_name' => $menu_name, + ), 0, 1)); // Check all menus if a link does not exist in the default menu. if (!$mlid) { - $mlid = db_result(db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = 'node/%d' AND module = 'menu' ORDER BY mlid ASC", $node->nid, 0, 1)); + $mlid = db_result(db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND module = 'menu' ORDER BY mlid ASC", array( + ':path' => 'node/'. $node->nid, + ), 0, 1)); } if ($mlid) { $item = menu_link_load($mlid); @@ -428,15 +433,13 @@ function menu_node_form_submit($form, &$form_state) { */ function menu_get_menus($all = TRUE) { $system_menus = menu_list_system_menus(); - $sql = 'SELECT * FROM {menu_custom}'; + $query = db_select('menu_custom'); + $query->addField('menu_custom', 'menu_name', 'menu_name'); + $query->addField('menu_custom', 'title', 'title'); if (!$all) { - $sql .= ' WHERE menu_name NOT IN (' . implode(',', array_fill(0, count($system_menus), "'%s'")) . ')'; + $query->condition('menu_name', $system_menus, 'NOT IN'); } - $sql .= ' ORDER BY title'; - $result = db_query($sql, $system_menus); - $rows = array(); - while ($r = db_fetch_array($result)) { - $rows[$r['menu_name']] = $r['title']; - } - return $rows; + $query->orderBy('title'); + + return $query->execute()->fetchAllKeyed(); } |