From 7ec3e37199c28cd289699e226254b571ca5c5938 Mon Sep 17 00:00:00 2001
From: Arthur Schiwon <blizzz@owncloud.com>
Date: Thu, 31 May 2012 13:06:27 +0200
Subject: [PATCH] LDAP: make queries compatible also with PostgreSQL

---
 apps/user_ldap/lib_ldap.php | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php
index 5cd7e0241b..b900a67ec3 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);
 	}
-- 
GitLab