steffen: server/kolab-webadmin/kolab-webadmin/www/admin/user user.php, 1.39, 1.40

cvs at intevation.de cvs at intevation.de
Tue Oct 12 03:22:29 CEST 2004


Author: steffen

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

Modified Files:
	user.php 
Log Message:
Fix for problem when moving account between trees

Index: user.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user/user.php,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- user.php	11 Oct 2004 23:32:49 -0000	1.39
+++ user.php	12 Oct 2004 01:22:27 -0000	1.40
@@ -308,10 +308,10 @@
 		  'uid'    => array( 'name' => _('Unique Identity (UID)'),
                                      'validation' => 'checkuid',
                                      'comment' => _('Optional - Defaults to Primary Email Address') ),
-                 'kolabhomeserver' => array( 'name' => _('Mailbox Home Server'),
-								 'validation' => 'notempty',
-								 'comment' => $comment_kolabhomeserver,
-								 'value' => $_SESSION['fqdnhostname'] ),
+		  'kolabhomeserver' => array( 'name' => _('Mailbox Home Server'),
+									  'validation' => 'notempty',
+									  'comment' => $comment_kolabhomeserver,
+									  'value' => $_SESSION['fqdnhostname'] ),
 		  'accttype' => array( 'name' => _('Account Type'),
 							   'type' => 'select',
 							   'options' => array( _('User Account'), _('Internal User Account'), _('Group Account'), _('Resource Account') ),
@@ -409,8 +409,10 @@
        $ldap_object['mail'] = trim( strtolower( $_POST['mail_0'] ) );
        $ldap_object['uid'] = trim( strtolower( $_POST['uid'] ) );
        if( $action == 'firstsave' ) {
-                 if ($ldap_object['uid'] == "") $ldap_object['uid'] = $ldap_object['mail'];
+		 if ($ldap_object['uid'] == "") $ldap_object['uid'] = $ldap_object['mail'];
 		 $ldap_object['kolabHomeServer'] = trim($_POST['kolabhomeserver']);
+	   } else {
+		 unset($ldap_object['kolabHomeServer']);
 	   }
        foreach( array( 'title', 'o', 'ou', 'roomNumber', 'street', 'postOfficeBox',
 		       'postalCode', 'l', 'c', 'telephoneNumber',
@@ -437,7 +439,11 @@
 		   debug("Looking at $user:$pol");
 		   $i++;
 		   if( !empty($user) && 0 <= $pol && $pol < 5  ) {
-			 $ra = array('ACT_ALWAYS_ACCEPT', 'ACT_ALWAYS_REJECT', 'ACT_REJECT_IF_CONFLICTS', 'ACT_MANUAL_IF_CONFLICTS', 'ACT_MANUAL' );
+			 $ra = array('ACT_ALWAYS_ACCEPT', 
+						 'ACT_ALWAYS_REJECT', 
+						 'ACT_REJECT_IF_CONFLICTS', 
+						 'ACT_MANUAL_IF_CONFLICTS', 
+						 'ACT_MANUAL' );
 			 if( $ra[$pol] ) {
 			   $ldap_object['kolabInvitationPolicy'][] = ($user=='anyone'?"":"$user:").$ra[$pol];
 			 }
@@ -481,6 +487,18 @@
 				 ($oldattrs=ldap_get_attributes($ldap->connection,$entry))) {
 			   $ldap_object['uid'] = $oldattrs['uid'][0];
 			   $ldap_object['mail'] = $oldattrs['mail'][0];
+			   unset( $oldattrs['count'] );
+			   foreach( $oldattrs as $k => $v ) {
+				 if( is_int($k) ) continue;
+				 if( !$ldap_object[$k] ) {
+				   unset($v['count'] );
+				   if( count($v) > 1 ) { 
+					 $ldap_object[$k] = $v;
+				   } else {
+					 $ldap_object[$k] = $v[0];
+				   }
+				 }
+			   }
 			   if( !$ldap_object['userPassword'] ) $ldap_object['userPassword'] = $oldattrs['userPassword'][0];
 			   foreach( $ldap_object as $k => $v ) {
 				 if( $v == array() ) unset($ldap_object[$k]);
@@ -505,6 +523,7 @@
 			   unset($ldap_object['cn']);
 			   unset($ldap_object['mail']);
 			   unset($ldap_object['uid']);
+			   unset($ldap_object['kolabHomeServer']);
 			 }
 			 if (!ldap_modify($ldap->connection, $dn, $ldap_object)) {			   
 			   array_push($errors, _("LDAP Error: Could not modify object $dn: ")





More information about the commits mailing list