* @return \OC\DB\Connection
*/
protected function connect(array $configOverwrite = []) {
- $systemConfig = $this->config->getSystemConfig();
- $cf = new ConnectionFactory();
- $connectionParams = $cf->createConnectionParams($systemConfig);
- // we don't save username/password to the config immediately so this might not be set
- if (!$connectionParams['user']) {
- $connectionParams['user'] = $this->dbUser;
- }
- if (!$connectionParams['password']) {
- $connectionParams['password'] = $this->dbPassword;
+ $connectionParams = array(
+ 'host' => $this->dbHost,
+ 'user' => $this->dbUser,
+ 'password' => $this->dbPassword,
+ 'tablePrefix' => $this->tablePrefix,
+ );
+
+ // adding port support through installer
+ if (!empty($this->dbPort)) {
+ if (ctype_digit($this->dbPort)) {
+ $connectionParams['port'] = $this->dbPort;
+ } else {
+ $connectionParams['unix_socket'] = $this->dbPort;
+ }
+ } else if (strpos($this->dbHost, ':')) {
+ // Host variable may carry a port or socket.
+ list($host, $portOrSocket) = explode(':', $this->dbHost, 2);
+ if (ctype_digit($portOrSocket)) {
+ $connectionParams['port'] = $portOrSocket;
+ } else {
+ $connectionParams['unix_socket'] = $portOrSocket;
+ }
+ $connectionParams['host'] = $host;
}
+
$connectionParams = array_merge($connectionParams, $configOverwrite);
- return $cf->getConnection($systemConfig->getValue('dbtype', 'sqlite'), $connectionParams);
+ $cf = new ConnectionFactory();
+ return $cf->getConnection($this->config->getSystemValue('dbtype', 'sqlite'), $connectionParams);
}
/**