diff options
Diffstat (limited to 'lib/private/db.php')
-rw-r--r-- | lib/private/db.php | 44 |
1 files changed, 19 insertions, 25 deletions
diff --git a/lib/private/db.php b/lib/private/db.php index 82affe293ed..8fd2ef1c6f7 100644 --- a/lib/private/db.php +++ b/lib/private/db.php @@ -57,40 +57,34 @@ class OC_DB { return true; } - // The global data we need - $name = OC_Config::getValue( "dbname", "owncloud" ); - $host = OC_Config::getValue( "dbhost", "" ); - $user = OC_Config::getValue( "dbuser", "" ); - $pass = OC_Config::getValue( "dbpassword", "" ); - $type = OC_Config::getValue( "dbtype", "sqlite" ); - if(strpos($host, ':')) { - list($host, $port)=explode(':', $host, 2); - } else { - $port=false; - } - + $type = OC_Config::getValue('dbtype', 'sqlite'); $factory = new \OC\DB\ConnectionFactory(); if (!$factory->isValidType($type)) { return false; } + $connectionParams = array( + 'user' => OC_Config::getValue('dbuser', ''), + 'password' => OC_Config::getValue('dbpassword', ''), + ); + $name = OC_Config::getValue('dbname', 'owncloud'); + if ($factory->normalizeType($type) === 'sqlite3') { $datadir = OC_Config::getValue("datadirectory", OC::$SERVERROOT.'/data'); - $connectionParams = array( - 'user' => $user, - 'password' => $pass, - 'path' => $datadir.'/'.$name.'.db', - ); + $connectionParams['path'] = $datadir.'/'.$name.'.db'; } else { - $connectionParams = array( - 'user' => $user, - 'password' => $pass, - 'host' => $host, - 'dbname' => $name, - ); - if (!empty($port)) { - $connectionParams['port'] = $port; + $host = OC_Config::getValue('dbhost', ''); + if (strpos($host, ':')) { + // Host variable may carry a port or socket. + list($host, $portOrSocket) = explode(':', $host, 2); + if (ctype_digit($portOrSocket)) { + $connectionParams['host'] = $host; + $connectionParams['port'] = $portOrSocket; + } else { + $connectionParams['unix_socket'] = $portOrSocket; + } } + $connectionParams['dbname'] = $name; } $connectionParams['tablePrefix'] = OC_Config::getValue('dbtableprefix', 'oc_'); |