steffen: server/kolab-webadmin/kolab-webadmin/www/admin/addressbook addr.php, 1.10.2.4, 1.10.2.5

cvs at intevation.de cvs at intevation.de
Wed Mar 29 13:29:00 CEST 2006


Author: steffen

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

Modified Files:
      Tag: kolab_2_0_branch
	addr.php 
Log Message:
Backport of fix for issue848

Index: addr.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/addressbook/Attic/addr.php,v
retrieving revision 1.10.2.4
retrieving revision 1.10.2.5
diff -u -d -r1.10.2.4 -r1.10.2.5
--- addr.php	21 Feb 2006 02:33:07 -0000	1.10.2.4
+++ addr.php	29 Mar 2006 11:28:58 -0000	1.10.2.5
@@ -188,19 +188,32 @@
 			else $newdn = $dn;
 			debug("action=save, dn=$dn, newdn=$newdn<br/>\n");
 			if (strcmp($dn,$newdn) != 0) {
-			  if (($result=ldap_read($ldap->connection,$dn,"(objectclass=*)")) &&
-				  ($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)) {
-				  array_push($errors, _("LDAP Error: could not rename ").$dn.
-							 " to ".$newdn." ".ldap_error($ldap->connection));
+			  // Check for distribution lists with this entry as member
+			  $ldap->search( $_SESSION['base_dn'], 
+							 '(&(objectClass=kolabGroupOfNames)(!(kolabDeleteFlag=*))(member='.$ldap->escape($dn).'))',
+							 array( 'dn', 'mail' ) );
+			  $distlists = $ldap->getEntries();
+			  unset( $distlists['count'] );
+			  foreach( $distlists as $distlist ) {
+				$dlcn = $distlist['mail'][0];
+				$errors[] = sprintf(_("Addressbook entry DN could not be modified, distribution list <a href='/admin/distributionlist/list.php?action=modify&dn=%s'>'%s'</a> depends on it. To modify this entry, first remove it from the distribution list."), urlencode($distlist['dn']), $dlcn );
+			  }
+
+			  if( !$errors ) {
+				if (($result=ldap_read($ldap->connection,$dn,"(objectclass=*)")) &&
+					($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)) {
+					array_push($errors, _("LDAP Error: could not rename ").$dn.
+							   " to ".$newdn." ".ldap_error($ldap->connection));
+				  } else {
+					$messages[] = sprintf(_("%s successfully updated"), $newdn);
+				  }
+				  $dn = $newdn;
 				} else {
-				  $messages[] = sprintf(_("%s successfully updated"), $newdn);
+				  array_push($errors,_("LDAP Error: could not read ").$dn.": ".ldap_error($ldap->connection));
 				}
-				$dn = $newdn;
-			  } else {
-				array_push($errors,_("LDAP Error: could not read ").$dn.": ".ldap_error($ldap->connection));
 			  }
 			} else {
 			  if (!ldap_modify($ldap->connection, $dn, $ldap_object)) {





More information about the commits mailing list