steffen: server/kolab-webadmin/kolab-webadmin/php/admin/include debug.php, 1.2, 1.3 ldap.class.php, 1.1, 1.2

cvs at intevation.de cvs at intevation.de
Thu May 27 17:59:29 CEST 2004


Author: steffen

Update of /kolabrepository/server/kolab-webadmin/kolab-webadmin/php/admin/include
In directory doto:/tmp/cvs-serv15704/kolab-webadmin/php/admin/include

Modified Files:
	debug.php ldap.class.php 
Log Message:
thorough duplicate mail address checks for users

Index: debug.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/php/admin/include/debug.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- debug.php	25 May 2004 03:25:01 -0000	1.2
+++ debug.php	27 May 2004 15:59:27 -0000	1.3
@@ -6,6 +6,11 @@
 function debug($str) {
   //print $str.'<br/>';
 }
+function debug_var_dump($var) {
+  //print '<pre>';
+  //var_dump($var);
+  //print '</pre>';
+}
 function backtrace() {
   $debug_array = debug_backtrace();
   $counter = count($debug_array);

Index: ldap.class.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/php/admin/include/ldap.class.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- ldap.class.php	17 May 2004 15:24:26 -0000	1.1
+++ ldap.class.php	27 May 2004 15:59:27 -0000	1.2
@@ -1,6 +1,6 @@
 <?php
 /*
- *  Copyright (c) 2004 Klarälvdalens Datakonsult AB
+ *  Copyright (c) 2004 Klarälvdalens Datakonsult AB
  *
  *    Written by Steffen Hansen <steffen at klaralvdalens-datakonsult.se>
  *
@@ -19,6 +19,7 @@
  */
 
 require_once('session_vars.php');
+require_once('debug.php');
 
 class KolabLDAP {
   function KolabLDAP() {
@@ -104,9 +105,13 @@
     return $ldap_object;
   }
 
-  function search( $base, $filter ) {
+  function search( $base, $filter, $attrs = false ) {
     $this->freeSearchResult();
-    $this->search_result = ldap_search( $this->connection, $base, $filter );
+    if( $attrs ) {
+	  $this->search_result = ldap_search( $this->connection, $base, $filter, $attrs );
+	} else {
+	  $this->search_result = ldap_search( $this->connection, $base, $filter );	  
+	}
     return $this->search_result;
   }
 
@@ -175,6 +180,46 @@
     }
     ldap_free_result( $res );
     return $privmembers;
+  }
+
+  // Count the number of occurences of an email address
+  // in users' mail and alias attributes and in dist. lists.
+  // This can be used to check for uniqueness etc.
+  function countMail( $base, $mail , $excludedn=false ) {
+	// First count users
+	$filter = '(|(mail='.$this->escape($mail).')(alias='.$this->escape($mail).'))';	  
+	$res = $this->search( $base, $filter, array( 'dn' ) );
+	$count = 0;
+
+	$entries = ldap_get_entries( $this->connection, $res );
+	if( $excludedn ) {
+	  for ( $i = 0; $i < count( $entries ); $i++ ) {
+		if( is_null( $entries[$i] ) ) continue;
+		if( $entries[$i]['dn'] == $excludedn ) continue;	   
+		debug("found ".$entries[$i]['dn'] );
+		$count++;
+	  } 
+	} else $count += $entries['count'];
+	
+	// Now count dist. lists
+	$cn = substr( $mail, 0, strpos( $mail, '@' ) );
+	$filter = '(&(objectClass=groupOfNames)(cn='.$this->escape($cn).'))';
+	$res = $this->search( $base, $filter, array( 'dn' ) );
+	
+	$entries = ldap_get_entries( $this->connection, $res );
+	if( $excludedn ) {
+	  for ( $i = 0; $i < count( $entries ); $i++ ) {
+		if( is_null( $entries[$i] ) ) continue;
+		if( $entries[$i]['dn'] == $excludedn ) continue;
+		debug("found ".$entries[$i]['dn'] );
+		$count++;
+	  } 
+	} else $count += $entries['count'];
+
+	debug("Got $count addresses");
+
+	$this->freeSearchResult();
+	return $count;
   }
 
   var $connection;





More information about the commits mailing list