summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2013-04-03 17:52:18 +0200
committerBart Visscher <bartv@thisnet.nl>2013-06-29 21:15:05 +0200
commit6831b78597ae38ed03343e274448dfb210af817b (patch)
tree04ca627fc599517765fd4b73c6aa7f9eae71773c /lib
parent2faccaee0d22efa6b23586b65f222e8cc5404366 (diff)
downloadnextcloud-server-6831b78597ae38ed03343e274448dfb210af817b.tar.gz
nextcloud-server-6831b78597ae38ed03343e274448dfb210af817b.zip
Use db setup class for option validation
Diffstat (limited to 'lib')
-rw-r--r--lib/setup.php48
-rw-r--r--lib/setup/abstractdatabase.php17
-rw-r--r--lib/setup/mssql.php2
-rw-r--r--lib/setup/mysql.php2
-rw-r--r--lib/setup/oci.php2
-rw-r--r--lib/setup/postgresql.php2
-rw-r--r--lib/setup/sqlite.php5
7 files changed, 43 insertions, 35 deletions
diff --git a/lib/setup.php b/lib/setup.php
index e73ba6cdf4f..11c6cc76b66 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -19,6 +19,14 @@ class DatabaseSetupException extends Exception
}
class OC_Setup {
+ static $db_setup_classes = array(
+ 'mysql' => '\OC\Setup\MySQL',
+ 'pgsql' => '\OC\Setup\PostgreSQL',
+ 'oci' => '\OC\Setup\OCI',
+ 'mssql' => '\OC\Setup\MSSQL',
+ 'sqlite' => '\OC\Setup\Sqlite',
+ 'sqlite3' => '\OC\Setup\Sqlite',
+ );
public static function getTrans(){
return OC_L10N::get('lib');
@@ -40,31 +48,14 @@ class OC_Setup {
$options['directory'] = OC::$SERVERROOT."/data";
}
- if($dbtype == 'mysql' or $dbtype == 'pgsql' or $dbtype == 'oci' or $dbtype == 'mssql') { // these needs more config options
- if($dbtype == 'mysql')
- $dbprettyname = 'MySQL';
- else if($dbtype == 'pgsql')
- $dbprettyname = 'PostgreSQL';
- else if ($dbtype == 'mssql')
- $dbprettyname = 'MS SQL Server';
- else
- $dbprettyname = 'Oracle';
-
-
- if(empty($options['dbuser'])) {
- $error[] = $l->t("%s enter the database username.", array($dbprettyname));
- }
- if(empty($options['dbname'])) {
- $error[] = $l->t("%s enter the database name.", array($dbprettyname));
- }
- if(substr_count($options['dbname'], '.') >= 1) {
- $error[] = $l->t("%s you may not use dots in the database name", array($dbprettyname));
- }
- if($dbtype != 'oci' && empty($options['dbhost'])) {
- $options['dbhost'] = 'localhost';
- }
+ if (!isset(self::$db_setup_classes[$dbtype])) {
+ $dbtype = 'sqlite';
}
+ $class = self::$db_setup_classes[$dbtype];
+ $db_setup = new $class(self::getTrans());
+ $error = array_merge($error, $db_setup->validate($options));
+
if(count($error) != 0) {
return $error;
}
@@ -91,17 +82,8 @@ class OC_Setup {
OC_Config::setValue('datadirectory', $datadir);
OC_Config::setValue('dbtype', $dbtype);
OC_Config::setValue('version', implode('.', OC_Util::getVersion()));
- $db_setup_classes = array(
- 'mysql' => '\OC\Setup\MySQL',
- 'pgsql' => '\OC\Setup\PostgreSQL',
- 'oci' => '\OC\Setup\OCI',
- 'mssql' => '\OC\Setup\MSSQL',
- 'sqlite' => '\OC\Setup\Sqlite',
- 'sqlite3' => '\OC\Setup\Sqlite',
- );
try {
- $class = $db_setup_classes[$dbtype];
- $db_setup = new $class(self::getTrans(), $options);
+ $db_setup->initialize($options);
$db_setup->setupDatabase($username);
} catch (DatabaseSetupException $e) {
$error[] = array(
diff --git a/lib/setup/abstractdatabase.php b/lib/setup/abstractdatabase.php
index cef64ee7ebb..07a679f2112 100644
--- a/lib/setup/abstractdatabase.php
+++ b/lib/setup/abstractdatabase.php
@@ -12,14 +12,27 @@ abstract class AbstractDatabase {
public function __construct($trans, $config) {
$this->trans = $trans;
- $this->initialize($config);
+ }
+
+ public function validate($config) {
+ $errors = array();
+ if(empty($config['dbuser'])) {
+ $errors[] = $this->trans->t("%s enter the database username.", array($this->dbprettyname));
+ }
+ if(empty($config['dbname'])) {
+ $errors[] = $this->trans->t("%s enter the database name.", array($this->dbprettyname));
+ }
+ if(substr_count($config['dbname'], '.') >= 1) {
+ $errors[] = $this->trans->t("%s you may not use dots in the database name", array($this->dbprettyname));
+ }
+ return $errors;
}
public function initialize($config) {
$dbuser = $config['dbuser'];
$dbpass = $config['dbpass'];
$dbname = $config['dbname'];
- $dbhost = isset($config['dbhost']) ? $config['dbhost'] : ''; // dbhost contents is checked earlier
+ $dbhost = !empty($config['dbhost']) ? $config['dbhost'] : 'localhost';
$dbtableprefix = isset($config['dbtableprefix']) ? $config['dbtableprefix'] : 'oc_';
\OC_Config::setValue('dbname', $dbname);
diff --git a/lib/setup/mssql.php b/lib/setup/mssql.php
index a1414a9ac57..74ac8f294a9 100644
--- a/lib/setup/mssql.php
+++ b/lib/setup/mssql.php
@@ -3,6 +3,8 @@
namespace OC\Setup;
class MSSQL extends AbstractDatabase {
+ public $dbprettyname = 'MS SQL Server';
+
public function setupDatabase() {
//check if the database user has admin right
$masterConnectionInfo = array( "Database" => "master", "UID" => $this->dbuser, "PWD" => $this->dbpassword);
diff --git a/lib/setup/mysql.php b/lib/setup/mysql.php
index 790b8e82257..aa0344f686c 100644
--- a/lib/setup/mysql.php
+++ b/lib/setup/mysql.php
@@ -3,6 +3,8 @@
namespace OC\Setup;
class MySQL extends AbstractDatabase {
+ public $dbprettyname = 'MySQL';
+
public function setupDatabase($username) {
//check if the database user has admin right
$connection = @mysql_connect($this->dbhost, $this->dbuser, $this->dbpassword);
diff --git a/lib/setup/oci.php b/lib/setup/oci.php
index 3bb625c557d..a3e2ccc8da7 100644
--- a/lib/setup/oci.php
+++ b/lib/setup/oci.php
@@ -3,6 +3,8 @@
namespace OC\Setup;
class OCI extends AbstractDatabase {
+ public $dbprettyname = 'Oracle';
+
protected $dbtablespace;
public function initialize($config) {
diff --git a/lib/setup/postgresql.php b/lib/setup/postgresql.php
index 3fb1e6b8787..67e4f901a91 100644
--- a/lib/setup/postgresql.php
+++ b/lib/setup/postgresql.php
@@ -3,6 +3,8 @@
namespace OC\Setup;
class PostgreSQL extends AbstractDatabase {
+ public $dbprettyname = 'PostgreSQL';
+
public function setupDatabase($username) {
$e_host = addslashes($this->dbhost);
$e_user = addslashes($this->dbuser);
diff --git a/lib/setup/sqlite.php b/lib/setup/sqlite.php
index b1785ce1b0b..0b96ec60009 100644
--- a/lib/setup/sqlite.php
+++ b/lib/setup/sqlite.php
@@ -3,6 +3,11 @@
namespace OC\Setup;
class Sqlite extends AbstractDatabase {
+ public $dbprettyname = 'Sqlite';
+
+ public function validate($config) {
+ }
+
public function initialize($config) {
}