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);