<?php

class Ldap {
	#*****************************************************************************
	#
	# ldap.class.php
	#
	# Author: 		Denis Roy
	# Date:			2005-12-12
	#
	# Description: functions for querying LDAP
	#
	# HISTORY:
	#
	#****************************************************************************
	
	var $ldaphost = "main";
	var $list = array();

	function getUserGroupList($_uid_dn) {
		/* @return: Array of Strings
		 * 
		 * Using the DN passed as a param, query LDAP to get User groups (DN)
		 * 
		 * 2005-12-06: droy 
		 *  - initial code
		 */		
		
		
		if($_uid_dn != "") {
			$ds = ldap_connect($this->ldaphost);
			ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
			if ($ds) {
   				$r = @ldap_bind($ds); # anonymous bind

				if($r) {
					$sr = ldap_search($ds, "ou=group,dc=eclipse,dc=org", "(cn=*)");

					$groupList = ldap_get_entries($ds, $sr);

					for( $i = 0; $i < $groupList["count"]; $i++ ) {
   						for($j=0; $j<$groupList[$i]["member"]["count"]; $j++) {
   							$data2 = $groupList[$i]["member"][$j];
   							if($data2 == $_uid_dn) {
   								$this->list[count($this->list)] = $groupList[$i]["dn"];
   							}
   						}
					}
				}
    		}
		    ldap_close($ds);
		}
		
		return $this->list;
	}
}
?>