Remove duplicate database connect logic in mysql setup

pull/381/head
Robin Appelman 10 years ago
parent 2bf7d3a5bd
commit 8a79d314cf
  1. 4
      lib/private/AllConfig.php
  2. 22
      lib/private/Setup/AbstractDatabase.php
  3. 35
      lib/private/Setup/MySQL.php

@ -428,4 +428,8 @@ class AllConfig implements \OCP\IConfig {
return $userIDs;
}
public function getSystemConfig() {
return $this->systemConfig;
}
}

@ -23,6 +23,8 @@
*/
namespace OC\Setup;
use OC\AllConfig;
use OC\DB\ConnectionFactory;
use OCP\IConfig;
use OCP\ILogger;
use OCP\Security\ISecureRandom;
@ -45,7 +47,7 @@ abstract class AbstractDatabase {
protected $dbPort;
/** @var string */
protected $tablePrefix;
/** @var IConfig */
/** @var AllConfig */
protected $config;
/** @var ILogger */
protected $logger;
@ -98,6 +100,24 @@ abstract class AbstractDatabase {
$this->tablePrefix = $dbTablePrefix;
}
/**
* @return \OC\DB\Connection
* @throws \OC\DatabaseSetupException
*/
protected function connect() {
$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;
}
return $cf->getConnection($systemConfig->getValue('dbtype', 'sqlite'), $connectionParams);
}
/**
* @param string $userName
*/

@ -87,41 +87,6 @@ class MySQL extends AbstractDatabase {
$connection->executeUpdate($query);
}
/**
* @return \OC\DB\Connection
* @throws \OC\DatabaseSetupException
*/
private function connect() {
$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;
}
$cf = new ConnectionFactory();
return $cf->getConnection('mysql', $connectionParams);
}
/**
* @param $username
* @param IDBConnection $connection

Loading…
Cancel
Save