Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.5 > vBulletin 3.5 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Multiple Forums using a single user table Details »»
Multiple Forums using a single user table
Version: 1.00, by e2s e2s is offline
Developer Last Online: Mar 2009 Show Printable Version Email this Page

Version: 3.5.4 Rating:
Released: 06-12-2006 Last Update: Never Installs: 48
 
No support by the author.

This was originaly done in 3.0.9 by westpointer you can view that thread here

This Modification is for VB3.5.4 This is not supported but I will give as much help as I possible can.

I have this working now on 2 sites

The main site is http://forums.everything2stroke.com

Slave sites are
http://forums.everythingmx.com
and
http://forums.everythingduners.com

After a successfull install of this modification your sites will share User, PM, and sesson data.

This thread will detail how to have a single login for multiple forums. It makes the following assumptions:
  • A valid vbulletin license exists for each install
  • All forums will be on the same server
  • One database will contain all the tables
A valid vbulletin license exists for each install


Follow these steps

1.) Download your new copy of VB that contains a seperate license key
2.) Go to /includes/config.php.new rename the file to config.php and make necessary changes to the file. See VB Directions. Make sure this code has a different setting than the master site for table prefix.

PHP Code:
 //          ****** TABLE PREFIX ******
 //          Prefix that your vBulletin tables have in the database.
$config['Database']['tableprefix'] = ''
3.) Run the vb install from the new directory (/www/new_forums/install/install.php)

4.) During the install, be sure NOT to empty the tables. If you have any doubt about what this means, stop NOW! If you empty the tables, you will lose all of your existing data from a prior install!

5.) Download all files and directories to your PC from the new install location.

6.) You will need a tool to do a mass Search and replace on all files. I use WildEdit. Here is what you will do using a tool like Wild Edit.
  • Search for [" . TABLE_PREFIX . "user] Replace with [" . "vb3_user] where "vb3_" is the prefix to your master site. 110 Files modified 599 Total changes made
  • Search for [" . TABLE_PREFIX . "strikes] Replace with [" . "vb3_strikes] where "vb3_" is the prefix to your master site 4 Files modified 8 Total changes made
  • Search for [" . TABLE_PREFIX . "pm] Replace with [" . "vb3_pm] where "vb3_" is the prefix to your master site 16 Files modified 77 Total changes made
  • Search for [" . TABLE_PREFIX . "session] Replace with [" . "vb3_session] where "vb3_" is the prefix to your master site 20 Files modified 31 Total changes made

Now to modify some of the code.

In /include/class_dm.php

Search for:
PHP Code:
 function fetch_insert_sql($tableprefix$table)

            { 
Add below change vb3_ to your master site prefix:
PHP Code:
if ($table == "vb3_pmtext")

            {

                        
$sql "INSERT INTO {$table}\r\n\t(" implode(', 'array_keys($this->$table)) . 


")\r\nVALUES\r\n\t(";

            

            }

            else 

Go to /include/class_dm_pm.php

Search for:
PHP Code:
var $table 'pmtext'
Replace with making vb3_ the prefix to your master site:
PHP Code:
var $table 'vb3_pmtext'

Search for:
PHP Code:
$pmtextid = ($this->existing['pmtextid'] ? $this->existing['pmtextid'] : $this->pmtext['pmtextid']); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$pmtextid = ($this->existing['pmtextid'] ? $this->existing['pmtextid'] : $this->vb3_pmtext['pmtextid']); 
Search for:
PHP Code:
$this->dbobject->query_write("INSERT INTO " TABLE_PREFIX "pm (pmtextid, userid) VALUES ($pmtextid$user[userid])"); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$this->dbobject->query_write("INSERT INTO " "vb3_pm (pmtextid, userid) VALUES ($pmtextid$user[userid])"); 
Search for:
PHP Code:
" . $this->dbobject->escape_string($user['username']) . "', '" . $this->dbobject->escape_string($this->pmtext['title']) . 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
" . $this->dbobject->escape_string($user['username']) . "', '" . $this->dbobject->escape_string($this->vb3_pmtext['title']) . 

Go to /include/class_dm_user.php

Search for:
PHP Code:
$return $this->db_update(TABLE_PREFIX'user'$this->condition$doquery$delayed); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$return $this->db_update('vb3_''user'$this->condition$doquery$delayed); 
Search for:
PHP Code:
$this->db_update(TABLE_PREFIX'userfield',     $this->condition$doquery$delayed); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$this->db_update('vb3_''userfield',     $this->condition$doquery$delayed); 
Search for:
PHP Code:
$this->db_update(TABLE_PREFIX'usertextfield'$this->condition$doquery$delayed); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$this->db_update('vb3_''usertextfield'$this->condition$doquery$delayed); 
Search for:
PHP Code:
if ($return $this->db_insert(TABLE_PREFIX'user'$doquery)) 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
if ($return $this->db_insert('vb3_''user'$doquery)) 
Search for:
PHP Code:
$this->db_insert(TABLE_PREFIX'userfield',     $doquery); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$this->db_insert('vb3_''userfield',     $doquery); 
Search for:
PHP Code:
$this->db_insert(TABLE_PREFIX'usertextfield'$doquery); 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
$this->db_insert('vb3_''usertextfield'$doquery); 
Search for:
PHP Code:
DELETE FROM " . TABLE_PREFIX . "session 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
DELETE FROM ?.?vb3_session 
Search for:
PHP Code:
INSERT INTO " . TABLE_PREFIX . "passwordhistory (useridpasswordpassworddate
Replace with where vb3_ is the prefix to your master site:
PHP Code:
INSERT INTO " . "vb3_passwordhistory (useridpasswordpassworddate
Search for:
PHP Code:
 UPDATE " . TABLE_PREFIX . "session SET 
Replace with where vb3_ is the prefix to your master site:
PHP Code:
   UPDATE ?.?vb3_session SET 

That is all the code modification.


The only other item I did is remove a couple cron jobs.

Go into Scheduled tasks then to Scheduled Task Manager

Delete the following CRON jobs from the Slave Site

User Promotions*
Birthdays
Activation Reminder Email

This will eliminate members getting emails from the primary and secondary sites
*not sure if this will duplicate efforts between primary and secondary sites I have it running on both sites still waiting to see if it causes any issues.


Please post here if you have any problems and questions I will try my best to keep up with everyone to help you through this. Once you get the code done the first time you can just do a mass search and replace on your license code and you can be up and running in minutes with a new site.

This is my first major modification so I hope I posted this all correct, again Thanks to Westpointer for his original work without his post this would not have been possible.

Thanks

UPDATE:

Please make this changes it will allow you to make changes to usergroups in the subscription section and when editing a user.

admincp/adminfunctions.php
Search for
PHP Code:
                $result $vbulletin->db->query_read("SELECT title, $tableid FROM " TABLE_PREFIX "$tablename $wherecondition ORDER BY title"); 
Replace with
PHP Code:
if ($tablename == "usergroup")
                {
                
$result $vbulletin->db->query_read("SELECT title, $tableid FROM " "vb3_$tablename $wherecondition ORDER BY title");
                }
                else
                {
                
$result $vbulletin->db->query_read("SELECT title, $tableid FROM " TABLE_PREFIX "$tablename $wherecondition ORDER BY title");
                } 

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #62  
Old 09-06-2006, 01:48 PM
e2s e2s is offline
 
Join Date: Nov 2004
Location: NH
Posts: 30
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Lionel: user stats are pulled from the master site if that is what you mean.

Kau: The avatar is different on all sites. To get the bio different you have to edit the database so that the new site pulls from higher profile id's then the master site so if your master site pulls profile id 1-10 you would want to setup profile id's for the new site starting at 20. I know I have done this but don't remember how. When I setup a new site and do this I will write up directions. The Signature is located in the user table so the only way around this would be more code changes. You would need to add fields in the database like newsitesig and so on then make changes to the code on the new site to always look at that field when pulling the signature. I might look into doing something like this soon.

Sorry still haven't purchased the 3.6 version yet hoping to in the coming week
Reply With Quote
  #63  
Old 09-09-2006, 04:08 AM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by e2s
Lionel: user stats are pulled from the master site if that is what you mean.
Hi, yes they are, but the cache is updated only once a day or if I do it manually, meaning that if someone registers in one forum, the new count will not display on other forums right away.
Reply With Quote
  #64  
Old 09-11-2006, 10:03 AM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've got every perfect but two glitches.

1-userstats update only once with cron or if i rebuild user names

2-avatars are same across (except for custom) , BUT I can't get the avatar categories to display independently. Each have their own categories and the slave site does not display the its avatarcategories in profile.php
Reply With Quote
  #65  
Old 09-12-2006, 07:18 PM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In adminfunctions.php print_delete_confirmation you also need to specify the below (insert it somewhere) or it will switch to default and you will not be able to delete any usergroups. (I don't use prefixes so I have " . ")



Quote:
case 'usergroup':
$item = $vbulletin->db->query_first("
SELECT usergroupid, title
FROM " . "usergroup
WHERE usergroupid = '" . $vbulletin->db->escape_string($itemid) . "'
");
break;
also in functions.php copy function fetch_query_sql into function fetch_query_sql2 . alter that copy by replacing the 2 instances of " . TABLE_PREFIX . to reflect your master prefix.

Then in usergroup.php call that fetch_query_sql2 instead of fetch_query_sql (many instances)

Now, all that is left is the avatar category that refuses to display. I did do a search and replace for table_prefix avatar so they all have the same.

BTW, there was no problem with userstats and your mod. The problem was with vbadvanced.
Reply With Quote
  #66  
Old 09-13-2006, 09:17 AM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Phew! I finally figured out the avatars
imagecategory was out of sync
Reply With Quote
  #67  
Old 09-27-2006, 04:32 PM
Uebbino Uebbino is offline
 
Join Date: Jan 2006
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm reading your hack.
It's very good.
It remains a little doubt.
Is possible that each slave forum have a separated table users but in the main forum, there is a table with all users of all slave forum?

Example.

Main Forum= 10000 users

Forum Slave 1= 2000 users
Forum Slave 2= 4000 users
Forum Slave 3= 2000 users

Please, make me know
Reply With Quote
  #68  
Old 09-29-2006, 03:43 AM
redefined04 redefined04 is offline
 
Join Date: Sep 2006
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

2 questions..

1.) I'm assuming when you say admincp/adminfunctions.php you actually mean includes/adminfunctions.php, because adminfunctions.php does not exist in admincp.

2.) When I try to login on the admincp of the slave site, it goes to the "Thank you for logging in" redirect stage, but then it directs me right back to the admincp login form?
Reply With Quote
  #69  
Old 09-29-2006, 07:19 AM
Nero1977 Nero1977 is offline
 
Join Date: Nov 2002
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by e2s
Sorry still haven't purchased the 3.6 version yet hoping to in the coming week
In a waiting new 3.6.1 modification.

2: redefined04
I think you are using vb3.6

adminfunction.php now in /includes/
Reply With Quote
  #70  
Old 09-29-2006, 01:12 PM
redefined04 redefined04 is offline
 
Join Date: Sep 2006
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Nero1977
In a waiting new 3.6.1 modification.

2: redefined04
I think you are using vb3.6

adminfunction.php now in /includes/
Any idea why the /admincp/ login simply redirects to itself even though its the correct account details?
Reply With Quote
  #71  
Old 09-29-2006, 02:20 PM
Nero1977 Nero1977 is offline
 
Join Date: Nov 2002
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Wow! Two different boards 3.6.1 working fine!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:56 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04665 seconds
  • Memory Usage 2,390KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (31)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete