steffen: server/kolab-webadmin/kolab-webadmin/www/admin/user user.php, 1.61, 1.62

cvs at intevation.de cvs at intevation.de
Mon May 30 13:53:37 CEST 2005


Author: steffen

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

Modified Files:
	user.php 
Log Message:
LDAP rename (Issue730)

Index: user.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user/user.php,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- user.php	28 May 2005 20:56:05 -0000	1.61
+++ user.php	30 May 2005 11:53:35 -0000	1.62
@@ -556,7 +556,7 @@
 	   
        if ($action == "save") {
 		 if (!$errors) {
-		   if (!empty($ldap_object['cn'])) $newdn = "cn=".$ldap_object['cn'].",".$domain_dn;
+		   if (!empty($ldap_object['cn'])) $newdn = "cn=".$ldap->dn_escape($ldap_object['cn']).",".$domain_dn;
 		   else $newdn = $dn;
 		   if (strcmp($dn,$newdn) != 0) {
 			 // Check for distribution lists with this user as member
@@ -593,13 +593,22 @@
 			   foreach( $ldap_object as $k => $v ) {
 				 if( $v == array() ) unset($ldap_object[$k]);
 			   }
+			   $tmprdn = "cn=".str_rand(16);
+			   $explodeddn = ldap_explode_dn( $dn, 0 );
+			   unset($explodeddn['count']);
+			   unset($explodeddn[0]);
+			   $tmpbasedn = join(",",$explodeddn);			   
+			   if ( !$errors && !ldap_rename($ldap->connection,$dn,$tmprdn,$tmpbasedn,false) ) {
+				 array_push($errors, _("LDAP Error: Could not rename $dn to $tmprdn: ")
+							.ldap_error($ldap->connection));				 
+			   }
 			   if ( !$errors && !ldap_add($ldap->connection,$newdn, $ldap_object) ) {
 				 array_push($errors, _("LDAP Error: Could not rename $dn to $newdn: ")
 							.ldap_error($ldap->connection));
 			   }
 			   if( !$errors ) {
-				 if( !ldap_delete($ldap->connection,$dn)) {
-				   array_push($errors, _("LDAP Error: Could not remove old entry $dn: ")
+				 if( !ldap_delete($ldap->connection,$tmprdn.','.$tmpbasedn)) {
+				   array_push($errors, _("LDAP Error: Could not remove old entry $tmprdn,$tmpbasedn: ")
 							  .ldap_error($ldap->connection));
 				 }
 			   }
@@ -648,7 +657,7 @@
        } else {
 		 // firstsave
 		 if (!$errors) {
-		   $dn = "cn=".$ldap_object['cn'].$dn_add.",".$domain_dn;
+		   $dn = "cn=".$ldap->dn_escape($ldap_object['cn']).$dn_add.",".$domain_dn;
 		   foreach( $ldap_object as $k => $v ) {
 			 if( $v == array() ) unset($ldap_object[$k]);
 		   }





More information about the commits mailing list