summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/command/db/converttype.php45
-rw-r--r--core/register_command.php2
2 files changed, 15 insertions, 32 deletions
diff --git a/core/command/db/converttype.php b/core/command/db/converttype.php
index 387f873adb6..2a4e6747e65 100644
--- a/core/command/db/converttype.php
+++ b/core/command/db/converttype.php
@@ -22,10 +22,17 @@ class ConvertType extends Command {
protected $config;
/**
+ * @var \OC\DB\ConnectionFactory
+ */
+ protected $connectionFactory;
+
+ /**
* @param \OC\Config $config
+ * @param \OC\DB\ConnectionFactory $connectionFactory
*/
- public function __construct($config) {
+ public function __construct($config, $connectionFactory) {
$this->config = $config;
+ $this->connectionFactory = $connectionFactory;
parent::__construct();
}
@@ -87,12 +94,6 @@ class ConvertType extends Command {
;
}
- private static $type2driver = array(
- 'mysql' => 'pdo_mysql',
- 'pgsql' => 'pdo_pgsql',
- 'oci' => 'oci8',
- 'mssql' => 'pdo_sqlsrv',
- );
protected function execute(InputInterface $input, OutputInterface $output) {
$fromDB = \OC_DB::getConnection();
$toDB = $this->getToDBConnection($input, $output);
@@ -140,35 +141,17 @@ class ConvertType extends Command {
private function getToDBConnection($input, $output) {
$type = $input->getArgument('type');
- $username = $input->getArgument('username');
- $hostname = $input->getArgument('hostname');
- $dbname = $input->getArgument('database');
- $password = $input->getOption('password');
-
- if (!isset(self::$type2driver[$type])) {
- throw new \InvalidArgumentException('Unknown type: '.$type);
- }
$connectionParams = array(
- 'driver' => self::$type2driver[$type],
- 'user' => $username,
- 'password' => $password,
- 'host' => $hostname,
- 'dbname' => $dbname,
+ 'host' => $input->getArgument('hostname'),
+ 'user' => $input->getArgument('username'),
+ 'password' => $input->getOption('password'),
+ 'dbname' => $input->getArgument('database'),
+ 'tablePrefix' => $this->config->getValue('dbtableprefix', 'oc_'),
);
if ($input->getOption('port')) {
$connectionParams['port'] = $input->getOption('port');
}
- switch ($type) {
- case 'mysql':
- case 'mssql':
- $connectionParams['charset'] = 'UTF8';
- break;
- case 'oci':
- $connectionParams['charset'] = 'AL32UTF8';
- break;
- }
-
- return \Doctrine\DBAL\DriverManager::getConnection($connectionParams);
+ return $this->connectionFactory->getConnection($type, $connectionParams);
}
private function getTables($db) {
diff --git a/core/register_command.php b/core/register_command.php
index a3833214c21..f1361c859fc 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -9,7 +9,7 @@
/** @var $application Symfony\Component\Console\Application */
$application->add(new OC\Core\Command\Status);
$application->add(new OC\Core\Command\Db\GenerateChangeScript());
-$application->add(new OC\Core\Command\Db\ConvertType(OC_Config::getObject()));
+$application->add(new OC\Core\Command\Db\ConvertType(OC_Config::getObject(), new \OC\DB\ConnectionFactory()));
$application->add(new OC\Core\Command\Upgrade());
$application->add(new OC\Core\Command\Maintenance\SingleUser());
$application->add(new OC\Core\Command\App\Disable());