1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-25 00:41:52 +02:00

thread and post migration now working

This commit is contained in:
mcfly
2008-12-20 23:59:00 +00:00
parent 3e6cc88d1c
commit 7dd1c8f61d
4 changed files with 205 additions and 69 deletions

View File

@@ -1,21 +1,20 @@
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| <20>Steve Dunstan 2001-2002
| http://e107.org
| jalist@e107.org
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_class.php,v $
| $Revision: 1.32 $
| $Date: 2008-12-18 18:32:54 $
| $Author: mcfly_e107 $
+----------------------------------------------------------------------------+
* e107 website system
*
* Copyright (C) 2001-2008 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Message Handler
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_class.php,v $
* $Revision: 1.33 $
* $Date: 2008-12-20 23:59:00 $
* $Author: mcfly_e107 $
*
*/
if (!defined('e107_INIT')) { exit; }
class e107forum

View File

@@ -50,10 +50,10 @@ CREATE TABLE forum_post (
`post_status` tinyint(1) unsigned NOT NULL default '0',
`post_datestamp` int(10) unsigned NOT NULL default '0',
`post_user` int(10) unsigned NOT NULL,
`post_edit_datestamp` int(10) unsigned NOT NULL default '0',
`post_edit_user` int(10) unsigned NOT NULL,
`post_ip` varchar(45) NOT NULL,
`post_user_anon` varchar(30) NULL,
`post_edit_datestamp` int(10) unsigned default NULL,
`post_edit_user` int(10) unsigned default NULL,
`post_ip` varchar(45) default NULL,
`post_user_anon` varchar(30) default NULL,
`post_attachments` text default NULL,
`post_options` text,
PRIMARY KEY (`post_id`),

View File

@@ -1,21 +1,20 @@
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| <20>Steve Dunstan 2001-2002
| http://e107.org
| jalist@e107.org
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_update.php,v $
| $Revision: 1.7 $
| $Date: 2008-12-20 16:41:58 $
| $Author: mcfly_e107 $
+----------------------------------------------------------------------------+
* e107 website system
*
* Copyright (C) 2001-2008 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Message Handler
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_update.php,v $
* $Revision: 1.8 $
* $Date: 2008-12-20 23:59:00 $
* $Author: mcfly_e107 $
*
*/
if(defined('e_PAGE') && e_PAGE == 'e107_update.php')
{
echo "
@@ -413,9 +412,35 @@ function step6()
global $f;
$e107 = e107::getInstance();
$stepCaption = 'Step 6: Thread and post data';
$threadLimit = 2500;
$threadLimit = 300;
$lastThread = varset($f->updateInfo['lastThread'], 0);
if(!isset($_POST['move_thread_data']))
{
$count = $e107->sql->db_Count('forum_t', '(*)', "WHERE thread_parent = 0 AND thread_id > {$lastThread}");
$text = "
This step will copy all of your existing forum threads and posts into the new `forum_thread` and `forum_post` tables.<br /><br />
Depending on your forum size and speed of server, this could take some time. This routine will attempt to do it in steps in order to
reduce the possibility of data loss and server timeouts.<br />
<br /><br />
It appears there are {$count} forum threads to convert, we will be doing it in steps of {$threadLimit}
<br /><br />
<form method='post'>
<input class='button' type='submit' name='move_thread_data' value='Begin thread data move' />
</form>
";
$e107->ns->tablerender($stepCaption, $text);
return;
}
$count = $e107->sql->db_Count('forum_t', '(*)', "WHERE thread_parent = 0 AND thread_id > {$lastThread}");
if($count === false)
{
echo "error: Unable to determine last thread id";
exit;
}
$qry = "
SELECT thread_id FROM `#forum_t`
WHERE thread_parent = 0
@@ -423,14 +448,56 @@ function step6()
ORDER BY thread_id ASC
LIMIT 0, {$threadLimit}
";
if($e107->sql->db_Select_gen($qry, true))
if($e107->sql->db_Select_gen($qry))
{
$postCount = 0;
$threadList = $e107->sql->db_getList();
$text = '';
foreach($threadList as $t)
{
echo "Migrating thread {$t['thread_id']} <br />";
$result = $f->migrateThread($t['thread_id']);
$id = (int)$t['thread_id'];
$result = $f->migrateThread($id);
if($result === false)
{
echo "ERROR! Failed to migrate thread id: {$id}<br />";
}
else
{
$postCount += ($result-1);
$f->updateInfo['lastThread'] = $id;
$f->setUpdateInfo();
}
}
$text .= '<br />Successfully converted '.count($threadList)." threads and {$postCount} replies.<br />";
$text .= "Last thread id = {$t['thread_id']}<br />";
$count = $e107->sql->db_Count('forum_t', '(*)', "WHERE thread_parent = 0 AND thread_id > {$f->updateInfo['lastThread']}");
if($count)
{
$text .= "
We still have {$count} threads remaining to convert.<br />
<br /><br />
<form method='post'>
<input class='button' type='submit' name='move_thread_data' value='Continue thread data move' />
</form>
";
$e107->ns->tablerender($stepCaption, $text);
}
else
{
$text .= "
Thread migration is complete!!
<br /><br />
<form method='post'>
<input class='button' type='submit' name='nextStep[7]' value='Proceed to step 7' />
</form>
";
$e107->ns->tablerender($stepCaption, $text);
}
}
}
@@ -517,27 +584,100 @@ class forumUpgrade
if($post['thread_parent'] == 0)
{
$result = $this->addThread($post);
$result = $this->addPost($post);
if($result)
{
$result = $this->addPost($post);
}
}
else
{
$result = $this->addPost($post);
}
}
return ($result ? count($threadData) : false);
}
return false;
}
function addThread(&$post)
{
echo "Adding thread {$post['thread_id']}<br />";
// var_dump($post);
global $forum;
$e107 = e107::getInstance();
$thread = array();
$thread['thread_id'] = $post['thread_id'];
$thread['thread_name'] = $post['thread_name'];
$thread['thread_forum_id'] = $post['thread_forum_id'];
$thread['thread_datestamp'] = $post['thread_datestamp'];
$thread['thread_views'] = $post['thread_views'];
$thread['thread_active'] = $post['thread_active'];
$thread['thread_sticky'] = $post['thread_s'];
$userInfo = $this->getUserInfo($post['thread_user']);
$thread['thread_user'] = $userInfo['user_id'];
$thread['thread_user_anon'] = $userInfo['anon_name'];
$thread['_FIELD_TYPES'] = $forum->fieldTypes['forum_thread'];
$thread['_FIELD_TYPES']['thread_name'] = 'escape'; //use escape to prevent double entities
return $e107->sql->db_Insert('forum_thread', $thread);
// print_a($thread);
}
function addPost(&$post)
{
echo "Adding post {$post['thread_id']}<br />";
global $forum;
$e107 = e107::getInstance();
$newPost = array();
$newPost['post_id'] = $post['thread_id'];
$newPost['post_thread'] = ($post['thread_parent'] == 0 ? $post['thread_id'] : $post['thread_parent']);
$newPost['post_entry'] = $post['thread_thread'];
$newPost['post_forum'] = $post['thread_forum_id'];
$newPost['post_datestamp'] = $post['thread_datestamp'];
$newPost['post_edit_datestamp'] = ($post['thread_edit_datestamp'] ? $post['thread_edit_datestamp'] : '_NULL_');
$userInfo = $this->getUserInfo($post['thread_user']);
$newPost['post_user'] = $userInfo['user_id'];
$newPost['post_user_anon'] = $userInfo['anon_name'];
$newPost['post_ip'] = $userInfo['user_ip'];
$newPost['_FIELD_TYPES'] = $forum->fieldTypes['forum_post'];
$newPost['_FIELD_TYPES']['post_entry'] = 'escape'; //use escape to prevent double entities
// print_a($newPost);
return $e107->sql->db_Insert('forum_post', $newPost);
}
function getUserInfo(&$info)
{
$e107 = e107::getInstance();
$tmp = explode('.', $info);
$ret = array(
'user_id' => 0,
'user_ip' => '_NULL_',
'anon_name' => '_NULL_'
);
if(count($tmp) == 2)
{
$id = (int)$tmp[0];
if($id == 0) //Anonymous post
{
$_tmp = explode(chr(0), $tmp[1]);
if(count($_tmp) == 2) //Ip address exists
{
$ret['user_ip'] = $e107->ipEncode($_tmp[1]);
$ret['anon_name'] = $_tmp[0];
}
}
else
{
$ret['user_id'] = $id;
}
}
else
{
$ret['anon_name'] = 'Unknown';
}
return $ret;
}
}
@@ -546,37 +686,37 @@ function forum_update_adminmenu()
{
global $currentStep;
$var[1]['text'] = 'Step 1 - Permissions';
$var[1]['text'] = '1 - Permissions';
$var[1]['link'] = '#';
$var[2]['text'] = 'Step 2 - Create new tables';
$var[2]['text'] = '2 - Create new tables';
$var[2]['link'] = '#';
$var[3]['text'] = 'Step 3 - Create extended fields';
$var[3]['text'] = '3 - Create extended fields';
$var[3]['link'] = '#';
$var[4]['text'] = 'Step 4 - Move user data';
$var[4]['text'] = '4 - Move user data';
$var[4]['link'] = '#';
$var[5]['text'] = 'Step 5 - Migrate forum configuration';
$var[5]['text'] = '5 - Migrate forum config';
$var[5]['link'] = '#';
$var[6]['text'] = 'Step 6 - Migrate threads/replies';
$var[6]['text'] = '6 - Migrate threads/replies';
$var[6]['link'] = '#';
$var[7]['text'] = 'Step 7 - Calc counts/lastpost data';
$var[7]['text'] = '7 - Calc counts/lastpost data';
$var[7]['link'] = '#';
$var[8]['text'] = 'Step 8 - Migrate any poll information';
$var[8]['text'] = '8 - Migrate any poll data';
$var[8]['link'] = '#';
$var[9]['text'] = 'Step 9 - Migrate any attachments';
$var[9]['text'] = '9 - Migrate any attachments';
$var[9]['link'] = '#';
$var[10]['text'] = 'Step 10 - Migrate any attachments';
$var[10]['text'] = '10 - Migrate any attachments';
$var[10]['link'] = '#';
$var[11]['text'] = 'Step 11 - Delete old forum data';
$var[11]['text'] = '11 - Delete old forum data';
$var[11]['link'] = '#';

View File

@@ -1,21 +1,18 @@
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| <20>Steve Dunstan 2001-2002
| http://e107.org
| jalist@e107.org
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_viewtopic.php,v $
| $Revision: 1.18 $
| $Date: 2008-12-18 14:08:33 $
| $Author: mcfly_e107 $
+----------------------------------------------------------------------------+
* e107 website system
*
* Copyright (C) 2001-2008 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Message Handler
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_viewtopic.php,v $
* $Revision: 1.19 $
* $Date: 2008-12-20 23:59:00 $
* $Author: mcfly_e107 $
*
*/
require_once ('../../class2.php');