diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2012-05-31 13:06:27 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@owncloud.com> | 2012-05-31 13:06:27 +0200 |
commit | 7ec3e37199c28cd289699e226254b571ca5c5938 (patch) | |
tree | 8a108c268df0a2780db2f60b77833b3c3748103e | |
parent | f4577bf00cf24698d63be7312f1330194f98daa5 (diff) | |
download | nextcloud-server-7ec3e37199c28cd289699e226254b571ca5c5938.tar.gz nextcloud-server-7ec3e37199c28cd289699e226254b571ca5c5938.zip |
LDAP: make queries compatible also with PostgreSQL
-rw-r--r-- | apps/user_ldap/lib_ldap.php | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php index 5cd7e0241bf..b900a67ec31 100644 --- a/apps/user_ldap/lib_ldap.php +++ b/apps/user_ldap/lib_ldap.php @@ -366,19 +366,24 @@ class OC_LDAP { $table = self::getMapTable($isUser); $dn = self::sanitizeDN($dn); - $sqliteAdjustment = ''; + $sqlAdjustment = ''; $dbtype = OCP\Config::getSystemValue('dbtype'); - if(($dbtype == 'sqlite') || ($dbtype == 'sqlite3')) { - $sqliteAdjustment = 'OR'; + if($dbtype == 'mysql') { + $sqlAdjustment = 'FROM dual'; } $insert = OCP\DB::prepare(' - INSERT '.$sqliteAdjustment.' IGNORE INTO '.$table.' - (ldap_dn, owncloud_name) - VALUES (?,?) + INSERT INTO '.$table.' (ldap_dn, owncloud_name) + SELECT ?,? + '.$sqlAdjustment.' + WHERE NOT EXISTS ( + SELECT 1 + FROM '.$table.' + WHERE ldap_dn = ? + AND owncloud_name = ? ) '); - $res = $insert->execute(array($dn, $ocname)); + $res = $insert->execute(array($dn, $ocname, $dn, $ocname)); return !OCP\DB::isError($res); } |