diff options
author | Robin Appelman <icewind1991@gmail.com> | 2010-06-18 20:08:24 +0200 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2010-06-18 20:08:24 +0200 |
commit | 7503ad139b53de41e3567d723419e49166de574f (patch) | |
tree | 4adf6db30eebcd1e72aff598deb5c5f935540cc0 /inc/lib_config.php | |
parent | 02ad83b04d79079eac4e0783a83db32ed0dba88b (diff) | |
download | nextcloud-server-7503ad139b53de41e3567d723419e49166de574f.tar.gz nextcloud-server-7503ad139b53de41e3567d723419e49166de574f.zip |
use MDB2_Schema for the creation of the initial database
Diffstat (limited to 'inc/lib_config.php')
-rwxr-xr-x | inc/lib_config.php | 213 |
1 files changed, 51 insertions, 162 deletions
diff --git a/inc/lib_config.php b/inc/lib_config.php index 986d12f4dce..6ac83db951f 100755 --- a/inc/lib_config.php +++ b/inc/lib_config.php @@ -267,169 +267,58 @@ class OC_CONFIG{ } } } - - /** - * Fills the database with the initial tables - * Note: while the AUTO_INCREMENT function is not supported by SQLite - * the same effect can be achieved by accessing the SQLite pseudo-column - * "rowid" - */ - private static function filldatabase(){ - global $CONFIG_DBTYPE; - if($CONFIG_DBTYPE=='sqlite'){ - $query="CREATE TABLE 'locks' ( - 'token' VARCHAR(255) NOT NULL DEFAULT '', - 'path' varchar(200) NOT NULL DEFAULT '', - 'created' int(11) NOT NULL DEFAULT '0', - 'modified' int(11) NOT NULL DEFAULT '0', - 'expires' int(11) NOT NULL DEFAULT '0', - 'owner' varchar(200) DEFAULT NULL, - 'recursive' int(11) DEFAULT '0', - 'writelock' int(11) DEFAULT '0', - 'exclusivelock' int(11) NOT NULL DEFAULT '0', - PRIMARY KEY ('token'), - UNIQUE ('token') - ); - -CREATE TABLE 'log' ( - `id` INTEGER ASC DEFAULT '' NOT NULL, - 'timestamp' int(11) NOT NULL, - 'user' varchar(250) NOT NULL, - 'type' int(11) NOT NULL, - 'message' varchar(250) NOT NULL, - PRIMARY KEY ('id') -); - - -CREATE TABLE 'properties' ( - 'path' varchar(255) NOT NULL DEFAULT '', - 'name' varchar(120) NOT NULL DEFAULT '', - 'ns' varchar(120) NOT NULL DEFAULT 'DAV:', - 'value' text, - PRIMARY KEY ('path','name','ns') -); - -CREATE TABLE 'users' ( - 'user_id' INTEGER ASC DEFAULT '', - 'user_name' varchar(64) NOT NULL DEFAULT '', - 'user_name_clean' varchar(64) NOT NULL DEFAULT '', - 'user_password' varchar(40) NOT NULL DEFAULT '', - PRIMARY KEY ('user_id'), - UNIQUE ('user_name' ,'user_name_clean') -); - -CREATE TABLE 'groups' ( -'group_id' INTEGER ASC DEFAULT '', -'group_name' VARCHAR( 64 ) NOT NULL DEFAULT '', -PRIMARY KEY ('group_id'), -UNIQUE ('group_name') -); - -CREATE TABLE 'user_group' ( -'user_group_id' INTEGER ASC DEFAULT '', -'user_id' VARCHAR( 64 ) NOT NULL DEFAULT '', -'group_id' VARCHAR( 64 ) NOT NULL DEFAULT '', -PRIMARY KEY ('user_group_id') -) -"; - }elseif($CONFIG_DBTYPE=='mysql'){ - $query="CREATE TABLE IF NOT EXISTS `locks` ( - `token` varchar(255) NOT NULL DEFAULT '', - `path` varchar(200) NOT NULL DEFAULT '', - `created` int(11) NOT NULL DEFAULT '0', - `modified` int(11) NOT NULL DEFAULT '0', - `expires` int(11) NOT NULL DEFAULT '0', - `owner` varchar(200) DEFAULT NULL, - `recursive` int(11) DEFAULT '0', - `writelock` int(11) DEFAULT '0', - `exclusivelock` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`token`), - UNIQUE KEY `token` (`token`), - KEY `path` (`path`), - KEY `path_2` (`path`), - KEY `path_3` (`path`,`token`), - KEY `expires` (`expires`) -); - -CREATE TABLE IF NOT EXISTS `log` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `timestamp` int(11) NOT NULL, - `user` varchar(250) NOT NULL, - `type` int(11) NOT NULL, - `message` varchar(250) NOT NULL, - PRIMARY KEY (`id`) -); - - -CREATE TABLE IF NOT EXISTS `properties` ( - `path` varchar(255) NOT NULL DEFAULT '', - `name` varchar(120) NOT NULL DEFAULT '', - `ns` varchar(120) NOT NULL DEFAULT 'DAV:', - `value` text, - PRIMARY KEY (`path`,`name`,`ns`), - KEY `path` (`path`) -); - -CREATE TABLE IF NOT EXISTS `users` ( -`user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , -`user_name` VARCHAR( 64 ) NOT NULL , -`user_name_clean` VARCHAR( 64 ) NOT NULL , -`user_password` VARCHAR( 340) NOT NULL , -UNIQUE ( -`user_name` , -`user_name_clean` -) -); - -CREATE TABLE IF NOT EXISTS `groups` ( -`group_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , -`group_name` VARCHAR( 64 ) NOT NULL , -UNIQUE ( -`group_name` -) -); - -CREATE TABLE IF NOT EXISTS `user_group` ( -`user_group_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , -`user_id` VARCHAR( 64 ) NOT NULL , -`group_id` VARCHAR( 64 ) NOT NULL -) -"; + + /** + * Fills the database with the initial tables + * Note: while the AUTO_INCREMENT function is not supported by SQLite + * the same effect can be achieved by accessing the SQLite pseudo-column + * "rowid" + */ + private static function filldatabase(){ + global $SERVERROOT; + OC_DB::createDBFromStructure($SERVERROOT.'/db_structure.xml'); + } + + /** + * Create the database and user + * @param string adminUser + * @param string adminPwd + * + */ + private static function createdatabase($adminUser,$adminPwd){ + global $CONFIG_DBHOST; + global $CONFIG_DBNAME; + global $CONFIG_DBUSER; + global $CONFIG_DBPWD; + //we cant user OC_BD functions here because we need to connect as the administrative user. + $connection = @new mysqli($CONFIG_DBHOST, $adminUser, $adminPwd); + if (mysqli_connect_errno()) { + @ob_end_clean(); + echo('<html><head></head><body bgcolor="#F0F0F0"><br /><br /><center><b>can not connect to database as administrative user.</center></body></html>'); + exit(); + } + $query="SELECT user FROM mysql.user WHERE user='{$_POST['dbuser']}';"; + $result = @$connection->query($query); + if (!$result) { + $entry='DB Error: "'.$connection->error.'"<br />'; + $entry.='Offending command was: '.$query.'<br />'; + echo($entry); + } + if($result->num_rows==0){ + $query="CREATE USER '{$_POST['dbuser']}' IDENTIFIED BY '{$_POST['dbpassword']}';"; + }else{ + $query=''; + } + $query.="CREATE DATABASE IF NOT EXISTS `{$_POST['dbname']}`; + GRANT ALL PRIVILEGES ON `{$_POST['dbname']}` . * TO '{$_POST['dbuser']}';"; + $result = @$connection->multi_query($query); + if (!$result) { + $entry='DB Error: "'.$connection->error.'"<br />'; + $entry.='Offending command was: '.$query.'<br />'; + echo($entry); + } + $connection->close(); } - OC_DB::multiquery($query); - } - - /** - * Create the database and user - * @param string adminUser - * @param string adminPwd - * - */ - private static function createdatabase($adminUser,$adminPwd){ - global $CONFIG_DBHOST; - global $CONFIG_DBNAME; - global $CONFIG_DBUSER; - global $CONFIG_DBPWD; - //we cant user OC_BD functions here because we need to connect as the administrative user. - $connection = @new mysqli($CONFIG_DBHOST, $adminUser, $adminPwd); - if (mysqli_connect_errno()) { - @ob_end_clean(); - echo('<html><head></head><body bgcolor="#F0F0F0"><br /><br /><center><b>can not connect to database as administrative user.</center></body></html>'); - exit(); - } - $query="CREATE USER '{$_POST['dbuser']}' IDENTIFIED BY '{$_POST['dbpassword']}'; - -CREATE DATABASE IF NOT EXISTS `{$_POST['dbname']}` ; - -GRANT ALL PRIVILEGES ON `{$_POST['dbname']}` . * TO '{$_POST['dbuser']}';"; - $result = @$connection->multi_query($query); - if (!$result) { - $entry='DB Error: "'.$connection->error.'"<br />'; - $entry.='Offending command was: '.$query.'<br />'; - echo($entry); - } - $connection->close(); - } } ?> |