diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index aa116553cd..aad8fb8c32 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -264,13 +264,14 @@ function make_jumpbox($action, $forum_id = false, $select_all = false) global $auth, $template, $user, $db, $nav_links, $phpEx, $SID; $boxstring = ''; - $sql = 'SELECT forum_id, forum_name, forum_type, left_id, right_id + $sql = 'SELECT forum_id, forum_name, parent_id, forum_type, left_id, right_id FROM ' . FORUMS_TABLE . ' ORDER BY left_id ASC'; $result = $db->sql_query($sql, 600); - $right = $cat_right = 0; + $right = $cat_right = $padding_inc = 0; $padding = $forum_list = $holding = ''; + $padding_store = array('0' => ''); while ($row = $db->sql_fetchrow($result)) { if ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id'])) @@ -287,11 +288,12 @@ function make_jumpbox($action, $forum_id = false, $select_all = false) if ($row['left_id'] < $right) { - $padding .= '   '; + $padding .= '     '; + $padding_store[$row['parent_id']] = $padding; } else if ($row['left_id'] > $right + 1) { - $padding = substr($padding, 0, -13 * ($row['left_id'] - $right + 1)); + $padding = $padding_store[$row['parent_id']]; } $right = $row['right_id']; @@ -307,11 +309,11 @@ function make_jumpbox($action, $forum_id = false, $select_all = false) { $cat_right = max($cat_right, $row['right_id']); - $holding .= ''; + $holding .= ''; } else { - $boxstring .= $holding . ''; + $boxstring .= $holding . ''; $holding = ''; } @@ -321,6 +323,7 @@ function make_jumpbox($action, $forum_id = false, $select_all = false) ); } $db->sql_freeresult($result); + unset($padding_store); if ($boxstring != '') { diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index b38a06141c..c14f105f41 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -24,12 +24,12 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = { global $db, $user, $auth; - $right = $cat_right = 0; - $forum_list = $padding = $holding = ''; - $acl = ($ignore_acl) ? '' : array('f_list', 'a_forum', 'a_forumadd', 'a_forumdel'); $rowset = get_forum_list($acl, false, $ignore_nonpost, true); + $right = $cat_right = 0; + $forum_list = $padding = $holding = ''; + $padding_store = array('0' => ''); foreach ($rowset as $row) { if ((is_array($ignore_id) && in_array($row['forum_id'], $ignore_id)) || @@ -40,11 +40,12 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = if ($row['left_id'] < $right) { - $padding .= '   '; + $padding .= '     '; + $padding_store[$row['parent_id']] = $padding; } else if ($row['left_id'] > $right + 1) { - $padding = substr($padding, 0, -13 * ($row['left_id'] - $right + 1)); + $padding = $padding_store[$row['parent_id']]; } $right = $row['right_id']; @@ -60,12 +61,11 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = { $cat_right = max($cat_right, $row['right_id']); - $holding .= ''; + $holding .= ''; } else { - $sep = ($row['right_id'] - $row['left_id'] > 1) ? '+ ' : '- '; - $forum_list .= $holding . ''; + $forum_list .= $holding . ''; $holding = ''; } } @@ -88,7 +88,7 @@ function get_forum_list($acl_list = 'f_list', $id_only = TRUE, $postable_only = { // This query is identical to the jumpbox one $expire_time = ($no_cache) ? 0 : 120; - $sql = 'SELECT forum_id, forum_name, forum_type, left_id, right_id + $sql = 'SELECT forum_id, parent_id, forum_name, forum_type, left_id, right_id FROM ' . FORUMS_TABLE . ' ORDER BY left_id ASC'; $result = $db->sql_query($sql, $expire_time);