From 8a79d314cf544cf2ca261cbac7ea07570e9ed8e5 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 12 Jul 2016 13:11:44 +0200 Subject: [PATCH] Remove duplicate database connect logic in mysql setup --- lib/private/AllConfig.php | 4 +++ lib/private/Setup/AbstractDatabase.php | 22 +++++++++++++++- lib/private/Setup/MySQL.php | 35 -------------------------- 3 files changed, 25 insertions(+), 36 deletions(-) diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php index c8b2009fcc..b50fc0f42c 100644 --- a/lib/private/AllConfig.php +++ b/lib/private/AllConfig.php @@ -428,4 +428,8 @@ class AllConfig implements \OCP\IConfig { return $userIDs; } + + public function getSystemConfig() { + return $this->systemConfig; + } } diff --git a/lib/private/Setup/AbstractDatabase.php b/lib/private/Setup/AbstractDatabase.php index 08ed741f51..62e9b2e823 100644 --- a/lib/private/Setup/AbstractDatabase.php +++ b/lib/private/Setup/AbstractDatabase.php @@ -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 */ diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php index 1ff7b278b8..03a1421f42 100644 --- a/lib/private/Setup/MySQL.php +++ b/lib/private/Setup/MySQL.php @@ -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