Index: menu_clone/menu_clone.module =================================================================== --- menu_clone/menu_clone.module (revision 4918) +++ menu_clone/menu_clone.module (working copy) @@ -46,38 +46,40 @@ function menu_clone_load($menu_name) { $menu = db_query("SELECT * FROM {menu_custom} WHERE menu_name = :menu_name", array(':menu_name' => $menu_name))->fetchAssoc(); - if (strpos($menu['menu_name'], 'menu-') === 0) { - $menu['menu_name'] = drupal_substr($menu['menu_name'], 5); - } + if (!empty($menu)) { + if (strpos($menu['menu_name'], 'menu-') === 0) { + $menu['menu_name'] = drupal_substr($menu['menu_name'], 5); + } - $new_name = drupal_substr('clone-' . $menu['menu_name'], 0, MENU_MAX_MENU_NAME_LENGTH_UI); - $sql = "SELECT menu_name FROM {menu_custom} WHERE menu_name = :menu_name"; - $result = db_query($sql, array(':menu_name' => 'menu-' . $new_name))->fetchField(); - $i = 1; - while (!empty($result)) { - $new_name = drupal_substr('clone' . $i . '-' . $menu['menu_name'], 0, MENU_MAX_MENU_NAME_LENGTH_UI); + $new_name = drupal_substr('clone-' . $menu['menu_name'], 0, MENU_MAX_MENU_NAME_LENGTH_UI); + $sql = "SELECT menu_name FROM {menu_custom} WHERE menu_name = :menu_name"; $result = db_query($sql, array(':menu_name' => 'menu-' . $new_name))->fetchField(); - $i++; - } + $i = 1; + while (!empty($result)) { + $new_name = drupal_substr('clone' . $i . '-' . $menu['menu_name'], 0, MENU_MAX_MENU_NAME_LENGTH_UI); + $result = db_query($sql, array(':menu_name' => 'menu-' . $new_name))->fetchField(); + $i++; + } - $sql = "SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments, m.title, m.title_callback, m.title_arguments, m.type, m.description, ml.* - FROM {menu_links} ml LEFT JOIN {menu_router} m ON m.path = ml.router_path - WHERE ml.menu_name = :menu_name - ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC"; - $result = db_query($sql, array(':menu_name' => $menu_name)); - $links = array(); - while ($row = $result->fetchAssoc()) { - $links[] = $row; + $sql = "SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments, m.title, m.title_callback, m.title_arguments, m.type, m.description, ml.* + FROM {menu_links} ml LEFT JOIN {menu_router} m ON m.path = ml.router_path + WHERE ml.menu_name = :menu_name + ORDER BY p1 ASC, p2 ASC, p3 ASC, p4 ASC, p5 ASC, p6 ASC, p7 ASC, p8 ASC, p9 ASC"; + $result = db_query($sql, array(':menu_name' => $menu_name)); + $links = array(); + while ($row = $result->fetchAssoc()) { + $links[] = $row; + } + $tree = menu_tree_data($links); + $node_links = array(); + menu_tree_collect_node_links($tree, $node_links); + $menu_admin = TRUE; + menu_tree_check_access($tree, $node_links); + $menu_admin = FALSE; + + $menu['menu_name'] = $new_name; + $menu['title'] = t('Clone of') . ' ' . $menu['title']; + $menu['tree'] = $tree; + return $menu; } - $tree = menu_tree_data($links); - $node_links = array(); - menu_tree_collect_node_links($tree, $node_links); - $menu_admin = TRUE; - menu_tree_check_access($tree, $node_links); - $menu_admin = FALSE; - - $menu['menu_name'] = $new_name; - $menu['title'] = t('Clone of') . ' ' . $menu['title']; - $menu['tree'] = $tree; - return $menu; } \ No newline at end of file