summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAdministrator <Administrator@WINDOWS-2012>2013-02-10 13:07:59 +0100
committerAdministrator <Administrator@WINDOWS-2012>2013-02-10 13:07:59 +0100
commit41ec976fd74320c379f95d05d3a490310f06402e (patch)
tree441ddac9f3c839d9cbe18e07df3462655ee30b01 /lib
parentd577f790c8cbcf4f8dce74f9991e4bd62e21f949 (diff)
downloadnextcloud-server-41ec976fd74320c379f95d05d3a490310f06402e.tar.gz
nextcloud-server-41ec976fd74320c379f95d05d3a490310f06402e.zip
Bugfixes and cleanup MS SQL Server installation
Diffstat (limited to 'lib')
-rw-r--r--lib/db.php36
-rw-r--r--lib/setup.php191
2 files changed, 144 insertions, 83 deletions
diff --git a/lib/db.php b/lib/db.php
index 58f46c1171f..c3ff481e19e 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -284,7 +284,7 @@ class OC_DB {
$dsn['database'] = $user;
}
break;
- case 'mssql':
+ case 'mssql':
$dsn = array(
'phptype' => 'sqlsrv',
'username' => $user,
@@ -292,7 +292,7 @@ class OC_DB {
'hostspec' => $host,
'database' => $name
);
- break;
+ break;
default:
return false;
}
@@ -920,28 +920,30 @@ class PDOStatementWrapper{
* make execute return the result instead of a bool
*/
public function execute($input=array()) {
- $this->lastArguments=$input;
- if(count($input)>0) {
- if (!isset($type)) {
- $type = OC_Config::getValue( "dbtype", "sqlite" );
- }
-
- if ($type == 'mssql') {
- $this->tryFixSubstringLastArgumentDataForMSSQL($input);
- }
-
+ $this->lastArguments = $input;
+ if (count($input) > 0) {
+
+ if (!isset($type)) {
+ $type = OC_Config::getValue( "dbtype", "sqlite" );
+ }
+
+ if ($type == 'mssql') {
+ $input = $this->tryFixSubstringLastArgumentDataForMSSQL($input);
+ }
+
$result=$this->statement->execute($input);
- }else{
+ } else {
$result=$this->statement->execute();
}
- if($result) {
+
+ if ($result) {
return $this;
- }else{
+ } else {
return false;
}
}
- private function tryFixSubstringLastArgumentDataForMSSQL(&$input) {
+ private function tryFixSubstringLastArgumentDataForMSSQL($input) {
$query = $this->statement->queryString;
$pos = stripos ($query, 'SUBSTRING');
@@ -1013,6 +1015,8 @@ class PDOStatementWrapper{
$this->statement = $PDO->prepare($newQuery);
$this->lastArguments = $input;
+
+ return $input;
} catch (PDOException $e){
$entry = 'PDO DB Error: "'.$e->getMessage().'"<br />';
$entry .= 'Offending command was: '.$this->statement->queryString .'<br />';
diff --git a/lib/setup.php b/lib/setup.php
index d4ea26354ef..3efad79cfad 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -610,98 +610,155 @@ class OC_Setup {
self::mssql_createDatabase($dbname, $masterConnection);
- self::mssql_createDBUser($dbuser, $dbpass, $masterConnection);
+ self::mssql_createDBUser($dbuser, $dbname, $masterConnection);
sqlsrv_close($masterConnection);
- $connectionInfo = array( "Database" => $dbname, "UID" => $dbuser, "PWD" => $dbpass);
-
- $connection = @sqlsrv_connect($dbhost, $connectionInfo);
-
- //fill the database if needed
- $query="SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{$dbname}' AND TABLE_NAME = '{$dbtableprefix}users'";
- $result = sqlsrv_query($connection, $query);
- if($result) {
- $row=sqlsrv_fetch_array($result);
- }
-
- if(!$result or $row[0] == 0) {
- OC_DB::createDbFromStructure('db_structure.xml');
- }
-
- sqlsrv_close($connection);
+ self::mssql_createDatabaseStructure($dbname, $dbuser, $dbpass);
}
private static function mssql_createDBLogin($name, $password, $connection) {
$query = "SELECT * FROM master.sys.server_principals WHERE name = '".$name."';";
$result = sqlsrv_query($connection, $query);
- if ($result) {
+ if ($result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ } else {
$row = sqlsrv_fetch_array($result);
- }
- if (!$result or $row[0] == 0) {
- $query = "CREATE LOGIN [".$name."] WITH PASSWORD = '".$password."';";
- $result = sqlsrv_query($connection, $query);
- if (!$result or $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- echo($entry);
- }
+ if ($row === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ } else {
+ if ($row == null) {
+ $query = "CREATE LOGIN [".$name."] WITH PASSWORD = '".$password."';";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result or $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ }
+ }
+ }
}
}
private static function mssql_createDBUser($name, $dbname, $connection) {
$query = "SELECT * FROM [".$dbname."].sys.database_principals WHERE name = '".$name."';";
$result = sqlsrv_query($connection, $query);
- if($result) {
- $row=sqlsrv_fetch_array($result);
+ if ($result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ } else {
+ $row = sqlsrv_fetch_array($result);
+
+ if ($row === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ } else {
+ if ($row == null) {
+ $query = "USE [".$dbname."]; CREATE USER [".$name."] FOR LOGIN [".$name."];";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result || $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry = 'DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ }
+ }
+
+ $query = "USE [".$dbname."]; EXEC sp_addrolemember 'db_owner', '".$name."';";
+ $result = sqlsrv_query($connection, $query);
+ if (!$result || $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ }
+ }
}
-
- if (!$result or $row[0] == 0) {
- $query = "USE [".$dbname."]; CREATE USER [".$name."] FOR LOGIN [".$name."];";
- $result = sqlsrv_query($connection, $query);
- if (!$result or $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- echo($entry);
- }
- }
-
- $query = "USE [".$dbname."]; EXEC sp_addrolemember 'db_owner', '".$name."';";
- $result = sqlsrv_query($connection, $query);
- if (!$result or $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- echo($entry);
- }
}
private static function mssql_createDatabase($dbname, $connection) {
$query = "CREATE DATABASE [".$dbname."];";
$result = sqlsrv_query($connection, $query);
- if (!$result or $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- echo($entry);
+ if (!$result || $result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
}
}
+ private static function mssql_createDatabaseStructure($dbname, $dbuser, $dbpass) {
+ $connectionInfo = array( "Database" => $dbname, "UID" => $dbuser, "PWD" => $dbpass);
+
+ $connection = @sqlsrv_connect($dbhost, $connectionInfo);
+
+ //fill the database if needed
+ $query = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{$dbname}' AND TABLE_NAME = '{$dbtableprefix}users'";
+ $result = sqlsrv_query($connection, $query);
+ if ($result === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ } else {
+ $row = sqlsrv_fetch_array($result);
+
+ if ($row === false) {
+ if ( ($errors = sqlsrv_errors() ) != null) {
+ $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
+ } else {
+ $entry = '';
+ }
+ $entry.='Offending command was: '.$query.'<br />';
+ echo($entry);
+ } else {
+ if ($row == null) {
+ OC_DB::createDbFromStructure('db_structure.xml');
+ }
+ }
+ }
+
+ sqlsrv_close($connection);
+ }
/**
* create .htaccess files for apache hosts