summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/appinfo/update.php
blob: badceb378d1876e88b9089cda8955102ee97dee2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php

//from version 0.1 to 0.2

//settings
$pw = OCP\Config::getAppValue('user_ldap', 'ldap_password');
if(!is_null($pw)) {
	$pwEnc = base64_encode($pw);
	OCP\Config::setAppValue('user_ldap', 'ldap_agent_password', $pwEnc);
	OC_Appconfig::deleteKey('user_ldap', 'ldap_password');
}

//detect if we can switch on naming guidelines. We won't do it on conflicts.
//it's a bit spaghetti, but hey.
$state = OCP\Config::getSystemValue('ldapIgnoreNamingRules', 'doCheck');
if($state == 'doCheck'){
	$sqlCleanMap = 'DELETE FROM *PREFIX*ldap_user_mapping';

	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);
	}
}


//from version 0.2 to 0.2.1
$objects = array('user', 'group');

foreach($objects as $object) {
	$fetchDNSql = 'SELECT ldap_dn from *PREFIX*ldap_'.$object.'_mapping';
	$updateSql = 'UPDATE *PREFIX*ldap_'.$object.'_mapping SET ldap_DN = ? WHERE ldap_dn = ?';

	$query = OCP\DB::prepare($fetchDNSql);
	$res = $query->execute();
	$DNs = $res->fetchAll();
	$updateQuery = OCP\DB::prepare($updateSql);
	foreach($DNs as $dn) {
		$newDN = mb_strtolower($dn['ldap_dn'], 'UTF-8');
		$updateQuery->execute(array($newDN, $dn['ldap_dn']));
	}
}