aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/adm/admin_forums.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2004-11-06 14:11:47 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2004-11-06 14:11:47 +0000
commit836771cfb872215c9fa43c91f532382006ad25bf (patch)
treec6507e79e98c33cc14ddb99dea0ad63afc6eaf25 /phpBB/adm/admin_forums.php
parent87d4e80a772418c42c734f2e9275195480d28c06 (diff)
downloadforums-836771cfb872215c9fa43c91f532382006ad25bf.tar
forums-836771cfb872215c9fa43c91f532382006ad25bf.tar.gz
forums-836771cfb872215c9fa43c91f532382006ad25bf.tar.bz2
forums-836771cfb872215c9fa43c91f532382006ad25bf.tar.xz
forums-836771cfb872215c9fa43c91f532382006ad25bf.zip
- adding recalc_btree (not used atm)
git-svn-id: file:///svn/phpbb/trunk@5022 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/adm/admin_forums.php')
-rw-r--r--phpBB/adm/admin_forums.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/phpBB/adm/admin_forums.php b/phpBB/adm/admin_forums.php
index 37a926a14f..2315799c99 100644
--- a/phpBB/adm/admin_forums.php
+++ b/phpBB/adm/admin_forums.php
@@ -1581,6 +1581,65 @@ function delete_forum_content($forum_id)
$db->sql_transaction('commit');
}
+function recalc_btree()
+{
+ global $db;
+
+ $sql = 'SELECT forum_id, parent_id, left_id, right_id
+ FROM ' . FORUMS_TABLE . '
+ ORDER BY parent_id ASC';
+ $f_result = $db->sql_query($sql);
+
+ while ($forum_data = $db->sql_fetchrow($f_result))
+ {
+ if ($forum_data['parent_id'])
+ {
+ $sql = 'SELECT left_id, right_id
+ FROM ' . FORUMS_TABLE . '
+ WHERE forum_id = ' . $forum_data['parent_id'];
+ $result = $db->sql_query($sql);
+
+ if (!$row = $db->sql_fetchrow($result))
+ {
+ $sql = 'UPDATE ' . FORUMS_TABLE . ' SET parent_id = 0 WHERE forum_id = ' . $forum_data['forum_id'];
+ $db->sql_query($sql);
+ }
+ $db->sql_freeresult($result);
+
+ $sql = 'UPDATE ' . FORUMS_TABLE . '
+ SET left_id = left_id + 2, right_id = right_id + 2
+ WHERE left_id > ' . $row['right_id'];
+ $db->sql_query($sql);
+
+ $sql = 'UPDATE ' . FORUMS_TABLE . '
+ SET right_id = right_id + 2
+ WHERE ' . $row['left_id'] . ' BETWEEN left_id AND right_id';
+ $db->sql_query($sql);
+
+ $forum_data['left_id'] = $row['right_id'];
+ $forum_data['right_id'] = $row['right_id'] + 1;
+ }
+ else
+ {
+ $sql = 'SELECT MAX(right_id) AS right_id
+ FROM ' . FORUMS_TABLE;
+ $result = $db->sql_query($sql);
+
+ $row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ $forum_data['left_id'] = $row['right_id'] + 1;
+ $forum_data['right_id'] = $row['right_id'] + 2;
+ }
+
+ $sql = 'UPDATE ' . FORUMS_TABLE . '
+ SET left_id = ' . $forum_data['left_id'] . ', right_id = ' . $forum_data['right_id'] . '
+ WHERE forum_id = ' . $forum_data['forum_id'];
+ $db->sql_query($sql);
+ }
+ $db->sql_freeresult($f_result);
+}
+
//
// End function block
// ------------------