From: Arthur Schiwon Date: Thu, 31 May 2012 11:06:27 +0000 (+0200) Subject: LDAP: make queries compatible also with PostgreSQL X-Git-Tag: v4.5.0beta1~74^2~425^2~34 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3b36a9b704339b409c1065e843d33e3b8c8dc213;p=nextcloud-server.git LDAP: make queries compatible also with PostgreSQL --- 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); }