Importing data from phpBB2
CONTENT;
//Connect to and select Database
echo "Connecting to Database...\n";
$lnk = mysql_connect($host, $user, $pass) or die ('Not connected: ' . mysql_error());
mysql_select_db($db, $lnk) or die('Error: '.mysql_error());
echo "OK\n";
//Populate Categories
echo "
Populating Categories...\n";
$query="TRUNCATE TABLE {$mosConfig_dbprefix}sb_categories";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Import the main categories
$query="INSERT INTO {$mosConfig_dbprefix}sb_categories (id,parent,name,cat_emoticon,locked,alert_admin,moderated,moderators,pub_access,pub_recurse,admin_access,admin_recurse,ordering,future2,published,checked_out,checked_out_time,review,hits,description) SELECT cat_id + 500, 0, cat_title, 0, 0, 0, 0, NULL, 0, 0, 0, 0, cat_order, 0, 1, 0, '0000-00-00 00:00:00', 0, 0, '' FROM {$phpbb_dbprefix}categories ORDER BY cat_order";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Import the forums
$query="INSERT INTO {$mosConfig_dbprefix}sb_categories (id,parent,name,ordering,description,pub_access,pub_recurse,published) SELECT forum_id, cat_id + 500, forum_name, forum_order, forum_desc, 0, 0, 1 FROM {$phpbb_dbprefix}forums";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
echo "OK\n";
//Populate Messages Table
echo "
Populating Messages Table...\n";
$query="TRUNCATE TABLE {$mosConfig_dbprefix}sb_messages";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
$query="ALTER TABLE `{$mosConfig_dbprefix}sb_messages` ADD `phpbb_userid` int(10) NOT NULL default '1'";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Read all threads and posts from phpbb
$query="SELECT p.post_id, p.poster_ip, p.topic_id, p.poster_id, p.post_time, t.topic_title, t.forum_id, t.topic_views"
." FROM {$phpbb_dbprefix}posts AS p, {$phpbb_dbprefix}topics AS t WHERE p.topic_id = t.topic_id"
." ORDER BY p.topic_id, p.post_id";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Iterate over all the posts and add them to simpleboard after some conversion
$currentthread = "";
$lastpost = 0;
while ($row = mysql_fetch_object($result)) {
// Convert ip to sb-format
$row->poster_ip = phpbb_decode_ip($ip);
// Check if we have a new thread number
if ( $currenttopicid != $row->topic_id ) {
$currenttopicid = $row->topic_id;
$currentthread = $row->post_id;
$lastpost = 0;
$subject = addslashes( $row->topic_title );
} else {
$subject = "Re: " . addslashes( $row->topic_title );
}
// Insert the post into the database
$query="INSERT INTO `{$mosConfig_dbprefix}sb_messages`"
." (id, ip, phpbb_userid, userid, name, time, thread, subject, hits, catid, parent)"
." VALUES ('$row->post_id', '$row->poster_ip', '$row->poster_id', '$row->poster_id', '$row->poster_id', "
." '$row->post_time', '$currentthread', '$subject', '$row->topic_views', '$row->forum_id', '$lastpost')";
$updateresult = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
$lastpost = $row->post_id;
}
mysql_free_result($result);
echo "OK\n";
//Populate Messages_Text Table
echo "
Populating Messages_Text Table...\n";
$query="TRUNCATE TABLE {$mosConfig_dbprefix}sb_messages_text";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
$query="SELECT post_id, post_text FROM {$phpbb_dbprefix}posts_text";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
$mtext = array();
$mpostid = array();
while ($row = mysql_fetch_object($result)) {
$text = addslashes($row->post_text);
$mtext[] = prep($text);
$mpostid[] = $row->post_id;
}
mysql_free_result($result);
for ($i=0; $i < count($mtext); $i++){
$query="INSERT INTO `{$mosConfig_dbprefix}sb_messages_text`"
." (mesid, message) VALUES"
." (".$mpostid[$i].", \"".$mtext[$i]."\")";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
}
echo "OK\n";
//Populate Users Table
echo "
Populating Users Table...\n";
$query="TRUNCATE TABLE {$mosConfig_dbprefix}sb_users";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Get the group id:s for regular users and administrators in Mambo.
$query = "SELECT group_id FROM {$mosConfig_dbprefix}core_acl_aro_groups WHERE name='Registered' OR name='Administrator' ORDER BY name ASC";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
$admingid = mysql_result( $result, 0, 0 );
$usergid = mysql_result( $result, 1, 0 );
// Read all users from phpBB2
$query="SELECT u.*, b.ban_userid FROM {$phpbb_dbprefix}users AS u LEFT OUTER JOIN {$phpbb_dbprefix}banlist AS b ON u.user_id = b.ban_userid WHERE user_id > 0 ORDER BY u.user_id";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
while ( $row = mysql_fetch_object( $result ) ) {
// Is this user banned?
$block = "0";
if ( $row->ban_userid ) {
$block = "1";
}
// Convert date for last visit and register date.
$registerDate = date( "Y-m-d H:i:s", $joindate );
$lastvisitDate = date( "Y-m-d H:i:s", $lastlog );
// Set user type and group id
if ( $row->user_level == "1" ) {
$usertype = "administrator";
$gid = $admingid;
} else {
$usertype = "user";
$gid = $usergid;
}
// Convert bbcode in signature
$row->user_sig = prep( $row->user_sig );
// No imported users will get mails from the admin
$emailadmin = "0";
print "$row->username, ";
// Insert user into Mambo user table
$query = "
INSERT INTO {$mosConfig_dbprefix}users
(name, username, email, password, usertype, block, sendEmail, gid, registerDate, lastvisitDate)
VALUES ('$row->username', '$row->username', '$row->user_email', '$row->user_password', '$usertype', '$block', '$emailadmin', '$gid', '$registerDate', '$lastvisitDate')
";
mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
$newuserid = mysql_insert_id( );
// Add user to core acl groups map
$query = "INSERT INTO {$mosConfig_dbprefix}core_acl_groups_aro_map ( group_id, aro_id ) VALUES ( $gid, $newuserid )";
mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Add user to core acl aro map
$query = "INSERT INTO {$mosConfig_dbprefix}core_acl_aro (aro_id,section_value,value,order_value,name,hidden) VALUES ( $newuserid, 'users', $newuserid, 0, '$row->username', 0 )";
mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Update all posts from this user with the correct userid and username
$query = "UPDATE `{$mosConfig_dbprefix}sb_messages` SET userid = '$newuserid', name = '$row->username' WHERE phpbb_userid = '$row->user_id'";
mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
// Add the user to the simpleboard usertable
$query = "INSERT INTO `{$mosConfig_dbprefix}sb_users` (userid, posts, signature) VALUES ('$newuserid', '$row->user_posts', '$row->user_sig')";
mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
}
//mysql_free_result($result);
// Remove the placeholder for the userid from phpBB2
$query="ALTER TABLE `{$mosConfig_dbprefix}sb_messages` DROP `phpbb_userid`";
$result = mysql_query($query) or die("
Invalid query:
$query
" . mysql_error());
echo "OK\n";
echo "
Complete...\n";
echo <<