server, $this->user, $this->password); * * to this: * * @mysql_connect($this->server, $this->user, $this->password, true); * ****************************************************************************/ /*************************************************************************** * SETUP ****************************************************************************/ // phorum.org database $phorum_dbname = ""; $phorum_dbhost = ""; $phorum_dbuser = ""; $phorum_dbpasswd = ""; $phorum_forums_table = "forums"; /* =================================================================== */ define('IN_PHPBB', 1); $phpbb_root_path = './'; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'config.'.$phpEx); include($phpbb_root_path . 'includes/constants.'.$phpEx); include($phpbb_root_path . 'includes/functions.'.$phpEx); include($phpbb_root_path . 'includes/functions_admin.'.$phpEx); include($phpbb_root_path . 'includes/functions_post.'.$phpEx); include($phpbb_root_path . 'includes/functions_search.'.$phpEx); include($phpbb_root_path . 'includes/db.'.$phpEx); $phorum_db = new sql_db($phorum_dbhost, $phorum_dbuser, $phorum_dbpasswd, $phorum_dbname, false); set_time_limit(0); /************************************************************************** * from admin/admin_forums.php **************************************************************************/ $forum_auth_ary = array( "auth_view" => AUTH_ALL, "auth_read" => AUTH_ALL, "auth_post" => AUTH_ALL, "auth_reply" => AUTH_ALL, "auth_edit" => AUTH_REG, "auth_delete" => AUTH_REG, "auth_sticky" => AUTH_REG, "auth_announce" => AUTH_MOD, "auth_vote" => AUTH_REG, "auth_pollcreate" => AUTH_REG ); function convert( $a_string = '' ) { $a_string = preg_replace( '#[\\\]+#', '\\', $a_string ); $a_string = str_replace('\\\'', '\'', $a_string); $a_string = str_replace('\\', '\\\\', $a_string); $a_string = str_replace('\'', '\\\'', $a_string); $a_string = trim( $a_string ); return $a_string; } echo "
Starting the import...\n";
/**************************************************************************
* copied from admin/admin_forums.php
**************************************************************************/
$sql = "SELECT MAX(cat_order) AS max_order FROM " . CATEGORIES_TABLE;
if( !$result = $db->sql_query($sql) )
{
echo "Can't get max cat_order from " . CATEGORIES_TABLE . " table ($sql";
exit;
}
$row = $db->sql_fetchrow($result);
$max_order = $row['max_order'];
$next_order = $max_order + 10;
$sql = "INSERT INTO " . CATEGORIES_TABLE . " (cat_title, cat_order) VALUES ('Imported from Phorums', $next_order)";
if( !$result = $db->sql_query($sql) )
{
echo "Couldn't insert row in categories table '$sql'";
exit;
}
$cat_id = $db->sql_nextid();
echo "New category 'Imported from Phorums', ID: $cat_id\n";
$sql= "SELECT id,name,description,table_name FROM $phorum_forums_table WHERE parent=0 order by id";
if ( !($result = $phorum_db->sql_query($sql)) )
{
echo "Could not get list of forums in phorum db ($sql)";
exit;
}
if ( $row = $db->sql_fetchrow($result) )
{
do
{
$tablename = $row['table_name'];
$forumname = $row['name'];
$forumdesc = $row['description'];
$result_tmp = $phorum_db->sql_query( "SELECT COUNT(id) as forum_posts FROM $tablename");
$forum_posts = $phorum_db->sql_fetchfield('forum_posts');
if ( $forum_posts == '' ) { $forum_posts = 0; }
$result_tmp = $phorum_db->sql_query( "SELECT COUNT(id) as forum_topics FROM $tablename WHERE parent=0");
$forum_topics = $phorum_db->sql_fetchfield('forum_topics');
if ( $forum_topics == '' ) { $forum_topics = 0; }
$sql = "SELECT MAX(forum_order) AS max_order FROM " . FORUMS_TABLE . " WHERE cat_id = $cat_id";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Couldn't get order number from phpBB forums table ($sql)";
exit;
}
$row_tmp = $db->sql_fetchrow($result_tmp);
$max_order = $row_tmp['max_order'];
$next_order = $max_order + 10;
$sql = "SELECT MAX(forum_id) AS max_id FROM " . FORUMS_TABLE;
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Couldn't get max forum_id forums table ($sql)";
exit;
}
$row_tmp = $db->sql_fetchrow($result_tmp);
$max_id = $row_tmp['max_id'];
$next_id = $max_id + 1;
//
// Default permissions of public
//
$field_sql = "";
$value_sql = "";
while( list($field, $value) = each($forum_auth_ary) )
{
$field_sql .= ", $field";
$value_sql .= ", $value";
}
$sql = "INSERT INTO " . FORUMS_TABLE .
" (forum_id,cat_id,forum_name,forum_desc,forum_order,forum_posts,forum_topics,forum_status, prune_enable $field_sql)" .
" VALUES ($next_id,$cat_id, '" . convert( $forumname ) . "', '" . convert( $forumdesc ) .
"', $next_order, $forum_posts, $forum_topics, 0, 0 $value_sql)";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Couldn't insert row in categories table ($sql)";
exit;
}
$forum_id = $next_id;
echo " Added new forum '$forumname', ID: $forum_id\n";
$sql = "SELECT thread,subject,datestamp FROM $tablename WHERE parent=0";
if ( !($post_result = $phorum_db->sql_query($sql)) )
{
echo "Couldn't select threads from phorum $tablename ($sql)";
exit;
}
if ( $post_row = $phorum_db->sql_fetchrow($post_result) )
{
do
{
$thread = $post_row['thread'];
$subject = convert( $post_row['subject'] );
$ds = $post_row['datestamp'];
$datestamp = mktime(substr($ds, 11, 2),substr($ds, 14, 2),substr($ds, 17, 2),substr($ds, 5, 2),substr($ds, 8, 2),substr($ds, 0, 4));
$sql = "SELECT COUNT(id) as replies FROM $tablename WHERE thread=$thread AND parent <> 0";
if( !$result_tmp = $phorum_db->sql_query($sql) )
{
echo "Couldn't get thread count from $tablename where thread=$thread ($sql)";
exit;
}
$row_tmp = $phorum_db->sql_fetchrow($result_tmp);
$replies = $row_tmp['replies'];
unset( $row_tmp );
$sql = "INSERT INTO " . TOPICS_TABLE .
" (forum_id,topic_title,topic_poster,topic_time,topic_replies) " .
"VALUES ($forum_id, '" . convert( $subject ) . "', -1, $datestamp, $replies)";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Couldn't insert post into " . TOPICS_TABLE . " table phpBB ($sql)";
exit;
}
$topic_id = $db->sql_nextid();
echo " Added new topic '$subject', ID: $topic_id\n";
$sql = "SELECT " . $tablename . "_bodies.body, subject, author, datestamp FROM ".$tablename." inner join ".$tablename."_bodies on ".
$tablename . ".id = ".$tablename."_bodies.id WHERE ".$tablename.".thread=$thread ORDER BY ".$tablename.".id";
if ( !($replies_result = $phorum_db->sql_query($sql)) )
{
echo "Couldn't select replies from phorum $tablename ($sql)";
exit;
}
if ( $replies_row = $phorum_db->sql_fetchrow($replies_result) )
{
$topic_first_post_id = 0;
$topic_last_post_id = 0;
do
{
$author = convert( $replies_row['author'] );
$author = substr( $author, 0, 24);
$sub = convert( $replies_row['subject'] );
$body = convert( $replies_row['body'] );
$ds = $replies_row['datestamp'];
$datestamp= mktime(substr($ds, 11, 2),substr($ds, 14, 2),substr($ds, 17, 2),substr($ds, 5, 2),substr($ds, 8, 2),substr($ds, 0, 4));
$sql = "INSERT INTO " . POSTS_TABLE . " (topic_id,forum_id,poster_id,post_time,post_username,enable_bbcode,enable_smilies) " .
"VALUES ($topic_id, $forum_id, -1, $datestamp, '$author', 1, 1)";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Couldn't insert new post into " . POSTS_TABLE . " table '$sql'";
exit;
}
$post_id = $db->sql_nextid();
if ( $topic_first_post_id == 0 ) $topic_first_post_id = $post_id;
$topic_last_post_id = $post_id;
$sql = "INSERT INTO " . POSTS_TEXT_TABLE . "(post_id,post_subject,post_text) VALUES ($post_id,'$sub','$body')";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Couldn't insert new post_text into " . POSTS_TEXT_TABLE . "row in categories table '$sql'";
exit;
}
unset( $result_tmp );
add_search_words($post_id, stripslashes($body), stripslashes($sub));
// The database package keeps every sql query statment around.
// this is bad as it will eat up memory until PHP dies
// This clears the cache and clears up the memory.
unset( $db->last_query_text );
unset( $db->row );
$db->num_queries = 0;
$db->in_transaction = 0;
echo " Added replies '$subject', ID: $post_id\n";
} while( $replies_row = $phorum_db->sql_fetchrow($replies_result) );
$sql = "UPDATE " . TOPICS_TABLE . " SET topic_last_post_id=$topic_last_post_id, topic_first_post_id=$topic_first_post_id WHERE topic_id=$topic_id";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Can't update " . TOPICS_TABLE . " table '$sql'";
exit;
}
echo " Update topics ID: $topic_id : $topic_first_post_id - $topic_last_post_id\n";
}
} while( $post_row = $phorum_db->sql_fetchrow($post_result) );
}
$sql = "UPDATE " . FORUMS_TABLE . " SET forum_last_post_id=$topic_last_post_id WHERE forum_id=$forum_id";
if( !$result_tmp = $db->sql_query($sql) )
{
echo "Can't update " . FORUMS_TABLE . " table '$sql'";
exit;
}
} while ( $row = $db->sql_fetchrow($result) );
}
else
{
echo 'No forums in phorum db';
}
?>