diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-04-07 17:10:54 -0400 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-04-07 17:10:54 -0400 |
commit | 60861760fc3bdc1cdea407e8ee21eb8c54e77b8f (patch) | |
tree | 2bd269851136ae88494e09c10b774ae3c58aa690 /classes | |
parent | 95bb1c6a99766d065ffcde9523de05d8a1162c3d (diff) |
Host multiple sites with the same codebase
This is the beginning of the code for status.net and related status
farms. It will read basic information about a site from a shared,
central database and use the data stored there to switch on the
hostname.
Diffstat (limited to 'classes')
-rwxr-xr-x | classes/Status_network.php | 61 | ||||
-rwxr-xr-x | classes/statusnet.ini | 17 |
2 files changed, 78 insertions, 0 deletions
diff --git a/classes/Status_network.php b/classes/Status_network.php new file mode 100755 index 000000000..f7747f71d --- /dev/null +++ b/classes/Status_network.php @@ -0,0 +1,61 @@ +<?php +/** + * Table Definition for status_network + */ + +class Status_network extends DB_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'status_network'; // table name + public $nickname; // varchar(64) primary_key not_null + public $hostname; // varchar(255) unique_key + public $pathname; // varchar(255) unique_key + public $sitename; // varchar(255) + public $dbhost; // varchar(255) + public $dbuser; // varchar(255) + public $dbpass; // varchar(255) + public $dbname; // varchar(255) + public $created; // datetime() not_null + public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP + + /* Static get */ + function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('Status_network',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE + + static function setupDB($dbhost, $dbuser, $dbpass, $dbname) + { + global $config; + + $config['db']['database_'.$dbname] = "mysqli://$dbuser:$dbpass@$dbhost/$dbname"; + $config['db']['ini_'.$dbname] = INSTALLDIR.'/classes/statusnet.ini'; + $config['db']['table_status_network'] = $dbname; + + return true; + } + + static function setupSite($servername, $pathname) + { + global $config; + + $parts = explode('.', $servername); + + $sn = Status_network::staticGet('nickname', $parts[0]); + + if (!empty($sn)) { + $dbhost = (empty($sn->dbhost)) ? 'localhost' : $sn->dbhost; + $dbuser = (empty($sn->dbuser)) ? $sn->nickname : $sn->dbuser; + $dbpass = $sn->dbpass; + $dbname = (empty($sn->dbname)) ? $sn->nickname : $sn->dbname; + + $config['db']['database'] = "mysqli://$dbuser:$dbpass@$dbhost/$dbname"; + $config['site']['name'] = $sn->sitename; + return true; + } else { + return false; + } + } +} diff --git a/classes/statusnet.ini b/classes/statusnet.ini new file mode 100755 index 000000000..a70cd4122 --- /dev/null +++ b/classes/statusnet.ini @@ -0,0 +1,17 @@ + +[status_network] +nickname = 130 +hostname = 2 +pathname = 2 +sitename = 2 +dbhost = 2 +dbuser = 2 +dbpass = 2 +dbname = 2 +created = 142 +modified = 384 + +[status_network__keys] +nickname = K +hostname = U +pathname = U |