]> source.dussan.org Git - nextcloud-server.git/commitdiff
LDAP: make queries compatible also with PostgreSQL
authorArthur Schiwon <blizzz@owncloud.com>
Thu, 31 May 2012 11:06:27 +0000 (13:06 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Thu, 31 May 2012 11:07:49 +0000 (13:07 +0200)
apps/user_ldap/lib_ldap.php

index 5cd7e0241bf26ba9106fd288e35808c682b93d98..b900a67ec312d14940c4c480d93d4ce64f641810 100644 (file)
@@ -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);
        }