steffen: server/kolab-webadmin/kolab-webadmin/www/admin/addressbook addr.php, 1.10.2.3, 1.10.2.4
cvs at intevation.de
cvs at intevation.de
Tue Feb 21 03:33:09 CET 2006
Author: steffen
Update of /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/addressbook
In directory doto:/tmp/cvs-serv30672/kolab-webadmin/www/admin/addressbook
Modified Files:
Tag: kolab_2_0_branch
addr.php
Log Message:
Backport of: Fix for issue848 (external address in dist. list)
Index: addr.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/addressbook/Attic/addr.php,v
retrieving revision 1.10.2.3
retrieving revision 1.10.2.4
diff -u -d -r1.10.2.3 -r1.10.2.4
--- addr.php 13 Oct 2005 01:50:25 -0000 1.10.2.3
+++ addr.php 21 Feb 2006 02:33:07 -0000 1.10.2.4
@@ -238,20 +238,17 @@
}
break;
case 'modify':
- $result = $ldap->search( $dn, '(objectClass=inetOrgPerson)' );
- if( $result ) {
- $ldap_object = ldap_get_entries( $ldap->connection, $result );
- if( $ldap_object['count'] == 1 ) {
- fill_form_for_modify( $form, $ldap_object[0] );
- $form->entries['action']['value'] = 'save';
- $form->entries['dn'] = array( 'name' => 'dn',
- 'type' => 'hidden',
- 'value' => $dn );
- $heading = _('Modify External Address');
- $content = $form->outputForm();
- } else {
- array_push($errors, sprintf(_("Error: Multiple results returned for DN %s"), $dn) );
- }
+ $ldap_object = $ldap->read( $dn );
+ if( $ldap_object ) {
+ fill_form_for_modify( $form, $ldap_object );
+ $form->entries['action']['value'] = 'save';
+ $form->entries['dn'] = array( 'name' => 'dn',
+ 'type' => 'hidden',
+ 'value' => $dn );
+ $heading = _('Modify External Address');
+ $content = $form->outputForm();
+ } else {
+ array_push($errors, sprintf(_("Error: No entry with DN %s found"), $dn) );
}
break;
case 'delete':
@@ -260,24 +257,46 @@
$form->entries[$k]['attrs'] = 'readonly';
}
}
- $result = $ldap->search( $dn, '(objectClass=*)' );
- if( $result ) {
- $ldap_object = ldap_get_entries( $ldap->connection, $result );
- if( $ldap_object['count'] == 1 ) {
- fill_form_for_modify( $form, $ldap_object[0] );
- $form->entries['action']['value'] = 'kill';
- foreach( array_keys($form->entries) as $key ) {
- $form->entries[$key]['attrs'] = 'readonly';
- }
- $form->submittext = _('Delete');
- $heading = _('Delete External Address');
- $content = $form->outputForm();
- } else {
- array_push($errors, sprintf(_("Error: Multiple results returned for DN %s"),$dn) );
+ $ldap_object = $ldap->read($dn);
+ if( $ldap_object ) {
+ fill_form_for_modify( $form, $ldap_object );
+ $form->entries['action']['value'] = 'kill';
+ foreach( array_keys($form->entries) as $key ) {
+ $form->entries[$key]['attrs'] = 'readonly';
}
+ $form->submittext = _('Delete');
+ $heading = _('Delete External Address');
+ $content = $form->outputForm();
+ } else {
+ array_push($errors, sprintf(_("Error: No entry with DN %s found"), $dn) );
}
break;
case 'kill':
+ // Check for distribution lists with only this user as member
+ $ldap->search( $_SESSION['base_dn'],
+ '(&(objectClass=kolabGroupOfNames)(member='.$ldap->escape($dn).'))',
+ array( 'dn', 'cn', 'mail', 'member' ) );
+ $distlists = $ldap->getEntries();
+ unset($distlists['count']);
+ foreach( $distlists as $distlist ) {
+ $dlmail = $distlist['mail'][0];
+ if( !$dlmail ) $dlmail = $distlist['cn'][0]; # Compatibility with old stuff
+ if( $distlist['member']['count'] == 1 ) {
+ $errors[] = sprintf(_("Account could not be deleted, distribution list '%s' depends on it."), $dlmail);
+ }
+ }
+ if( !$errors ) foreach( $distlists as $distlist ) {
+ $dlmail = $distlist['mail'][0];
+ if( !$dlmail ) $dlmail = $distlist['cn'][0]; # Compatibility with old stuff
+ if( ldap_mod_del( $ldap->connection, $distlist['dn'], array('member' => $dn ) ) ) {
+ $messages[] = sprintf(_("Addressbook entry removed from distribution list '%s'."), $dlmail);
+ } else {
+ $errors[] = sprintf(_("Failure to remove addressbook entry from distribution list '%s', entry will not be deleted."),
+ $dlmail);
+ break;
+ }
+ }
+
if (!$errors) {
if (!($ldap->deleteObject($dn))) {
array_push($errors, _("LDAP Error: could not delete ").$dn.": ".ldap_error($ldap->connection));
More information about the commits
mailing list