summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2013-06-26 21:40:31 +0200
committerJörn Friedrich Dreyer <jfd@butonic.de>2013-07-04 17:34:54 +0200
commitfc9e3c63f6e99403633fed0ac2d888da6d42324f (patch)
treecddd1583502557dbb92eb90168b5df7f710bb25e /lib/public
parent87e0a1f85cd4145d0d942e44890267aa3870bf71 (diff)
downloadnextcloud-server-fc9e3c63f6e99403633fed0ac2d888da6d42324f.tar.gz
nextcloud-server-fc9e3c63f6e99403633fed0ac2d888da6d42324f.zip
Oracle doesn't know & as bitwise AND
Conflicts: lib/public/share.php
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/share.php14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/public/share.php b/lib/public/share.php
index 40b9e03fa07..15167e68d77 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -663,13 +663,15 @@ class Share {
// Remove the permissions for all reshares of this item
if (!empty($ids)) {
$ids = "'".implode("','", $ids)."'";
- // the binary operator & works on sqlite, mysql, postgresql and mssql
- $sql = 'UPDATE `*PREFIX*share` SET `permissions` = `permissions` & ? WHERE `id` IN ('.$ids.')';
- if (\OC_Config::getValue('dbtype', 'sqlite') === 'oci') {
- // guess which dbms does not handle & and uses a function for this
- $sql = 'UPDATE `*PREFIX*share` SET `permissions` = BITAND(`permissions`,?) WHERE `id` IN ('.$ids.')';
+ // TODO this should be done with Doctrine platform objects
+ if (\OC_Config::getValue( "dbtype") === 'oci') {
+ $andOp = 'BITAND(`permissions`, ?)';
+ } else {
+ $andOp = '`permissions` & ?';
}
- \OC_DB::executeAudited($sql, array($permissions));
+ $query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `permissions` = '.$andOp
+ .' WHERE `id` IN ('.$ids.')');
+ $query->execute(array($permissions));
}
}
}