Page 1 of 1

#1 Merging forum DB's

Posted: Wed Jul 20, 2005 12:27 pm
by Ace Pace
Okey, this is directed to anyone with database experiance(KAN, I guess I'm looking at you), how hard would it be to merge two/three differant forums?

#2

Posted: Wed Jul 20, 2005 1:22 pm
by Destructionator XV
What kind of forums? phpBB?
And what kind og db? MySQL?

#3

Posted: Wed Jul 20, 2005 4:31 pm
by Dark Silver
He's thinking about something he would like to see done when Project Arcana is unvieled

I discussed it with him earlier

#4 Re: Merging forum DB's

Posted: Wed Jul 20, 2005 8:26 pm
by Kreshna Aryaguna Nurzaman
Ace Pace wrote:Okey, this is directed to anyone with database experiance(KAN, I guess I'm looking at you), how hard would it be to merge two/three differant forums?
To be frank, I ain't familiar with PHPBB database, so the questions are:

(1) What is a record in PHPBB database? Is it a post?

(2) What is a table? A thread? Does a thread translate into a table in the database? Frankly, I don't think so, because there would be simply too many tables. That would be too overwhelming for a heavily-posted forum like SDN.

(3) And finally, what is a forum? My suspicion is that a forum is actually a table, where every single post is a database record. However, I guess the 'grouping' of posts in a thread is done by using some reference tables ('dimension tables'), to determine which post belongs to which thread.



Nevertheless, it is safe to conclude that merging PBPBB boards would involve a lot of data transformation.


For example, in Board A, there are "Video Games" forum, "Politics" forum, and "Sci-Fi" forum. Board B, on the other hand, has "Computer and Gaming" forum, "Star Wars" forum, and "Babylon Five" forum.

The merged board, say, Board C, would have the following forums:
(a) "Gaming" forum, which would contain threads from Board A's "Video Games" and Board B's "Computer and Gaming".
(b) "News and Politics" forum, which would contain threads from Board A's "Politics".
(c) "Science Fiction" forum, which would be a combination of Board A's "Sci-Fi" and Board B's "Star Wars" and "Babylon Five".


See, if my 'a forum = a table' assumption is correct, then the board merging process would involve a lot of ETL process; combining and merging one or more tables for every single 'result' table.

The good news is, that I suspect that the schema structure (table columns, table relationship, etc) would be basically similar accross different PHPBB boards; so I guess it's only a matter of merging the contents.


The cheapest way of doing ETL is, of course, by manually writing SQL scripts (INSERT...SELECT). In fact, it is always my most favorite method instead of using fancy GUIs.

However, it is always easier to use GUI. In fact, there is a lot of ETL tools out there like Micro$oft DTS (which is bundled with SQL server) and Sunopsis, although the latter is mostly for data synchronization instead of one-time insert. Unfortunately, so far I haven't found any that is available for free. :(

#5

Posted: Wed Jul 20, 2005 10:34 pm
by Destructionator XV
KAN, here is the SQL that would create all the tables from a phpBB fresh install. I hope the names of everything help you.

If you need any other information, I can probably get it for you; I have all the phpBB source files and the server running one at my disposal (with root powers no less). Just ask for anything you need.

One other thing to notice is that all the table names start with phpbb_. That prefix is set up by the admin during the phpBB install. If you select a different prefix, you can have multiple BBs running in one database.

Code: Select all

CREATE TABLE phpbb_auth_access(
	group_id mediumint(8) NOT NULL,
	forum_id smallint(5) unsigned NOT NULL,
	auth_view tinyint(1) NOT NULL,
	auth_read tinyint(1) NOT NULL,
	auth_post tinyint(1) NOT NULL,
	auth_reply tinyint(1) NOT NULL,
	auth_edit tinyint(1) NOT NULL,
	auth_delete tinyint(1) NOT NULL,
	auth_sticky tinyint(1) NOT NULL,
	auth_announce tinyint(1) NOT NULL,
	auth_vote tinyint(1) NOT NULL,
	auth_pollcreate tinyint(1) NOT NULL,
	auth_attachments tinyint(1) NOT NULL,
	auth_mod tinyint(1) NOT NULL, 
	KEY group_id (group_id), 
	KEY forum_id (forum_id)
);

CREATE TABLE phpbb_banlist(
	ban_id mediumint(8) unsigned NOT NULL auto_increment,
	ban_userid mediumint(8) NOT NULL,
	ban_ip varchar(8) NOT NULL,
	ban_email varchar(255), 
	PRIMARY KEY (ban_id), 
	KEY ban_ip_user_id (ban_ip, ban_userid)
);

CREATE TABLE phpbb_categories(
	cat_id mediumint(8) unsigned NOT NULL auto_increment,
	cat_title varchar(100),
	cat_order mediumint(8) unsigned NOT NULL, 
	PRIMARY KEY (cat_id), 
	KEY cat_order (cat_order)
);

CREATE TABLE phpbb_config(
	config_name varchar(255) NOT NULL,
	config_value varchar(255) NOT NULL, 
	PRIMARY KEY (config_name)
);
#

CREATE TABLE phpbb_disallow(
	disallow_id mediumint(8) unsigned NOT NULL auto_increment,
	disallow_username varchar(25) NOT NULL, 
	PRIMARY KEY (disallow_id)
);

CREATE TABLE phpbb_forums(
	forum_id smallint(5) unsigned NOT NULL,
	cat_id mediumint(8) unsigned NOT NULL,
	forum_name varchar(150),
	forum_desc text,
	forum_status tinyint(4) NOT NULL,
	forum_order mediumint(8) unsigned DEFAULT '1' NOT NULL,
	forum_posts mediumint(8) unsigned NOT NULL,
	forum_topics mediumint(8) unsigned NOT NULL,
	forum_last_post_id mediumint(8) unsigned NOT NULL,
	prune_next int(11),
	prune_enable tinyint(1) NOT NULL,
	auth_view tinyint(2) NOT NULL,
	auth_read tinyint(2) NOT NULL,
	auth_post tinyint(2) NOT NULL,
	auth_reply tinyint(2) NOT NULL,
	auth_edit tinyint(2) NOT NULL,
	auth_delete tinyint(2) NOT NULL,
	auth_sticky tinyint(2) NOT NULL,
	auth_announce tinyint(2) NOT NULL,
	auth_vote tinyint(2) NOT NULL,
	auth_pollcreate tinyint(2) NOT NULL,
	auth_attachments tinyint(2) NOT NULL, 
	PRIMARY KEY (forum_id), 
	KEY forums_order (forum_order), 
	KEY cat_id (cat_id), 
	KEY forum_last_post_id (forum_last_post_id)
);

CREATE TABLE phpbb_forum_prune(
	prune_id mediumint(8) unsigned NOT NULL auto_increment,
	forum_id smallint(5) unsigned NOT NULL,
	prune_days smallint(5) unsigned NOT NULL,
	prune_freq smallint(5) unsigned NOT NULL, 
	PRIMARY KEY (prune_id), 
	KEY forum_id (forum_id)
);

CREATE TABLE phpbb_groups(
	group_id mediumint(8) NOT NULL auto_increment,
	group_type tinyint(4) DEFAULT '1' NOT NULL,
	group_name varchar(40) NOT NULL,
	group_description varchar(255) NOT NULL,
	group_moderator mediumint(8) NOT NULL,
	group_single_user tinyint(1) DEFAULT '1' NOT NULL, 
	PRIMARY KEY (group_id), 
	KEY group_single_user (group_single_user)
);

CREATE TABLE phpbb_posts(
	post_id mediumint(8) unsigned NOT NULL auto_increment,
	topic_id mediumint(8) unsigned NOT NULL,
	forum_id smallint(5) unsigned NOT NULL,
	poster_id mediumint(8) NOT NULL,
	post_time int(11) NOT NULL,
	poster_ip varchar(8) NOT NULL,
	post_username varchar(25),
	enable_bbcode tinyint(1) DEFAULT '1' NOT NULL,
	enable_html tinyint(1) NOT NULL,
	enable_smilies tinyint(1) DEFAULT '1' NOT NULL,
	enable_sig tinyint(1) DEFAULT '1' NOT NULL,
	post_edit_time int(11),
	post_edit_count smallint(5) unsigned NOT NULL, 
	PRIMARY KEY (post_id), 
	KEY forum_id (forum_id), 
	KEY topic_id (topic_id), 
	KEY poster_id (poster_id), 
	KEY post_time (post_time)
);

CREATE TABLE phpbb_posts_text(
	post_id mediumint(8) unsigned NOT NULL,
	bbcode_uid varchar(10) NOT NULL,
	post_subject varchar(60),
	post_text text, 
	PRIMARY KEY (post_id)
);

CREATE TABLE phpbb_privmsgs(
	privmsgs_id mediumint(8) unsigned NOT NULL auto_increment,
	privmsgs_type tinyint(4) NOT NULL,
	privmsgs_subject varchar(255) NOT NULL,
	privmsgs_from_userid mediumint(8) NOT NULL,
	privmsgs_to_userid mediumint(8) NOT NULL,
	privmsgs_date int(11) NOT NULL,
	privmsgs_ip varchar(8) NOT NULL,
	privmsgs_enable_bbcode tinyint(1) DEFAULT '1' NOT NULL,
	privmsgs_enable_html tinyint(1) NOT NULL,
	privmsgs_enable_smilies tinyint(1) DEFAULT '1' NOT NULL,
	privmsgs_attach_sig tinyint(1) DEFAULT '1' NOT NULL, 
	PRIMARY KEY (privmsgs_id), 
	KEY privmsgs_from_userid (privmsgs_from_userid), 
	KEY privmsgs_to_userid (privmsgs_to_userid)
);

CREATE TABLE phpbb_privmsgs_text(
	privmsgs_text_id mediumint(8) unsigned NOT NULL,
	privmsgs_bbcode_uid varchar(10) NOT NULL,
	privmsgs_text text, 
	PRIMARY KEY (privmsgs_text_id)
);

CREATE TABLE phpbb_ranks(
	rank_id smallint(5) unsigned NOT NULL auto_increment,
	rank_title varchar(50) NOT NULL,
	rank_min mediumint(8) NOT NULL,
	rank_special tinyint(1),
	rank_image varchar(255), 
	PRIMARY KEY (rank_id)
);

CREATE TABLE phpbb_search_results(
	search_id int(11) unsigned NOT NULL,
	session_id varchar(32) NOT NULL,
	search_array text NOT NULL, 
	PRIMARY KEY (search_id), 
	KEY session_id (session_id)
);

CREATE TABLE phpbb_search_wordlist(
	word_text varchar(50) binary NOT NULL,
	word_id mediumint(8) unsigned NOT NULL auto_increment,
	word_common tinyint(1) unsigned NOT NULL, 
	PRIMARY KEY (word_text), 
	KEY word_id (word_id)
);

CREATE TABLE phpbb_search_wordmatch(
	post_id mediumint(8) unsigned NOT NULL,
	word_id mediumint(8) unsigned NOT NULL,
	title_match tinyint(1) NOT NULL, 
	KEY post_id (post_id), 
	KEY word_id (word_id)
);

CREATE TABLE phpbb_sessions(
	session_id char(32) NOT NULL,
	session_user_id mediumint(8) NOT NULL,
	session_start int(11) NOT NULL,
	session_time int(11) NOT NULL,
	session_ip char(8) NOT NULL,
	session_page int(11) NOT NULL,
	session_logged_in tinyint(1) NOT NULL,
	session_admin tinyint(2) NOT NULL, 
	PRIMARY KEY (session_id), 
	KEY session_user_id (session_user_id), 
	KEY session_id_ip_user_id (session_id, session_ip, session_user_id)
);

CREATE TABLE phpbb_smilies(
	smilies_id smallint(5) unsigned NOT NULL auto_increment,
	code varchar(50),
	smile_url varchar(100),
	emoticon varchar(75), 
	PRIMARY KEY (smilies_id)
);

CREATE TABLE phpbb_themes(
	themes_id mediumint(8) unsigned NOT NULL auto_increment,
	template_name varchar(30) NOT NULL,
	style_name varchar(30) NOT NULL,
	head_stylesheet varchar(100),
	body_background varchar(100),
	body_bgcolor varchar(6),
	body_text varchar(6),
	body_link varchar(6),
	body_vlink varchar(6),
	body_alink varchar(6),
	body_hlink varchar(6),
	tr_color1 varchar(6),
	tr_color2 varchar(6),
	tr_color3 varchar(6),
	tr_class1 varchar(25),
	tr_class2 varchar(25),
	tr_class3 varchar(25),
	th_color1 varchar(6),
	th_color2 varchar(6),
	th_color3 varchar(6),
	th_class1 varchar(25),
	th_class2 varchar(25),
	th_class3 varchar(25),
	td_color1 varchar(6),
	td_color2 varchar(6),
	td_color3 varchar(6),
	td_class1 varchar(25),
	td_class2 varchar(25),
	td_class3 varchar(25),
	fontface1 varchar(50),
	fontface2 varchar(50),
	fontface3 varchar(50),
	fontsize1 tinyint(4),
	fontsize2 tinyint(4),
	fontsize3 tinyint(4),
	fontcolor1 varchar(6),
	fontcolor2 varchar(6),
	fontcolor3 varchar(6),
	span_class1 varchar(25),
	span_class2 varchar(25),
	span_class3 varchar(25),
	img_size_poll smallint(5) unsigned,
	img_size_privmsg smallint(5) unsigned, 
	PRIMARY KEY (themes_id)
);

CREATE TABLE phpbb_themes_name(
	themes_id smallint(5) unsigned NOT NULL,
	tr_color1_name char(50),
	tr_color2_name char(50),
	tr_color3_name char(50),
	tr_class1_name char(50),
	tr_class2_name char(50),
	tr_class3_name char(50),
	th_color1_name char(50),
	th_color2_name char(50),
	th_color3_name char(50),
	th_class1_name char(50),
	th_class2_name char(50),
	th_class3_name char(50),
	td_color1_name char(50),
	td_color2_name char(50),
	td_color3_name char(50),
	td_class1_name char(50),
	td_class2_name char(50),
	td_class3_name char(50),
	fontface1_name char(50),
	fontface2_name char(50),
	fontface3_name char(50),
	fontsize1_name char(50),
	fontsize2_name char(50),
	fontsize3_name char(50),
	fontcolor1_name char(50),
	fontcolor2_name char(50),
	fontcolor3_name char(50),
	span_class1_name char(50),
	span_class2_name char(50),
	span_class3_name char(50), 
	PRIMARY KEY (themes_id)
);

CREATE TABLE phpbb_topics(
	topic_id mediumint(8) unsigned NOT NULL auto_increment,
	forum_id smallint(8) unsigned NOT NULL,
	topic_title char(60) NOT NULL,
	topic_poster mediumint(8) NOT NULL,
	topic_time int(11) NOT NULL,
	topic_views mediumint(8) unsigned NOT NULL,
	topic_replies mediumint(8) unsigned NOT NULL,
	topic_status tinyint(3) NOT NULL,
	topic_vote tinyint(1) NOT NULL,
	topic_type tinyint(3) NOT NULL,
	topic_first_post_id mediumint(8) unsigned NOT NULL,
	topic_last_post_id mediumint(8) unsigned NOT NULL,
	topic_moved_id mediumint(8) unsigned NOT NULL, 
	PRIMARY KEY (topic_id), 
	KEY forum_id (forum_id), 
	KEY topic_moved_id (topic_moved_id), 
	KEY topic_status (topic_status), 
	KEY topic_type (topic_type)
);

CREATE TABLE phpbb_topics_watch(
	topic_id mediumint(8) unsigned NOT NULL,
	user_id mediumint(8) NOT NULL,
	notify_status tinyint(1) NOT NULL, 
	KEY topic_id (topic_id), 
	KEY user_id (user_id), 
	KEY notify_status (notify_status)
);

CREATE TABLE phpbb_user_group(
	group_id mediumint(8) NOT NULL,
	user_id mediumint(8) NOT NULL,
	user_pending tinyint(1), 
	KEY group_id (group_id), 
	KEY user_id (user_id)
);

CREATE TABLE phpbb_users(
	user_id mediumint(8) NOT NULL,
	user_active tinyint(1) DEFAULT '1',
	username varchar(25) NOT NULL,
	user_password varchar(32) NOT NULL,
	user_session_time int(11) NOT NULL,
	user_session_page smallint(5) NOT NULL,
	user_lastvisit int(11) NOT NULL,
	user_regdate int(11) NOT NULL,
	user_level tinyint(4),
	user_posts mediumint(8) unsigned NOT NULL,
	user_timezone decimal(5,2) DEFAULT '0.00' NOT NULL,
	user_style tinyint(4),
	user_lang varchar(255),
	user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL,
	user_new_privmsg smallint(5) unsigned NOT NULL,
	user_unread_privmsg smallint(5) unsigned NOT NULL,
	user_last_privmsg int(11) NOT NULL,
	user_emailtime int(11),
	user_viewemail tinyint(1),
	user_attachsig tinyint(1),
	user_allowhtml tinyint(1) DEFAULT '1',
	user_allowbbcode tinyint(1) DEFAULT '1',
	user_allowsmile tinyint(1) DEFAULT '1',
	user_allowavatar tinyint(1) DEFAULT '1' NOT NULL,
	user_allow_pm tinyint(1) DEFAULT '1' NOT NULL,
	user_allow_viewonline tinyint(1) DEFAULT '1' NOT NULL,
	user_notify tinyint(1) DEFAULT '1' NOT NULL,
	user_notify_pm tinyint(1) NOT NULL,
	user_popup_pm tinyint(1) NOT NULL,
	user_rank int(11),
	user_avatar varchar(100),
	user_avatar_type tinyint(4) NOT NULL,
	user_email varchar(255),
	user_icq varchar(15),
	user_website varchar(100),
	user_from varchar(100),
	user_sig text,
	user_sig_bbcode_uid varchar(10),
	user_aim varchar(255),
	user_yim varchar(255),
	user_msnm varchar(255),
	user_occ varchar(100),
	user_interests varchar(255),
	user_actkey varchar(32),
	user_newpasswd varchar(32), 
	PRIMARY KEY (user_id), 
	KEY user_session_time (user_session_time)
);

CREATE TABLE phpbb_vote_desc(
	vote_id mediumint(8) unsigned NOT NULL auto_increment,
	topic_id mediumint(8) unsigned NOT NULL,
	vote_text text NOT NULL,
	vote_start int(11) NOT NULL,
	vote_length int(11) NOT NULL, 
	PRIMARY KEY (vote_id), 
	KEY topic_id (topic_id)
);

CREATE TABLE phpbb_vote_results(
	vote_id mediumint(8) unsigned NOT NULL,
	vote_option_id tinyint(4) unsigned NOT NULL,
	vote_option_text varchar(255) NOT NULL,
	vote_result int(11) NOT NULL, 
	KEY vote_option_id (vote_option_id), 
	KEY vote_id (vote_id)
);

CREATE TABLE phpbb_vote_voters(
	vote_id mediumint(8) unsigned NOT NULL,
	vote_user_id mediumint(8) NOT NULL,
	vote_user_ip char(8) NOT NULL, 
	KEY vote_id (vote_id), 
	KEY vote_user_id (vote_user_id), 
	KEY vote_user_ip (vote_user_ip)
);

CREATE TABLE phpbb_words(
	word_id mediumint(8) unsigned NOT NULL auto_increment,
	word char(100) NOT NULL,
	replacement char(100) NOT NULL, 
	PRIMARY KEY (word_id)
);

CREATE TABLE phpbb_confirm(
	confirm_id char(32) NOT NULL,
	session_id char(32) NOT NULL,
	code char(6) NOT NULL, 
	PRIMARY KEY (session_id, confirm_id)
);

#6

Posted: Thu Jul 21, 2005 3:39 am
by Kreshna Aryaguna Nurzaman
I WAS A FUCKING DUMBASS!!! Of course it only needs ONE table to hold up all the posts. How they would be grouped into forums is exactly just the same as they're grouped into threads; by reference columns. :oops:

I bet the database schema is very much alike from one PHPBB to another, so they won't be any needs for ETL; you just basically insert the rows from multiple databases into the target database.

In practice, however, you wouldn't want to do that, since it would cause too many forums in the target database, mostly with overlapping subjects.

For example, PHPBB 1 has "Science Fiction" and "Arts, Music, and Photos", while PHPBB 2 has "Sci-Fi", and "Artworks, Music, Movies, and Pics". Then the merged forum would have "Science Fiction", "Sci-Fi", "Arts, Music, and Photos", and "Artworks, Music, Movies, and Pics".

So first thing first, you guys have to decide which forums should be merged into one forum in the target database. Then you apply the decision by doing some UPDATE in the source databases; changing the content of the reference column of the parent table (phpbb_forums) as well as the child table (phpbb_posts), and then you merge the database.

#7

Posted: Thu Jul 21, 2005 4:11 am
by Ace Pace
So basicly before merging we're deleting all the double forums and only then merging.

Also, is it possible to have one merged user list, relevent to three differant forums?

Covering all the bases here.

#8

Posted: Thu Jul 21, 2005 4:50 am
by Kreshna Aryaguna Nurzaman
Ace Pace wrote:So basicly before merging we're deleting all the double forums and only then merging.
Actually it was updating instead of deleting.

For example, Librium Arcana and The Paladin Domain is going to be merged.

Librium Arcana has a forum named "Artwork, Music, Movies, and Photos", with forum_id=3.

The Paladin Domain has a forum named "Arts and Music", with forum_id=5.

Since both forums cover overlapping subjects, both admins has agree that the posts of both forums would be merged in a new forum called "Arts, Music, Movies, and Pictures", with a new forum id. Say, forum_id=2.

Thus, the table phpbb_forums in BOTH original boards should be updated to reflect the agreed changes, especially the forum_id, forum_name, and forum_desc columns. The changes should be also propagated to the child tables as well.

And then you copy the rows from both source databases into the new database.



Ace Pace wrote:Also, is it possible to have one merged user list, relevent to three differant forums?
Yes, however, THIS would be the most tedious job. Say, in Librium Arcana, my user name is "Kreshna Aryaguna Nurzaman", while in The Paladin Domain, my user name is "KAN". Now how to tell the admins that both user names actually belong to the same person? If we just merge the content of the table phpbb_users from both source database, then I would have two accounts in the new database!

#9

Posted: Thu Jul 21, 2005 4:57 am
by Ace Pace
No, say....

We simply(or not so simply) merge(and take out duplicate enteries) both user db's, is it possible to tell both forums to use the same list of users?

Say...KAN is renamed to Kreshna* (god your name is long), and the Paladin forum knows to look to Kreshna. even possible?

#10

Posted: Thu Jul 21, 2005 7:46 am
by Destructionator XV
Ace, I was working on doing exactly that for a while with my phpBB source. It is possible, but not quite easy.

We would have to do some modifications to the source to tell both of them to use the same user table. I will continue my work on this as soon as I can and get beck to you.

#11

Posted: Thu Jul 21, 2005 7:54 am
by Ace Pace
Wouldn't the only problem with telling both of them to use the same table be if they try to update it at the same time?

#12

Posted: Thu Jul 21, 2005 7:56 am
by Destructionator XV
Well, the same could be said about a thread with mulitple users trying to post in it at the same time. I don't think it will be too much of a problem.

#13

Posted: Thu Jul 21, 2005 7:59 am
by Ace Pace
So the phpbb software allready has a way to que(sp) up posts to add to the thread.

So IF there is a problem with users posting at the same time, we could just copy that solution?

#14

Posted: Thu Jul 21, 2005 8:21 am
by Robert Walper
Librium Arcana wrote: The Internet is changed.

I feel it in the keyboard. I see it in the monitor. I smell it in the air. Much that once was...is lost. For none now post who remember it.

It began with the forging of the great Boards.

Three were given to the experts. Educated, smartest and richest of all beings.

Seven to the gaming Lords. Great players and sportsmen of the "Best Score" halls.

And nine, nine Boards were gifted to the race of geeks. Who above all else, desire lives.

For within these Boards was bound the strength and will to govern each forum.

But they were all of them...decieved.

For another Board was made. In a land of programmers, in the heat of CPU overclocking, the Dark Lord DarkSteele forged in secret, a master Board. To control all others. And into this Board he poured his programming, his software, and his will to dominate all users. One Board to rule them all.

One by one, the free forums of the Internet fell to the power of the Board. But there were some who resisted. A last alliance of geeks and experts posted against the moderators of DarkSteele. And on the forums of his server, they fought for the freedom of the Internet.

Victory was near.

But the power of the Board...could not be undone.

#15

Posted: Thu Jul 21, 2005 8:22 am
by Destructionator XV
I have a working preliminary model up, and it seems to be working. I had to do some of the second install manually, but it wasn't very hard to do.

The hard part is that these were 2 fresh installs I did. Doing 2 boards that already have data will be harder, but still doable. I also had root access to the server, but we should be able to do without that.

Now, the question is what all do we want them to share?

The userlist is obvious.

I would do the Smilies table so the admins can share the smilies list easily. This is a gain all situation.

Templates list? Again, I would do this so you can share templates. Note that it would realistically be necessary in fact because if a user wants to use template # 5 that exists on Board A and doesn't exist on Board B, he would be screwed on Board B.

I also would share the CT table so users get their proper custom ranks. However, this could mess things up like Rogue wouldn't be able to call us a 'Page' while Dark Silver calls us an 'Acolyte'.

How about usergroups?
How about sessions? (If you are logged into one forum, should you also be logged into the others at the same time)
How about the banlist?
Private messages?

#16

Posted: Thu Jul 21, 2005 1:40 pm
by Ace Pace
Usergroups, sessions, not sure about ban lists. are PMs possible?


Walper, AWESOME.

#17

Posted: Thu Jul 21, 2005 1:53 pm
by Destructionator XV
PMs are being shared right now in my prelim testing. Actually, I am having a hard time keeping them seperate: they seem to be intamatly tied to the users table.

Problem with having seperate banlists but shared sessions: if the account is banned from Forum A, but not forum B, he cannot log into forum A. But he can log into forum B then use the shared session to still access forum A.

In short, if we share sessions, we must also share banlists.

edit: my lunch break is about over, so I have to get back to work, and am turning off my computer. Either 5 hours from now or some time tommorow I should have my computer on and this pretty much set up so you all can see it (though I want to get some sleep tonight...). Keep talking about what you want to see in this.

#18

Posted: Thu Jul 21, 2005 9:47 pm
by Kreshna Aryaguna Nurzaman
Ace Pace wrote:No, say....

We simply(or not so simply) merge(and take out duplicate enteries) both user db's, is it possible to tell both forums to use the same list of users?

Say...KAN is renamed to Kreshna* (god your name is long), and the Paladin forum knows to look to Kreshna. even possible?

Yes, provided they have the same user_id in both forum. For example, if "Kreshna" in Librium Arcana have user_id=71, then "Kreshna" in The Paladin Domain must have user_id=71 as well; then the two forums can be merged. Otherwise there will be two "Kreshna" in the merged database.


That's just my guess based on the database schema, though.

#19

Posted: Fri Jul 22, 2005 7:48 am
by Destructionator XV
Merging two forums that already exist will be very hard. Say KAN has a user_id of 6 on Paladin's Domain and a user_id of 7 on the Librium Arcana.

Simply changeing the id of one to equal the other is only one step: that ID controls everything relating to that user.

We would have to go through all the data and set all the user_ids to the new value so it will work with both. This result seems unavoidable.

On the bright side, the phpBB database backups are stored as a simple text file. Odds are, these files wll be needed anyways for the merge to happen.

I can write a program to parse the text file and do the changes automatically (I think).

#20

Posted: Fri Jul 22, 2005 9:35 am
by Ace Pace
Thats cool. Though if the forum ain't too big, I suppose we can hand do the job.

#21

Posted: Sun Jul 24, 2005 9:10 am
by Kreshna Aryaguna Nurzaman
Destructionator XV wrote:Merging two forums that already exist will be very hard. Say KAN has a user_id of 6 on Paladin's Domain and a user_id of 7 on the Librium Arcana.

Simply changeing the id of one to equal the other is only one step: that ID controls everything relating to that user.
Yes, merging the users will be THE hardest part; you need to confirm which user exists in both forums and what are their usernames respectively; and you have to do it for every single user.

Merging the forums, OTOH, is not that hard; the admin of both boards just need to make particular agreements about which forums (from both boards) that covers similar subject matters , thus can be merged.