From f0e69b2b99174c29859729c0d91d8b4a97c6f28b Mon Sep 17 00:00:00 2001
From: Arthur Schiwon <blizzz@owncloud.com>
Date: Tue, 13 May 2014 17:47:00 +0200
Subject: [PATCH] Port LDAP: fix filter can be reset and broken after upgrade
 from OC 5 #8579

LDAP: set filter mode to raw, so filters will not be changed and broken after upgrade from oc5, when visiting the LDAP settings and opening filter tabs

get the correct version number for compare -.-

bump version and don't overwrite values on next update if not necessary

simpler and better readable assignment
---
 apps/user_ldap/appinfo/update.php | 42 ++++++++++++++++++++++---------
 apps/user_ldap/appinfo/version    |  2 +-
 2 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php
index 41770cf97b..1e706ce869 100644
--- a/apps/user_ldap/appinfo/update.php
+++ b/apps/user_ldap/appinfo/update.php
@@ -7,21 +7,39 @@ if($state === 'unset') {
 	OCP\Config::setSystemValue('ldapIgnoreNamingRules', false);
 }
 
+$installedVersion = OCP\Config::getAppValue('user_ldap', 'installed_version');
+$enableRawMode = version_compare($installedVersion, '0.4.1', '<');
+
 $configPrefixes = OCA\user_ldap\lib\Helper::getServerConfigurationPrefixes(true);
 $ldap = new OCA\user_ldap\lib\LDAP();
 foreach($configPrefixes as $config) {
 	$connection = new OCA\user_ldap\lib\Connection($ldap, $config);
-	$value = \OCP\Config::getAppValue('user_ldap',
-									  $config.'ldap_uuid_attribute', 'auto');
-	\OCP\Config::setAppValue('user_ldap',
-							 $config.'ldap_uuid_user_attribute', $value);
-	\OCP\Config::setAppValue('user_ldap',
-							 $config.'ldap_uuid_group_attribute', $value);
 
-	$value = \OCP\Config::getAppValue('user_ldap',
-									  $config.'ldap_expert_uuid_attr', 'auto');
-	\OCP\Config::setAppValue('user_ldap',
-							 $config.'ldap_expert_uuid_user_attr', $value);
-	\OCP\Config::setAppValue('user_ldap',
-							 $config.'ldap_expert_uuid_group_attr', $value);
+	$state = \OCP\Config::getAppValue(
+		'user_ldap', $config.'ldap_uuid_user_attribute', 'not existing');
+	if($state === 'non existing') {
+		$value = \OCP\Config::getAppValue(
+			'user_ldap', $config.'ldap_uuid_attribute', 'auto');
+		\OCP\Config::setAppValue(
+			'user_ldap', $config.'ldap_uuid_user_attribute', $value);
+		\OCP\Config::setAppValue(
+			'user_ldap', $config.'ldap_uuid_group_attribute', $value);
+	}
+
+	$state = \OCP\Config::getAppValue(
+		'user_ldap', $config.'ldap_expert_uuid_user_attr', 'not existing');
+	if($state === 'non existing') {
+		$value = \OCP\Config::getAppValue(
+			'user_ldap', $config.'ldap_expert_uuid_attr', 'auto');
+		\OCP\Config::setAppValue(
+			'user_ldap', $config.'ldap_expert_uuid_user_attr', $value);
+		\OCP\Config::setAppValue(
+			'user_ldap', $config.'ldap_expert_uuid_group_attr', $value);
+	}
+
+	if($enableRawMode) {
+		\OCP\Config::setAppValue('user_ldap', $config.'ldap_user_filter_mode', 1);
+		\OCP\Config::setAppValue('user_ldap', $config.'ldap_login_filter_mode', 1);
+		\OCP\Config::setAppValue('user_ldap', $config.'ldap_group_filter_mode', 1);
+	}
 }
diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version
index 44bb5d1f74..2b7c5ae018 100644
--- a/apps/user_ldap/appinfo/version
+++ b/apps/user_ldap/appinfo/version
@@ -1 +1 @@
-0.4.1
\ No newline at end of file
+0.4.2
-- 
GitLab