allow schema to work on more than one connection (namely, the Status_network DB)

This commit is contained in:
James Walker 2010-07-29 21:04:28 -04:00
parent c2a26ba653
commit 47f19988d1
1 changed files with 24 additions and 17 deletions

View File

@ -47,40 +47,47 @@ if (!defined('STATUSNET')) {
class Schema
{
static $_single = null;
static $_static = null;
protected $conn = null;
/**
* Constructor. Only run once for singleton object.
*/
protected function __construct()
protected function __construct($conn = null)
{
// XXX: there should be an easier way to do this.
$user = new User();
if (is_null($conn)) {
// XXX: there should be an easier way to do this.
$user = new User();
$conn = $user->getDatabaseConnection();
$user->free();
unset($user);
}
$this->conn = $user->getDatabaseConnection();
$user->free();
unset($user);
$this->conn = $conn;
}
/**
* Main public entry point. Use this to get
* the singleton object.
* the schema object.
*
* @return Schema the (single) Schema object
* @return Schema the Schema object for the connection
*/
static function get()
static function get($conn = null)
{
$type = common_config('db', 'type');
if (empty(self::$_single)) {
$schemaClass = ucfirst($type).'Schema';
self::$_single = new $schemaClass();
if (is_null($conn)) {
$key = 'default';
} else {
$key = md5(serialize($conn->dsn));
}
return self::$_single;
$type = common_config('db', 'type');
if (empty(self::$_static[$key])) {
$schemaClass = ucfirst($type).'Schema';
self::$_static[$key] = new $schemaClass($conn);
}
return self::$_static[$key];
}
/**