simple machines forum to phpBB

This is an archive of the phpBB 2.0.x convertors forum. Support for phpBB2 has now ended.
Forum rules
Following phpBB2's EoL, this forum is now archived for reference purposes only.
Please see the following announcement for more information: viewtopic.php?f=14&t=1385785
Locked
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

simple machines forum to phpBB

Post by nedostizni »

simple machines forum sistem? IS there any possibility it can be converted to the phpBB? I heard somewhere that it is similar to YaBB system. Is this true?
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

I don't know about being similar to YaBB, but there are convertors for smf to phpBB.

SMF 1.0.x
SMF 1.1 RC2

depending on the version of smf you have.
Have you hugged someone today?
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

Post by nedostizni »

thanks for the reply.
I thought that it is similar to YaBB because i saw that it has a similar theme as YaBB (the theme was even named something like "YaBB theme" at one smf forum).

So now i when i have coverted smf forum to phpBB i want to transfer all the posts from that phpBB forum to another phpBB forum.
How to do that?
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

I am not sure what you mean. If you want to transfer to a different host, read these:
Moving a database
Transfer hosts/backup and restore database

If you want to merge with an existing phpBB forum, read these:
Junction of Forum's
Merging two forums
Have you hugged someone today?
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

Post by nedostizni »

yes, i want to merge two phpBB forums into one forum by following:

the merge should be done only with the these two databases. The rest (phpBB versions, templates and Mods installed) should remain as they are on the first forum. So all i want to do is to merge the database of my second phpBB forum with the database of my first one.
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

nedostizni wrote: yes, i want to merge two phpBB forums into one forum by following:

the merge should be done only with the these two databases. The rest (phpBB versions, templates and Mods installed) should remain as they are on the first forum. So all i want to do is to merge the database of my second phpBB forum with the database of my first one.

Then what you want to do is convert the smf forum to phpBB and then merge the two phpBB forums. In the scripts I linked to above, you can set one forum as the main one and the other to merge into it.
Have you hugged someone today?
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

Post by nedostizni »

thanks for the reply, and sorry for my late one.
Just tell me wich the above script is the best for this work?
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

nedostizni wrote: thanks for the reply, and sorry for my late one.
Just tell me wich the above script is the best for this work?

I have used this one and it works fairly well.

http://www.phpbb.com/phpBB/viewtopic.ph ... 25#1123325
Have you hugged someone today?
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

Post by nedostizni »

thanks for the reply once again and sorry for my late answer.

I haven`t understood the reply you have linked ( http://www.phpbb.com/phpBB/viewtopic.ph ... 25#1123325 ) where is the error in the script? And is it safe ("safe" in meaning: does that script still have those errors) if i use the one whose link was there ( http://www.typo.nl/misc/merge_phpbb.phps )?
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

This script, http://www.phpbb.com/phpBB/viewtopic.ph ... 25#1123325 is an improvement on the other script. That is why I linked you to this script.

As far as I know, there are no errors in the script. I have used it a couple of times and not had any errors.
Have you hugged someone today?
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

Post by nedostizni »

thanks for the reply once again mate. So one more thing: i still don`t get it, wich of these two things is the script.

This one: http://www.typo.nl/misc/merge_phpbb.phps

Or this one:

Code: Select all

<?php 

$dbms = 'mysql'; 
$phpbb_root_path = '../forums/'; 

$dbhost = 'localhost'; 

$dbuser = ''; 
$dbpasswd = ''; 

// Name and prefix for the database that should keep the original IDs 

$dbname1 = ''; 
$table_prefix1 = ''; 

// Name and prefix for the database that is going to be added 
// to DB1. 
$dbname2 = ''; 
$table_prefix2 = ''; 


# NO NEED TO MODIFY CODE BELOW 
# MODIFY ONLY IF U KNOW WHAT U R DOING 


define('IN_PHPBB', true); 
// Use DB1 for the initial config table etc. 
$dbname = $dbname1; 
$table_prefix = $table_prefix1; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'includes/constants.'.$phpEx); 
include($phpbb_root_path . 'includes/db.'.$phpEx); 


// These tables can be dropped from DB2 (not used in this script) 
$drop_tables = array( 
   "config", 
   "banlist", // This one could be converted 
   "disallow", 
   "search_results", 
   "search_wordlist", 
   "search_wordmatch", 
   "sessions", 
   "smilies", 
   "themes", 
   "themes_name", 
   "words" 
   ); 
    
// All tables in DB2 that should shift ID. 
//  - table that needs shifting (categories) 
//  - id in table (cat_id) 
//    nested array: 
//    - table that depends on id (forums) 
//    - id that corresponds to id in original table (cat_id) 
$shift_tables = array( 
   "categories" => array( 
      "cat_id", 
      array( 
         array("forums", "cat_id") 
      ) 
   ), 
   "forums" => array( 
      "forum_id", 
      array( 
         array("posts", "forum_id"), 
         array("topics", "forum_id"), 
         array("forum_prune", "forum_id"), 
         array("auth_access", "forum_id") 
      ) 
   ), 
   "forum_prune" => array( 
      "prune_id", 
      array() 
   ), 
   "groups" => array( 
      "group_id", 
      array( 
         array("user_group", "group_id"), 
         array("auth_access", "group_id") 
      ) 
   ), 
   "posts" => array( 
      "post_id", 
      array( 
         array("posts_text", "post_id"), 
         array("topics", "topic_first_post_id"), 
         array("topics", "topic_last_post_id") 
      ) 
   ), 
   "privmsgs" => array( 
      "privmsgs_id", 
      array( 
         array("privmsgs_text", "privmsgs_text_id"), 
         array("users", "user_last_privmsg") 
      ) 
   ), 
   "topics" => array( 
      "topic_id", 
      array( 
         array("posts", "topic_id"), 
         array("topics_watch", "topic_id"), 
         array("vote_desc", "topic_id") 
      ) 
   ), 
   "users" => array( 
      "user_id", 
      array( 
         array("user_group", "user_id"), 
         array("groups", "group_moderator"), 
         array("posts", "poster_id"), 
         array("topics", "topic_poster"), 
         array("privmsgs", "privmsgs_to_userid"), 
         array("privmsgs", "privmsgs_from_userid"), 
         array("topics_watch", "user_id"), 
         array("vote_voters", "vote_user_id") 
      ) 
   ), 
   "ranks" => array( 
      "rank_id", 
      array( 
         array("users", "user_rank") 
      ) 
   ), 
   "vote_desc" => array( 
      "vote_id", 
      array( 
         array("vote_voters", "vote_id"), 
         array("vote_results", "vote_id") 
      ) 
   ) 
); 

$bla_tables = array( 
   "auth_access", 
   "user_group", 
   "posts_text", 
   "privmsgs_text", 
   "topics_watch", 
   "vote_results", 
   "vote_voters" 
   ); 


// Traverse the shift_tables array 

foreach($shift_tables as $key => $value) 
{ 
   $table = $key; 
   $merge_tables[$table] = 0; // keep an array with all tables that need merging 
   $column = $value[0]; // Column with ID that needs to be shifted 
   $ref = $value[1]; // Tables that are using the mentioned ID. 
   print "Shifting IDs in table $table<br />\n"; 
   $max = shift_ids($table, $column); 
   flush(); 
   // Do the dependent tables 
   foreach($ref as $key => $value) 
   { 
      $d_table = $value[0]; 
      $merge_tables[$d_table] = 0; 
      $d_column = $value[1]; 
      print "&nbsp; Altering dependent table: $d_table : $d_column (offset = $max)<br />\n"; 
      flush(); 
      shift_ids($d_table, $d_column, $max); 
   } 
    
   print "<br />\n"; 
   flush(); 
} 

foreach($merge_tables as $table => $value) 
{ 
   print "Merging $table table: "; 
   if(merge_tables($table)) 
   { 
      print " OK<br />\n"; 
   } 
   else 
   { 
      print " FAILED!<br />\n"; 
   } 
} 

print "Merging users (username and either password or email are the same).<br />"; 
$sql = " 
   SELECT 
      u1.user_id as id1, 
      u2.user_id as id2, 
      u1.username 
   FROM 
      " . USERS_TABLE . " u1, 
      " . USERS_TABLE . " u2 
   WHERE 
      u1.username = u2.username 
      && (u1.user_password = u2.user_password 
         || u1.user_email = u2.user_email) 
      && u1.user_id != u2.user_id 
      && u1.user_id < u2.user_id"; 
if(!$result = $db->sql_query($sql)) 
{ 
    message_die(GENERAL_ERROR, 'Could not query for double user records.', '', __LINE__, __FILE__, $sql); 
} 

print "<table cellpadding='0' cellspacing='0'>"; 
while($row = $db->sql_fetchrow($result)) 
{ 
   print "<tr><td> ".$row['id1']."&nbsp;</td><td> ".$row['id2']."&nbsp;</td><td> ".$row['username']."&nbsp;</td><td> "; 
   merge_users($row['id1'], $row['id2']); 
   print " </td></tr>\n"; 
} 
print "</table>"; 


function merge_users($user_id1, $user_id2) 
{ 
   global $db; 
   global $shift_tables; 
   global $table_prefix1; 
    
   $user_deps = $shift_tables['users'][1]; 

   // The users table should be skipped and the user_posts column should be updated. 
    
   foreach($user_deps as $key => $value) 
   { 
      $d_table = $value[0]; 
      $d_column = $value[1]; 
      $sql = "UPDATE $table_prefix1$d_table SET $d_column = $user_id1 WHERE $d_column = $user_id2"; 
      if(!$result = $db->sql_query($sql)) 
      { 
          message_die(GENERAL_ERROR, 'Could not update user_id.', '', __LINE__, __FILE__, $sql); 
      } 
   } 
    
   $sql = "DELETE FROM " . $table_prefix1 . "users WHERE user_id = $user_id2"; 
   if(!$result = $db->sql_query($sql)) 
   { 
       message_die(GENERAL_ERROR, 'Could not delete user2.', '', __LINE__, __FILE__, $sql); 
   } 

   print "OK"; 
   return; 
} 

function double_users() 
{ 
   global $db; 
   global $table_prefix1; 

   $users_table = $table_prefix1 . "users"; 

   $sql = "SELECT user_id, "; 
} 

function merge_tables($table) 
{ 

echo "<H1>Merging table : $table </H1>"; 

   global $db; 
   global $dbname1, $table_prefix1, $dbname2, $table_prefix2; 

    
   $sql = "SHOW FIELDS FROM $table_prefix1$table"; 
   if(!$result = $db->sql_query($sql)) 
   { 
       message_die(GENERAL_ERROR, 'Could not get field info from $table.', '', __LINE__, __FILE__, $sql); 
   } 
    
   $fields = array(); 
   while($row = $db->sql_fetchrow($result)) 
   { 
      $fields[] = $row['Field']; 
   } 
   $fieldlist = implode($fields, ', '); 
    

   if($table == 'users') 
   { 
      $where = " WHERE $dbname2.$table_prefix2" . $table . ".user_id > 0"; 
   } 
   else 
   { 
      $where = ''; 
   } 

   echo "$table"; 
    
   $sql = "INSERT INTO $dbname1.$table_prefix1".$table." ($fieldlist) SELECT $fieldlist from $dbname2.$table_prefix2" . $table . $where; 
   if(!$db->sql_query($sql)) 
   { 
       message_die(GENERAL_ERROR, 'Could not merge $table.', '', __LINE__, __FILE__, $sql); 
   } 

   return TRUE; 
} 


// Shift all ID's in column $id in table $table in 
// database 2 by MAX($id) or (if not 0) by $offset 
function shift_ids($table, $id, $offset = 0) 
{ 
   global $db; 
   global $dbname1, $table_prefix1; 
   global $dbname2, $table_prefix2; 

   // Offset hasn't been given, we're going to figure it out ourselfs 
   if($offset == 0) 
   { 
      if(!$offset = getmax($dbname1, $table_prefix1.$table, $id)) 
      { 
         // Empty table, no need to shift IDs 
         print "Empty table? Skipping...<br />\n"; 
         return; 
      } 
   } 

   // What's the max_id in the current table? 
   $max2 = getmax($dbname2, $table_prefix2.$table, $id); 
   $max2 = intval($max2); // Make sure that max2 contains a number, make it 0 if this table is empty. 

// First we add the offset + the max of the current table 
   // Treat values of 0 and lower as special values. 
   $sql = "UPDATE $dbname2." . $table_prefix2 . $table . " SET $id = $id + $max2 + $offset WHERE $id > 0"; 
   print "$sql<br />\n"; 
   if(!$result = $db->sql_query($sql) ) 
   { 
       message_die(GENERAL_ERROR, 'Could not fetch max(id).', '', __LINE__, __FILE__, $sql); 
   } 
    
   // Then we subtract the max of the current table again. 
   // We do this to prevent problems with key constrains from happening 
   // i.e. if we do id=id+20 on key 1 when key 21 already exists we would get an error 
   $sql = "UPDATE $dbname2." . $table_prefix2 . $table . " SET $id = $id - $max2 WHERE $id > 0"; 
   print "$sql<br />\n"; 
   if(!$result = $db->sql_query($sql) ) 
   { 
       message_die(GENERAL_ERROR, 'Could not fetch max(id).', '', __LINE__, __FILE__, $sql); 
   } 

   return $offset; 
} 

function getmax($dbname, $table, $id) 
{ 
   global $db; 
      $sql = "SELECT MAX($id) as max_id FROM $dbname." . $table; 
      if(!$result = $db->sql_query($sql) ) 
      { 
          message_die(GENERAL_ERROR, 'Could not fetch max(id).', '', __LINE__, __FILE__, $sql); 
      } 
      if($max = $db->sql_fetchrow($result)) 
      { 
         return($max['max_id']); 
      } 
      else 
      { 
         // Probably no rows where returned.. Empty table. 
         return FALSE; 
      } 
} 


function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', $err_file = '', $sql = '') 
{ 
   global $db, $template, $board_config, $theme, $lang, $phpEx, $phpbb_root_path, $nav_links, $gen_simple_header; 
   global $userdata, $user_ip, $session_length; 
   global $starttime; 

   $sql_store = $sql; 
    
   // 
   // Get SQL error if we are debugging. Do this as soon as possible to prevent 
   // subsequent queries from overwriting the status of sql_error() 
   // 
   $sql_error = $db->sql_error(); 

   $debug_text = ''; 

   if ( $sql_error['message'] != '' ) 
   { 
      $debug_text .= '<br /><br />SQL Error : ' . $sql_error['code'] . ' ' . $sql_error['message']; 
   } 

   if ( $sql_store != '' ) 
   { 
      $debug_text .= "<br /><br />$sql_store"; 
   } 

   if ( $err_line != '' && $err_file != '' ) 
   { 
      $debug_text .= '</br /><br />Line : ' . $err_line . '<br />File : ' . $err_file; 
   } 

   print $debug_text; 

   exit; 
} 

echo "Done"; 

?> 
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

nedostizni wrote: thanks for the reply once again mate. So one more thing: i still don`t get it, wich of these two things is the script.

Use the script you have posted in the code box.
Have you hugged someone today?
User avatar
nedostizni
Registered User
Posts: 391
Joined: Tue Mar 04, 2003 7:25 pm

Post by nedostizni »

thanks for help once again mate.

At last, just this: wich version (or wich version you had when you used the script) of phpBB should i have ?
User avatar
D¡cky
Former Team Member
Posts: 11812
Joined: Tue Jan 25, 2005 8:38 pm
Location: New Hampshire, USA
Name: Richard Foote
Contact:

Post by D¡cky »

nedostizni wrote: thanks for help once again mate.

At last, just this: wich version (or wich version you had when you used the script) of phpBB should i have ?

Always use the latest version of phpBB. At this time it is 2.0.21.
Have you hugged someone today?
Locked

Return to “[2.0.x] Convertors”