From bae954a7972c84cfd71ced68173bde0e3b36a2eb Mon Sep 17 00:00:00 2001
From: Arthur Schiwon <blizzz@owncloud.com>
Date: Fri, 18 May 2012 17:38:22 +0200
Subject: [PATCH] LDAP: only check once for name conflicts on update. Set a
 value on install as well

---
 apps/user_ldap/appinfo/install.php |  6 ++++++
 apps/user_ldap/appinfo/update.php  | 33 ++++++++++++++++--------------
 2 files changed, 24 insertions(+), 15 deletions(-)
 create mode 100644 apps/user_ldap/appinfo/install.php

diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php
new file mode 100644
index 0000000000..9efc3bb24d
--- /dev/null
+++ b/apps/user_ldap/appinfo/install.php
@@ -0,0 +1,6 @@
+<?php
+
+$state = OCP\Config::getSystemValue('ldapIgnoreNamingRules', 'doSet');
+if($state == 'doSet'){
+	OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
+}
diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php
index 048d804217..b3f7a397db 100644
--- a/apps/user_ldap/appinfo/update.php
+++ b/apps/user_ldap/appinfo/update.php
@@ -12,22 +12,25 @@ if(!is_null($pw)) {
 
 //detect if we can switch on naming guidelines. We won't do it on conflicts.
 //it's a bit spaghetti, but hey.
-$sqlCleanMap = 'DELETE FROM *PREFIX*ldap_user_mapping';
+$state = OCP\Config::getSystemValue('ldapIgnoreNamingRules', 'doCheck');
+if($state == 'doCheck'){
+	$sqlCleanMap = 'DELETE FROM *PREFIX*ldap_user_mapping';
 
-require_once(OC::$APPSROOT.'/apps/user_ldap/lib_ldap.php');
-require_once(OC::$APPSROOT.'/apps/user_ldap/user_ldap.php');
+	require_once(OC::$APPSROOT.'/apps/user_ldap/lib_ldap.php');
+	require_once(OC::$APPSROOT.'/apps/user_ldap/user_ldap.php');
 
-OCP\Config::setSystemValue('ldapIgnoreNamingRules', true);
-$LDAP_USER = new OC_USER_LDAP();
-$users_old = $LDAP_USER->getUsers();
-$query = OCP\DB::prepare($sqlCleanMap);
-$query->execute();
-OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
-OC_LDAP::init(true);
-$users_new = $LDAP_USER->getUsers();
-$query = OCP\DB::prepare($sqlCleanMap);
-$query->execute();
-if($users_old !== $users_new) {
-	//we don't need to check Groups, because they were not supported in 3'
 	OCP\Config::setSystemValue('ldapIgnoreNamingRules', true);
+	$LDAP_USER = new OC_USER_LDAP();
+	$users_old = $LDAP_USER->getUsers();
+	$query = OCP\DB::prepare($sqlCleanMap);
+	$query->execute();
+	OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
+	OC_LDAP::init(true);
+	$users_new = $LDAP_USER->getUsers();
+	$query = OCP\DB::prepare($sqlCleanMap);
+	$query->execute();
+	if($users_old !== $users_new) {
+		//we don't need to check Groups, because they were not supported in 3'
+		OCP\Config::setSystemValue('ldapIgnoreNamingRules', true);
+	}
 }
\ No newline at end of file
-- 
GitLab