steffen: server/kolab-webadmin/kolab-webadmin/www/admin/addressbook addr.php, 1.9, 1.10

cvs at intevation.de cvs at intevation.de
Thu Jun 16 02:32:12 CEST 2005


Author: steffen

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

Modified Files:
	addr.php 
Log Message:
verification bugs (Issue804) and form elements readonly looknfeel (Issue797)

Index: addr.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/addressbook/addr.php,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- addr.php	28 May 2005 20:56:05 -0000	1.9
+++ addr.php	16 Jun 2005 00:32:10 -0000	1.10
@@ -54,18 +54,43 @@
   $form->entries['action']['value'] = 'save';
 }
 
+$dn="";
+if (!empty($_REQUEST['dn'])) $dn = trim($_REQUEST['dn']);
+
 function checkuniquemail( $form, $key, $value ) {
   global $ldap;
+  global $dn;
+  global $action;
   $value = trim($value);
   if( $value == '' ) return ''; // OK
 
-  if( $ldap->countMail( $_SESSION['base_dn'], $value ) > 0 ) {	
+  $excludedn = false;
+  if( $action == 'save' ) $excludedn = trim($dn);
+
+  if( $ldap->countMail( $_SESSION['base_dn'], $value, $excludedn ) > 0 ) {	
 	return _('User, vCard or distribution list with this email address already exists');
   } else {
 	return '';
   }
 }
 
+function checkuniquealias( $form, $key, $value ) {
+  global $ldap;
+  global $action;
+  global $dn;
+  $excludedn = false;
+  if( $action == 'save' ) $excludedn = trim($dn);
+  $lst = array_unique( array_filter( array_map( 'trim', preg_split( '/\n/', $value ) ), 'strlen') );
+  $str = '';
+  foreach( $lst as $alias ) {
+	debug( "looking at $alias, exluding $dn" );
+	if( $ldap->countMail( $_SESSION['base_dn'], $alias, $excludedn ) > 0 ) {
+	  $str .= _('Email address ').htmlentities($alias)._(' collision <br />');
+	}
+  }
+  return $str;
+}
+
 /**** Submenu for current page ***/
 $menuitems[$sidx]['selected'] = 'selected';
 $heading = '';
@@ -75,9 +100,6 @@
     in_array($_REQUEST['action'],$valid_actions)) $action = trim($_REQUEST['action']);
 else array_push($errors, _("Error: need valid action to proceed") );
 
-$dn="";
-if (!empty($_REQUEST['dn'])) $dn = trim($_REQUEST['dn']);
-
 if (!$errors && $auth->group() != 'maintainer' && $auth->group() != 'admin') 
 	 array_push($errors, _("Error: You don't have the required Permissions") );
 
@@ -97,6 +119,7 @@
 									'validation' => 'checkuniquemail' ),
 				  'alias' => array( 'name' => _('E-Mail Aliases'),
 									'type' => 'textarea',
+									'validation' => 'checkuniquealias',
 									'comment' => _('One address per line')),
 				  'o' => array( 'name' => _('Organisation') ),
 				  'ou' => array( 'name' => _('Organisational Unit') ),
@@ -111,10 +134,9 @@
 $entries['action'] = array( 'name' => 'action',
 							'type' => 'hidden' );
 
-if( $action == 'modify' || $action == 'delete' ) {
-  if( $_POST['dn'] ) {
-	$dn = $POST['dn'];	
-  } else if( $_REQUEST['dn'] ) {
+$dn = '';
+if( $action == 'modify' || $action == 'delete' || $action == 'save') {
+  if( $_REQUEST['dn'] ) {
 	$dn = $_REQUEST['dn'];
   } else {  
 	array_push($errors, _("Error: DN required for $action operation") );
@@ -164,6 +186,7 @@
 		  if (!$errors) {
 			if (!empty($ldap_object['cn'])) $newdn = "cn=".$ldap_object['cn'].",".$addressbook_root;
 			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)) &&
@@ -232,6 +255,11 @@
 	}
 	break;
   case 'delete':
+	foreach( $form->entries as $k => $v ) {
+	  if( $v['type'] != 'hidden' ) {
+		$form->entries[$k]['attrs'] = 'readonly';
+	  }
+	}
 	$result = $ldap->search( $dn, '(objectClass=*)' );
 	if( $result ) {
 	  $ldap_object = ldap_get_entries( $ldap->connection, $result );





More information about the commits mailing list