*/ class LSldap { var $config; var $cnx = NULL; /** * Constructeur * * Cette methode définis la configuration de l'accès à l'annuaire * et établie la connexion. * * @author Benjamin Renard * * @param[in] $config array Tableau de configuration au formar Net_LDAP * * @retval void * * @see Net_LDAP::connect() */ function LSldap ($config) { $this -> config = $config; $this -> connect(); } /** * Connection * * Cette methode établie la connexion à l'annuaire Ldap * * @author Benjamin Renard * * @retval boolean true si la connection est établie, false sinon */ function connect() { $this -> cnx = Net_LDAP::connect($this -> config); if (Net_LDAP::isError($this -> cnx)) { $GLOBALS['LSerror'] -> addErrorCode(1,$this -> cnx -> getMessage()); $this -> cnx = NULL; return; } return true; } /** * Déconnection * * Cette methode clos la connexion à l'annuaire Ldap * * @author Benjamin Renard * * @retval void */ function close() { $this -> cnx -> done(); } /** * Recherche dans l'annuaire * * Cette methode effectue une recherche dans l'annuaire et retourne le resultat * de celle-ci sous la forme d'un tableau. * * @author Benjamin Renard * * @param[in] $filter [required] string Filtre de recherche Ldap * @param[in] $basedn string DN de base pour la recherche * @param[in] $params array Paramètres de recherche au format Net_LDAP::search() * * @see Net_LDAP::search() * * @retval array Retourne un tableau associatif contenant : * - ['dn'] : le DN de l'entré * - ['attrs'] : tableau associatif contenant les attributs (clé) * et leur valeur (valeur). */ function search ($filter,$basedn=NULL,$params = array() ) { $ret = $this -> cnx -> search($basedn,$filter,$params); if (Net_LDAP::isError($ret)) { $GLOBALS['LSerror'] -> addErrorCode(2,$ret -> getMessage()); return; } $retInfos=array(); foreach($ret -> entries() as $entry) { $retInfos[]=array('dn' => $entry -> dn(), 'attrs' => $entry -> getValues()); } return $retInfos; } /** * Compte le nombre de retour d'une recherche dans l'annuaire * * Cette methode effectue une recherche dans l'annuaire et retourne le nombre * d'entrés trouvées. * * @author Benjamin Renard * * @param[in] $filter [required] string Filtre de recherche Ldap * @param[in] $basedn string DN de base pour la recherche * @param[in] $params array Paramètres de recherche au format Net_LDAP::search() * * @see Net_LDAP::search() * * @retval numeric Le nombre d'entré trouvées */ function getNumberResult ($filter,$basedn=NULL,$params = array() ) { if (empty($filter)) $filter=NULL; $ret = $this -> cnx -> search($basedn,$filter,$params); if (Net_LDAP::isError($ret)) { $GLOBALS['LSerror'] -> addErrorCode(2,$ret -> getMessage()); return; } return $ret -> count(); } /** * Charge les valeurs des attributs d'une entré de l'annuaire * * Cette methode recupère les valeurs des attributs d'une entrée de l'annaire * et les retournes sous la forme d'un tableau. * * @author Benjamin Renard * * @param[in] $dn string DN de l'entré Ldap * * @retval array Tableau associatif des valeurs des attributs avec en clef, le nom de l'attribut. */ function getAttrs($dn) { $infos = ldap_explode_dn($dn,0); if((!$infos)||($infos['count']==0)) return; $basedn=''; for ($i=1;$i<$infos['count'];$i++) { $sep=($basedn=='')?'':','; $basedn.=$sep.$infos[$i]; } $return=$this -> search($infos[0],$basedn); return $return[0]['attrs']; } } ?>