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