gunnar: server/php-kolab/Kolab_Webadmin/Webadmin ldap.class.php, 1.2, 1.3

cvs at kolab.org cvs at kolab.org
Thu Aug 16 18:15:21 CEST 2007


Author: gunnar

Update of /kolabrepository/server/php-kolab/Kolab_Webadmin/Webadmin
In directory doto:/tmp/cvs-serv18325/Kolab_Webadmin/Webadmin

Modified Files:
	ldap.class.php 
Log Message:
Use a parameter array instead of a session and add the group_exists function.

Index: ldap.class.php
===================================================================
RCS file: /kolabrepository/server/php-kolab/Kolab_Webadmin/Webadmin/ldap.class.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- ldap.class.php	16 Aug 2007 15:52:01 -0000	1.2
+++ ldap.class.php	16 Aug 2007 16:15:19 -0000	1.3
@@ -54,15 +54,16 @@
 
 class KolabLDAP {
 
-    function KolabLDAP() 
+    function KolabLDAP($params) 
     {
+        $this->params = $params;
         $this->errors = array();
         $this->is_bound = false;
         $this->bind_dn = false;
         $this->search_result = false;
         $this->cached_domains = false;
         // Always connect to master server
-        $this->connection=ldap_connect($_SESSION['ldap_master_uri']);
+        $this->connection=ldap_connect($params['ldap_master_uri']);
         if (ldap_set_option($this->connection, LDAP_OPT_PROTOCOL_VERSION, 3)) {
             // Good, we really neeed v3!
         } else {
@@ -129,8 +130,8 @@
   function bind( $dn = false , $pw = '' ) {
     if( !$dn ) {
       // Default ldap auth
-      $dn = $_SESSION['php_dn'];
-      $pw = $_SESSION['php_pw'];
+      $dn = $this->params['php_dn'];
+      $pw = $this->params['php_pw'];
     }
     $this->is_bound = @ldap_bind( $this->connection, $dn, $pw );
     if( $this->is_bound ) {
@@ -204,7 +205,7 @@
   }
 
   function dnForUid( $uid ) {
-    if( $this->search( $_SESSION['base_dn'],
+    if( $this->search( $this->params['base_dn'],
 		       '(&(objectclass=kolabInetOrgPerson)(uid='.$this->escape($uid).'))' ) ) {
       $entry = $this->firstEntry();
       if( $entry ) {
@@ -233,7 +234,7 @@
   }
 
   function dnForMail( $mail ) {
-    if( $this->search( $_SESSION['base_dn'],
+    if( $this->search( $this->params['base_dn'],
                        '(&(objectclass=kolabInetOrgPerson)(mail='.$this->escape($mail).'))' ) ) {
       $entry = $this->firstEntry();
       if( $entry ) {
@@ -262,7 +263,7 @@
   }
 
   function dnForAlias( $mail ) {
-    if( $this->search( $_SESSION['base_dn'],
+    if( $this->search( $this->params['base_dn'],
                        '(&(objectclass=kolabInetOrgPerson)(alias='.$this->escape($mail).'))' ) ) {
       $entry = $this->firstEntry();
       if( $entry ) {
@@ -275,7 +276,7 @@
   }
 
   function dnForMailOrAlias( $mail ) {
-    if( $this->search( $_SESSION['base_dn'],
+    if( $this->search( $this->params['base_dn'],
                        '(&(objectclass=kolabInetOrgPerson)(|(mail='.$this->escape($mail).')(alias='.$this->escape($mail).')))' ) ) {
       $entry = $this->firstEntry();
       if( $entry ) {
@@ -296,11 +297,11 @@
     if ($dn) {
       $group = 'user';
       $filter = '(member='.$this->escape($dn).')';
-      $result = $this->search( 'cn=domain-maintainer,cn=internal,'.$_SESSION['base_dn'], $filter);	  
+      $result = $this->search( 'cn=domain-maintainer,cn=internal,'.$this->params['base_dn'], $filter);	  
       if (ldap_count_entries($this->connection, $result) > 0) $group = 'domain-maintainer';	  
-      $result = $this->search( 'cn=maintainer,cn=internal,'.$_SESSION['base_dn'], $filter);
+      $result = $this->search( 'cn=maintainer,cn=internal,'.$this->params['base_dn'], $filter);
       if (ldap_count_entries($this->connection, $result) > 0) $group = 'maintainer';
-      $result = $this->search( 'cn=admin,cn=internal,'.$_SESSION["base_dn"], $filter);
+      $result = $this->search( 'cn=admin,cn=internal,'.$this->params["base_dn"], $filter);
       if (ldap_count_entries($this->connection, $result) > 0) $group = 'admin';
       if ($result) $this->freeSearchResult();
     }
@@ -308,6 +309,12 @@
     return $group;
   }
 
+function exists_group( $group ) {
+  $filter = '(&(objectClass=kolabGroupOfNames)(mail='.$this->escape($group).'))';
+  $res = $this->search( $this->params['base_dn'], $filter, array( 'dn' ) );
+  return ( $this->count($res) > 0 );
+}
+
   function domainsForMaintainerDn( $dn ) {
     if( !$this->is_bound ) {
       return false;
@@ -316,7 +323,7 @@
 	$domains = array();
 	$filter = '(member='.$this->escape($dn).')';
 	debug("filter:$filter");
-	$result = $this->search( 'cn=domains,cn=internal,'.$_SESSION['base_dn'], $filter);	  
+	$result = $this->search( 'cn=domains,cn=internal,'.$this->params['base_dn'], $filter);	  
 	$entries = $this->getEntries();
 	unset($entries['count']);
 	if( count($entries) > 0) {
@@ -415,7 +422,7 @@
 
   function domains( $reload = false ) {
 	if( $reload || !$this->cached_domains ) {
-	  $kolab_obj = $this->read( 'k=kolab,'.$_SESSION['base_dn'] );
+	  $kolab_obj = $this->read( 'k=kolab,'.$this->params['base_dn'] );
 	  if( !$kolab_obj ) return false;
 	  $this->cached_domains = $kolab_obj['postfix-mydestination'];
 	  unset($this->cached_domains['count']);
@@ -430,7 +437,7 @@
 	  return true;
 	}
 	foreach( $domains as $domain ) {
-	  $domgrpdn = 'cn='.$this->dn_escape($domain).',cn=domains,cn=internal,'.$_SESSION['base_dn'];
+	  $domgrpdn = 'cn='.$this->dn_escape($domain).',cn=domains,cn=internal,'.$this->params['base_dn'];
 	  $dom_obj = $this->read( $domgrpdn );	  
 	  if( !$dom_obj ) {
 		debug("+Adding group $domgrpdn with member $member");
@@ -459,7 +466,7 @@
 	  return true;
 	}
 	foreach( $domains as $domain ) {
-	  $domgrpdn = 'cn='.$this->dn_escape($domain).',cn=domains,cn=internal,'.$_SESSION['base_dn'];
+	  $domgrpdn = 'cn='.$this->dn_escape($domain).',cn=domains,cn=internal,'.$this->params['base_dn'];
 	  $dom_obj = $this->read( $domgrpdn );
 	  if( $dom_obj ) {
 		if( count( $dom_obj['member'] == 1 ) ) {
@@ -501,7 +508,7 @@
 	  }
 	} else {
 	  // Look up hostnames in this setup
-	  $kolab_obj = $this->read( 'k=kolab,'.$_SESSION['base_dn'] );
+	  $kolab_obj = $this->read( 'k=kolab,'.$this->params['base_dn'] );
 	  if( !$kolab_obj ) return false;
 	  $delete_template = array();
 	  $delete_template['kolabDeleteflag'] = $kolab_obj['kolabHost'];	  





More information about the commits mailing list