]> git.andy128k.dev Git - ipf-legacy-orm.git/commitdiff
db console
authorAndrey Kutejko <andy128k@gmail.com>
Thu, 20 Jun 2013 22:10:53 +0000 (01:10 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Thu, 20 Jun 2013 22:10:53 +0000 (01:10 +0300)
ipf/orm/manager.php

index f852ac50d38dda445e66ac81720fee27f7e22dad..f28ad393f68bd27f855b9eca53ab19435d0081a0 100644 (file)
@@ -64,26 +64,8 @@ class IPF_ORM_Manager extends IPF_ORM_Configurable implements Countable, Iterato
             if (!($adapter instanceof PDO))
                 throw new IPF_ORM_Exception("First argument should be an instance of PDO");
             $driverName = $adapter->getAttribute(PDO::ATTR_DRIVER_NAME);
-        } else if (is_array($adapter)) {
-            if (!count($adapter))
-                throw new IPF_ORM_Exception('Empty data source name given.');
-
-            if (array_key_exists('database', $adapter)) {
-                $adapter['dsn'] = $this->makeDsnForPDO($adapter['driver'], $adapter['host'], @$adapter['port'], $adapter['database']);
-            } else {
-                $adapter = array(
-                    'dsn'       => urldecode($adapter[0]),
-                    'username'  => (isset($adapter[1])) ? urldecode($adapter[1]) : null,
-                    'password'  => (isset($adapter[2])) ? urldecode($adapter[2]) : null,
-                );
-            }
-
-            $e = explode(':', $adapter['dsn']);
-            $driverName = $e[0] !== 'uri' ? $e[0] : 'odbc';
         } else {
-            $adapter = $this->parseDsn($adapter);
-            $adapter['username'] = $adapter['user'];
-            $adapter['password'] = $adapter['pass'];
+            $adapter = $this->connectionParameters($adapter);
             $driverName = $adapter['scheme'];
         }
 
@@ -129,6 +111,31 @@ class IPF_ORM_Manager extends IPF_ORM_Configurable implements Countable, Iterato
         return $this->_connections[$name];
     }
     
+    public function connectionParameters($adapter)
+    {
+        if (is_array($adapter)) {
+            if (!count($adapter))
+                throw new IPF_ORM_Exception('Empty data source name given.');
+
+            if (array_key_exists('database', $adapter)) {
+                $adapter['dsn'] = $this->makeDsnForPDO($adapter['driver'], $adapter['host'], @$adapter['port'], $adapter['database']);
+                $adapter['scheme'] = $adapter['driver'];
+                return $adapter;
+            } else {
+                $dsn = urldecode($adapter[0]);
+                $result = $this->parseDsn($dsn);
+                $result['username'] = (isset($adapter[1])) ? urldecode($adapter[1]) : null;
+                $result['password'] = (isset($adapter[2])) ? urldecode($adapter[2]) : null;
+                return $result;
+            }
+        } else {
+            $result = $this->parseDsn($adapter);
+            $result['username'] = $result['user'];
+            $result['password'] = $result['pass'];
+            return $result;
+        }
+    }
+
     public function parsePdoDsn($dsn)
     {
         $parts = array();