xoops forums

Vict0r

Just popping in
Posted on: 2004/9/25 21:27
Vict0r
Vict0r (Show more)
Just popping in
Posts: 18
Since: 2004/3/7 1
#1

using the same users db for 2 different websites

I have a XOOPS website and now I am starting a new XOOPS website but I want to use a few tables from the old database (the users table, the forum, and the album)..
The two websites can be hosted either on the same server or two different servers (whichever works better).
Is there a way to link those tables and how can I do that. Thank you in advance.

Victor

Neon

Not too shy to talk
Posted on: 2004/9/25 22:14
Neon
Neon (Show more)
Not too shy to talk
Posts: 138
Since: 2002/2/8 6
#2

Re: using the same users db for 2 different websites

Vict0r

This question is one of the most asked questions of XOOPS users, most of them get the same reply.

Use the SEARCH feature (Top Right Corner of the site) and you will find all sorts of answers.

One quick search and I found;

https://xoops.org/modules/news/article.php?storyid=1222

https://xoops.org/modules/newbb/viewto ... &forum=10#forumpost106937

Lance_

Home away from home
Posted on: 2004/9/25 23:23
Lance_
Lance_ (Show more)
Home away from home
Posts: 983
Since: 2004/1/12
#3

Re: using the same users db for 2 different websites

I use multisite on the sites below, works very well.

Right now I share the Users, Forum and Smartfaq only. All the rest of the modules are independent from site to site.

Cheers

Vict0r

Just popping in
Posted on: 2004/9/30 19:49
Vict0r
Vict0r (Show more)
Just popping in
Posts: 18
Since: 2004/3/7 1
#4

Re: using the same users db for 2 different websites

Hey Lance,

What exactly do you mean by multisite, is that a hack or a script? Can you send it to me?

What I am trying to do is have a new subdomain on my website that uses mainly the user file.. and some other tables on the db. I've read the posts in the forum but I don't think they have determined if that works or not.

Please, let me know. Thank you in advance.

Victor

Lance_

Home away from home
Posted on: 2004/10/6 13:13
Lance_
Lance_ (Show more)
Home away from home
Posts: 983
Since: 2004/1/12
#5

Re: using the same users db for 2 different websites

What I did was install XOOPS cleanly to the same database with each of the subsites table prefix. (eg. main, sub1, sub2 etc...)

Then after each install, rename that mainfile to main.mainfile.php, sub1.mainfile.php, sub2.mainfile.php...

upload the following mainfile:
<?php

if (!(isset($subdominio))) {

$subdominio $HTTP_HOST;

$subdominio str_replace("www.","",$subdominio); 

$subdominio str_replace(".com","",$subdominio); 

$subdominio str_replace(".net","",$subdominio); 

$subdominio str_replace(".org","",$subdominio);





if (!(empty(
$subdominio))) {

include(
$subdominio.".mainfile.php");

}

?>


And modify this /class/database/database.php file
<?php

// $Id: database.php,v 1.16 2003/11/20 19:03:30 okazu Exp $

// database.php - defines abstract database wrapper class 

//  ------------------------------------------------------------------------ //

//                XOOPS - PHP Content Management System                      //

//                    Copyright (c) 2000 XOOPS.org                           //

//                       <https://xoops.org/>  &nbs ... nbsp;   //

//  ------------------------------------------------------------------------ //

//  This program is free software; you can redistribute it and/or modify     //

//  it under the terms of the GNU General Public License as published by     //

//  the Free Software Foundation; either version 2 of the License, or        //

//  (at your option) any later version.                                      //

//                                                                           //

//  You may not change or alter any portion of this comment or credits       //

//  of supporting developers from this source code or any supporting         //

//  source code which is considered copyrighted (c) material of the          //

//  original comment or credit authors.                                      //

//                                                                           //

//  This program is distributed in the hope that it will be useful,          //

//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //

//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //

//  GNU General Public License for more details.                             //

//                                                                           //

//  You should have received a copy of the GNU General Public License        //

//  along with this program; if not, write to the Free Software              //

//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //

//  ------------------------------------------------------------------------ //

/**

 * @package     kernel

 * @subpackage  database

 * 

 * @author        Kazumi Ono    <onokazu@xoops.org>

 * @copyright    copyright (c) 2000-2003 XOOPS.org

 */



/**

 * make sure this is only included once!

 */

if ( !defined("XOOPS_C_DATABASE_INCLUDED") ) {

    
define("XOOPS_C_DATABASE_INCLUDED",1);



/**

 * Abstract base class for Database access classes

 * 

 * @abstract

 * 

 * @author Kazumi Ono <onokazu@xoops.org>

 * @copyright copyright (c) 2000-2003 XOOPS.org

 * 

 * @package kernel

 * @subpackage database

 */

class XoopsDatabase

    
{

        
/**

         * Prefix for tables in the database

         * @var string

         */

        
var $prefix '';

        
/**

         * reference to a {@link XoopsLogger} object

         * @see XoopsLogger

         * @var object XoopsLogger

         */

        
var $logger;



        
/**

         * constructor

         * 

         * will always fail, because this is an abstract class!

         */

        
function XoopsDatabase()

        {

            
// exit("Cannot instantiate this class directly");

        
}



        
/**

         * assign a {@link XoopsLogger} object to the database

         * 

         * @see XoopsLogger

         * @param object $logger reference to a {@link XoopsLogger} object

         */

        
function setLogger(&$logger)

        {

            
$this->logger =& $logger;

        }



        
/**

         * set the prefix for tables in the database

         * 

         * @param string $value table prefix

         */

        
function setPrefix($value)

        {

            
$this->prefix $value;

        }

        

        
/**

         * attach the prefix.'_' to a given tablename

         * 

         * if tablename is empty, only prefix will be returned

         * 

         * @param string $tablename tablename

         * @return string prefixed tablename, just prefix if tablename is empty

         */

        
function prefix($tablename='')

        {

    
/** Start Multi site Hack*/

            
$myCommonTables = array('avatar''avatar_user_link''banner''bannerclient''bannerfinish',                                      

                                     
'image''imagebody''imagecategory''imgset''imgset_tplset_link''imgsetimg'

                                     
'online''priv_msgs''ranks''session''smiles''users''xoopscomments''xoopsnotifications',

                                     
'bb_archive''bb_attachments''bb_categories''bb_digest''bb_forums''bb_online',
                                     
                                     
'bb_posts''bb_posts_text''bb_report''bb_topics''bb_votedata',
                                     
                                     
'smartfaq_answers''smartfaq_categories''smartfaq_faq'
                                     
                                     
'xoopspoll_desc''xoopspoll_log''xoopspoll_option');

            
$myPrefix '';

    

            if (
in_array($tablename,$myCommonTables))

            {

                
$myPrefix 'main';

            }

            else 
$myPrefix $this->prefix;

    

    

            if ( 
$tablename != '' ) {

                return 
$myPrefix .'_'$tablename;

            } else {

                return 
$myPrefix;

            }

        }

    }

}

            
/**End Mulsite hack*/


/**

 * Only for backward compatibility

 * 

 * @deprecated

 */

class Database

{



    function &
getInstance()

    {

        return 
XoopsDatabaseFactory::getDatabaseConnection();

    }

}



?>


Look for the Multisite Hack block of code, and change the tables you want to share on ALL the sites, and set your prefix, the one here is set to "main".

Now all you need to do is install individual modules on the sites, and they will stay on that site only and not the others.

NOTE: If you delete a module Off one site, the uninstall scripts usually also delete the tables and so the module will have been deleted off the other sites too. Be very careful.

This is not perfect but works very well. I run my sites with this. I have 4 sites running.

The Lion's Den - Arena KebeKlan EOLeagues XBox @ The Lion's Den


Now, the only part missing is to extend the database.php file to have IFs statement so that you can share a modules among 2 sites and then another modules among 2 other sites. Right now the limitation is share among ALL sites or none. Anyone care to take a crack at it??

Cheers.