gunnar: server/kolab-webadmin/kolab-webadmin/www/admin/addressbook addr.php.in, 1.4, 1.5

cvs at kolab.org cvs at kolab.org
Fri Mar 16 13:17:26 CET 2007


Author: gunnar

Update of /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/addressbook
In directory doto:/tmp/cvs-serv14316/kolab-webadmin/www/admin/addressbook

Modified Files:
	addr.php.in 
Log Message:
2007-03-16  Gunnar Wrobel  <p at rdus.de>

	* www/admin/user/user.php.in: 
	* www/admin/sharedfolder/sf.php.in: 
	* www/admin/maintainer/maintainer.php.in: 
	* www/admin/domainmaintainer/domainmaintainer.php.in: 
	* www/admin/distributionlist/list.php.in: 
	* www/admin/administrator/admin.php.in: 
	* www/admin/addressbook/addr.php.in: 

	Fixed for the new LDAP overlays introduced in
	http://kolab.org/cgi-bin/viewcvs-kolab.cgi/server/kolabd/kolabd/templates/slapd.conf.template.in.diff?r1=1.9&r2=1.10

	Tries to fix the following issues:

	https://intevation.de/roundup/kolab/issue1614
	https://intevation.de/roundup/kolab/issue1652
	https://intevation.de/roundup/kolab/issue1654


Index: addr.php.in
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/addressbook/addr.php.in,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- addr.php.in	29 Mar 2006 10:52:14 -0000	1.4
+++ addr.php.in	16 Mar 2007 12:17:24 -0000	1.5
@@ -204,13 +204,28 @@
 					($entry=ldap_first_entry($ldap->connection,$result)) &&
 					($oldattrs=ldap_get_attributes($ldap->connection,$entry))) {
 				  foreach( $ldap_object as $k => $v ) if( $v == array() ) unset( $ldap_object[$k] );
-				  if (!ldap_add($ldap->connection,$newdn, $ldap_object) || !ldap_delete($ldap->connection,$dn)) {
+
+				  // Try to rename the object
+				  if (!ldap_rename($ldap->connection, $dn, "cn=" . $ldap_object['cn'], $addressbook_root, true)) {
 					array_push($errors, sprintf(_("LDAP Error: could not rename %s to %s: %s"), $dn,
 												$newdn, ldap_error($ldap->connection)));
-				  } else {
-					$messages[] = sprintf( _("%s successfully updated"), $newdn);
 				  }
-				  $dn = $newdn;
+				  if( !$errors ) {
+					// Renaming was ok, now try to modify the object accordingly
+					if (!ldap_modify($ldap->connection, $newdn, $ldap_object)) {
+					  // While this should not happen, in case it does, we need to revert the
+					  // renaming
+					  array_push($errors, sprintf(_("LDAP Error: could not modify %s to %s: %s"), $newdn,
+												  ldap_error($ldap->connection)));
+					  $old_dn = substr($dn, 0, strlen($dn) - strlen($addressbook_root) - 1);
+					  ldap_rename($ldap->connection, $newdn, $old_dn, $addressbook_root, true);
+					} else {
+					  // everything is fine and we can move on
+					  $messages[] = sprintf( _("%s successfully updated"), $newdn);
+					  $dn = $newdn;
+					}
+				  }
+
 				} else {
 				  array_push($errors,sprintf(_("LDAP Error: could not read %s: %s"), $dn,
 											 ldap_error($ldap->connection)));





More information about the commits mailing list