gunnar: server/kolab-webadmin/kolab-webadmin/www/admin/maintainer maintainer.php.in, 1.5, 1.6

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/maintainer
In directory doto:/tmp/cvs-serv14316/kolab-webadmin/www/admin/maintainer

Modified Files:
	maintainer.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: maintainer.php.in
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/maintainer/maintainer.php.in,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- maintainer.php.in	10 Jan 2007 16:50:43 -0000	1.5
+++ maintainer.php.in	16 Mar 2007 12:17:24 -0000	1.6
@@ -208,31 +208,27 @@
 			   $ldap_object['uid'] = $oldattrs['uid'][0];
 			   if( empty($ldap_object['userPassword']) )
 				 $ldap_object['userPassword'] = $oldattrs['userPassword'][0];
-			   if (!ldap_add($ldap->connection,$newdn, $ldap_object) )
-				 array_push($errors, sprintf(_("LDAP Error: could not rename %1\$s to %2\$s: %3\$s"), $dn, $newdn,
-											 ldap_error($ldap->connection)));
+
+			   // Try to rename the object
+			   if (!ldap_rename($ldap->connection, $dn, "cn=" . $ldap_object['cn'], "cn=internal,".$domain_dn, true)) {
+				 array_push($errors, sprintf(_("LDAP Error: could not rename %s to %s: %s"), $dn,
+											 $newdn, ldap_error($ldap->connection)));
+			   }
 			   if( !$errors ) {
-				 if( !ldap_delete($ldap->connection,$dn)) {
-				   array_push($errors, sprintf(_("LDAP Error: could not remove old entry %s: %s"), $dn,
+				 // 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("cn=internal,".$domain_dn) - 1);
+				   ldap_rename($ldap->connection, $newdn, $old_dn, "cn=internal,".$domain_dn, true);
+				 } else {
+				   // everything is fine and we can move on
+				   $messages[] = sprintf( _("%s successfully updated"), $newdn);
+				   $dn = $newdn;
 				 }
 			   }
-			   if( !$errors ) {
-				 // Update maintainer group
-				 $groupdn = 'cn=maintainer,cn=internal,'.$domain_dn;
-				 if( !ldap_mod_add( $ldap->connection,
-											   $groupdn,
-											   array( 'member' => $newdn ) ) ) {
-				   $errors[] = sprintf(_("LDAP Error: Could not add new group entry %s: %s"), $newdn,
-									   ldap_error($ldap->connection));
-				 }
-				 if( !$errors && !ldap_mod_del($ldap->connection,$groupdn,
-									  array( 'member' => $dn ) ) ) {
-				   $errors[] = sprintf(_("LDAP Error: Could not remove old group entry %s: %s"), $dn,
-									   ldap_error($ldap->connection));
-				 }
-			   }			   
-			   $dn = $newdn;
 			 } else array_push($errors, sprintf(_("LDAP Error: could not read %s: %s"), $dn,
 												ldap_error($ldap->connection)));
 		   } else {





More information about the commits mailing list