]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
allow schema to work on more than one connection (namely, the Status_network DB)
authorJames Walker <walkah@walkah.net>
Fri, 30 Jul 2010 01:04:28 +0000 (21:04 -0400)
committerJames Walker <walkah@walkah.net>
Fri, 30 Jul 2010 01:04:28 +0000 (21:04 -0400)
lib/schema.php

index 1503c96d4fc9cb28744aa13cc8ed0580d679f6f1..e5def514e31ddbc227ecb2a6afaec272c9c5d2dc 100644 (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();
-
-        $this->conn = $user->getDatabaseConnection();
-
-        $user->free();
+        if (is_null($conn)) {
+            // XXX: there should be an easier way to do this.
+            $user = new User();
+            $conn = $user->getDatabaseConnection();
+            $user->free();
+            unset($user);
+        }
 
-        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)
     {
+        if (is_null($conn)) {
+            $key = 'default';
+        } else {
+            $key = md5(serialize($conn->dsn));
+        }
+        
         $type = common_config('db', 'type');
-        if (empty(self::$_single)) {
+        if (empty(self::$_static[$key])) {
             $schemaClass = ucfirst($type).'Schema';
-            self::$_single = new $schemaClass();
+            self::$_static[$key] = new $schemaClass($conn);
         }
-        return self::$_single;
+        return self::$_static[$key];
     }
 
     /**