summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2013-05-22 15:29:22 +0200
committerBjörn Schießle <schiessle@owncloud.com>2013-05-22 15:29:22 +0200
commitee53bd1aa3e3cb62a93dfda66141e3537426d5dd (patch)
tree376c87af2bb2629cb1c38098517bec8590bf6107 /lib
parentc6722581f982d05909664171bd66cc7ec2a2a67b (diff)
parent26732ecaa63f054f76e34b276668310f344ee50b (diff)
downloadnextcloud-server-ee53bd1aa3e3cb62a93dfda66141e3537426d5dd.tar.gz
nextcloud-server-ee53bd1aa3e3cb62a93dfda66141e3537426d5dd.zip
Merge branch 'master' into files_encryption
Conflicts: lib/files/cache/cache.php
Diffstat (limited to 'lib')
-rw-r--r--lib/app.php12
-rw-r--r--lib/base.php1
-rw-r--r--lib/db.php17
-rw-r--r--lib/files/cache/cache.php16
-rw-r--r--lib/setup.php12
-rw-r--r--lib/user.php4
-rw-r--r--lib/user/database.php2
-rwxr-xr-xlib/util.php3
8 files changed, 47 insertions, 20 deletions
diff --git a/lib/app.php b/lib/app.php
index 55b4543ec9f..c6f6e92e60e 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -172,9 +172,17 @@ class OC_App{
return array();
}
$apps=array('files');
- $query = OC_DB::prepare( 'SELECT `appid` FROM `*PREFIX*appconfig`'
- .' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\'' );
+ $sql = 'SELECT `appid` FROM `*PREFIX*appconfig`'
+ .' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\'';
+ if (OC_Config::getValue( 'dbtype', 'sqlite' ) === 'oci') { //FIXME oracle hack
+ $sql = 'SELECT `appid` FROM `*PREFIX*appconfig`'
+ .' WHERE `configkey` = \'enabled\' AND to_char(`configvalue`)=\'yes\'';
+ }
+ $query = OC_DB::prepare( $sql );
$result=$query->execute();
+ if( \OC_DB::isError($result)) {
+ throw new DatabaseException($result->getMessage(), $query);
+ }
while($row=$result->fetchRow()) {
if(array_search($row['appid'], $apps)===false) {
$apps[]=$row['appid'];
diff --git a/lib/base.php b/lib/base.php
index 7d7e690aa6f..724bd250a5c 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -260,6 +260,7 @@ class OC {
OC_Util::addScript("jquery-tipsy");
OC_Util::addScript("compatibility");
OC_Util::addScript("oc-dialogs");
+ OC_Util::addScript("octemplate");
OC_Util::addScript("js");
OC_Util::addScript("eventsource");
OC_Util::addScript("config");
diff --git a/lib/db.php b/lib/db.php
index 8f6f50bda6e..61836551833 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -273,18 +273,13 @@ class OC_DB {
break;
case 'oci':
$dsn = array(
- 'phptype' => 'oci8',
- 'username' => $user,
- 'password' => $pass,
- 'charset' => 'AL32UTF8',
+ 'phptype' => 'oci8',
+ 'username' => $user,
+ 'password' => $pass,
+ 'service' => $name,
+ 'hostspec' => $host,
+ 'charset' => 'AL32UTF8',
);
- if ($host != '') {
- $dsn['hostspec'] = $host;
- $dsn['database'] = $name;
- } else { // use dbname for hostspec
- $dsn['hostspec'] = $name;
- $dsn['database'] = $user;
- }
break;
case 'mssql':
$dsn = array(
diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 1a8435a46fc..b912b4423e7 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -146,8 +146,12 @@ class Cache {
if ($fileId > -1) {
$query = \OC_DB::prepare(
'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `unencrypted_size`, `etag`
- FROM `*PREFIX*filecache` WHERE parent = ? ORDER BY `name` ASC');
+ FROM `*PREFIX*filecache` WHERE `parent` = ? ORDER BY `name` ASC');
+
$result = $query->execute(array($fileId));
+ if (\OC_DB::isError($result)) {
+ \OCP\Util::writeLog('cache', 'getFolderContents failed: ' . $result->getMessage(), \OCP\Util::ERROR);
+ }
$files = $result->fetchAll();
foreach ($files as &$file) {
$file['mimetype'] = $this->getMimetype($file['mimetype']);
@@ -202,7 +206,7 @@ class Cache {
. ' VALUES(' . implode(', ', $valuesPlaceholder) . ')');
$result = $query->execute($params);
if (\OC_DB::isError($result)) {
- \OCP\Util::writeLog('cache', 'Insert to cache failed: ' . $result, \OCP\Util::ERROR);
+ \OCP\Util::writeLog('cache', 'Insert to cache failed: ' . $result->getMessage(), \OCP\Util::ERROR);
}
return (int)\OC_DB::insertid('*PREFIX*filecache');
@@ -373,6 +377,9 @@ class Cache {
$pathHash = md5($file);
$query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path_hash` = ?');
$result = $query->execute(array($this->getNumericStorageId(), $pathHash));
+ if( \OC_DB::isError($result)) {
+ \OCP\Util::writeLog('cache', 'get status failed: ' . $result->getMessage(), \OCP\Util::ERROR);
+ }
if ($row = $result->fetchRow()) {
if ((int)$row['size'] === -1) {
return self::SHALLOW;
@@ -510,8 +517,11 @@ class Cache {
*/
public function getIncomplete() {
$query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache`'
- . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1');
+ . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC',1);
$result = $query->execute(array($this->getNumericStorageId()));
+ if (\OC_DB::isError($result)) {
+ \OCP\Util::writeLog('cache', 'getIncomplete failed: ' . $result->getMessage(), \OCP\Util::ERROR);
+ }
if ($row = $result->fetchRow()) {
return $row['path'];
} else {
diff --git a/lib/setup.php b/lib/setup.php
index f1ac6b8b2b8..a63cc664dbc 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -152,8 +152,12 @@ class OC_Setup {
self::setupOCIDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix, $dbtablespace, $username);
} catch (Exception $e) {
$error[] = array(
- 'error' => $l->t('Oracle username and/or password not valid'),
- 'hint' => $l->t('You need to enter either an existing account or the administrator.')
+ 'error' => $l->t('Oracle connection could not be established'),
+ 'hint' => $e->getMessage().' Check environment: ORACLE_HOME='.getenv('ORACLE_HOME')
+ .' ORACLE_SID='.getenv('ORACLE_SID')
+ .' LD_LIBRARY_PATH='.getenv('LD_LIBRARY_PATH')
+ .' NLS_LANG='.getenv('NLS_LANG')
+ .' tnsnames.ora is '.(is_readable(getenv('ORACLE_HOME').'/network/admin/tnsnames.ora')?'':'not ').'readable'
);
return $error;
}
@@ -452,9 +456,13 @@ class OC_Setup {
} else {
$easy_connect_string = '//'.$e_host.'/'.$e_dbname;
}
+ \OC_Log::write('setup oracle', 'connect string: ' . $easy_connect_string, \OC_Log::DEBUG);
$connection = @oci_connect($dbuser, $dbpass, $easy_connect_string);
if(!$connection) {
$e = oci_error();
+ if (is_array ($e) && isset ($e['message'])) {
+ throw new Exception($e['message']);
+ }
throw new Exception($l->t('Oracle username and/or password not valid'));
}
//check for roles creation rights in oracle
diff --git a/lib/user.php b/lib/user.php
index 2bd11022e26..26fe73f8bfe 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -611,6 +611,10 @@ class OC_User {
public static function isEnabled($userid) {
$sql = 'SELECT `userid` FROM `*PREFIX*preferences`'
.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND `configvalue` = ?';
+ if (OC_Config::getValue( 'dbtype', 'sqlite' ) === 'oci') { //FIXME oracle hack
+ $sql = 'SELECT `userid` FROM `*PREFIX*preferences`'
+ .' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ? AND to_char(`configvalue`) = ?';
+ }
$stmt = OC_DB::prepare($sql);
if ( ! OC_DB::isError($stmt) ) {
$result = $stmt->execute(array($userid, 'core', 'enabled', 'false'));
diff --git a/lib/user/database.php b/lib/user/database.php
index 63c64ed43d3..d70b620f2ab 100644
--- a/lib/user/database.php
+++ b/lib/user/database.php
@@ -136,7 +136,7 @@ class OC_User_Database extends OC_User_Backend {
*/
public function getDisplayName($uid) {
if( $this->userExists($uid) ) {
- $query = OC_DB::prepare( 'SELECT displayname FROM `*PREFIX*users` WHERE `uid` = ?' );
+ $query = OC_DB::prepare( 'SELECT `displayname` FROM `*PREFIX*users` WHERE `uid` = ?' );
$result = $query->execute( array( $uid ))->fetchAll();
$displayName = trim($result[0]['displayname'], ' ');
if ( !empty($displayName) ) {
diff --git a/lib/util.php b/lib/util.php
index 48c224a3034..01e2df7bfc4 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -173,7 +173,8 @@ class OC_Util {
//check for database drivers
if(!(is_callable('sqlite_open') or class_exists('SQLite3'))
and !is_callable('mysql_connect')
- and !is_callable('pg_connect')) {
+ and !is_callable('pg_connect')
+ and !is_callable('oci_connect')) {
$errors[]=array('error'=>'No database drivers (sqlite, mysql, or postgresql) installed.',
'hint'=>'');//TODO: sane hint
$web_server_restart= true;