$LSsearch -> run();
return $LSsearch -> listObjects();
-
-/*
- for($i=0;$i<count($ret);$i++) {
- $retInfos[$i] = new $this -> type_name($this -> config);
- $retInfos[$i] -> loadData($ret[$i]['dn']);
- }
-
- return $retInfos;
-*/
- }
-
- /**
- * Recherche les objets du même type dans l'annuaire
- *
- * Effectue une recherche en fonction des paramètres passé et retourne un
- * tableau array(dn => '', attrs => array()) d'objet correspondant au resultat*
- * de la recherche.
- *
- * @author Benjamin Renard <brenard@easter-eggs.com>
- *
- * @param[in] $filter array (ou string) Filtre de recherche Ldap / Tableau de filtres de recherche
- * @param[in] $basedn string DN de base pour la recherche
- * @param[in] $params array Paramètres de recherche au format Net_LDAP2::search()
- *
- * @retval array Tableau d'objets correspondant au resultat de la recherche
- */
-/*
- function search($filter='',$basedn=NULL,$params=array()) {
- $retInfos=array();
- $attrs=false;
- $check_final_dn=false;
-
- if(!is_array($filter))
- $filter=array(array('filter' => $filter));
-
- $nbFilter=count($filter);
-
- for($i=0;$i<$nbFilter;$i++) {
- $new_attrs=array();
- // Défintion des paramètres de base pour la recherche
- $sbasedn=$basedn;
- $sparams=$params;
- $ret=array();
- if (isset($filter[$i]['scope']))
- $sparams["scope"]=$filter[$i]['scope'];
-
- // Definition des critères de recherche correspondant au type d'objet à lister
- if(($nbFilter==1)||(!isset($filter[$i]['attr']))) {
- // Filtre sur l'objet souhaité
- $sfilter='(&';
- $sfilter.=$this -> getObjectFilter();
- $sfilter_end=')';
- $check_final_dn=true;
- }
- // Initialisation des critères d'une recherche intermédiaire
- else {
- if(isset($filter[$i]['object_type'])) {
- $obj_tmp=new $filter[$i]['object_type']();
- $obj_filter=$obj_tmp->getObjectFilter();
- $sfilter='(&'.$obj_filter;
- $sfilter_end=')';
- }
- else {
- $sfilter='';
- $sfilter_end='';
- }
- if(isset($filter[$i]['scope'])) {
- $sparams['scope']=$filter[$i]['scope'];
- }
- if(isset($filter[$i]['basedn'])) {
- $sbasedn=$filter[$i]['basedn'];
- }
- }
- // Dans le cas d'une recherche intermédiaire ou finale
- if($attrs!=false) {
- // Initialisation des variables
- $ret_gen=array();
- $new_attrs=array();
-
- // Pour tout les attributs retournés
- for($ii=0;$ii<count($attrs);$ii++) {
- $sfilter_for='';
- // Définition du filtre de recherche à partir des paramètres utilisateurs et
- // des paramètres de recherche de l'objet à listé (dans le cas d'une recherche finale
- if((isset($filter[$i]['filter']))&&(!empty($filter[$i]['filter']))) {
- $sfilter_user=getFData($filter[$i]['filter'],$attrs[$ii]);
- if($sfilter_user[0]=='(')
- $sfilter_for=$sfilter.$sfilter_user;
- else
- $sfilter_for=$sfilter.'('.$sfilter_user.')';
- }
- else {
- $sfilter_for=$sfilter;
- }
-
- if(isset($filter[$i]['basedn'])) {
- $sbasedn=getFData($filter[$i]['basedn'],$attrs[$ii]);
- if ((!$this -> isCompatibleDNs($sbasedn,$basedn))&&($check_final_dn)) continue;
- }
-
- // Vérification de la compatibilité du basedn de la recherche et du basedn générale
- // Finalisation du filtre
- $sfilter_for.=$sfilter_end;
-
-
- // Attributes
- if ($filter[$i]['attr']) {
- $sparams['attributes'] = array($filter[$i]['attr']);
- }
- else if (!isset($sparams['attributes'])) {
- $sparams['attributes'] = array($this -> config['rdn']);
- }
-
- // Execution de la recherche
- $ret=LSldap :: search ($sfilter_for,$sbasedn,$sparams);
-
- // Si il y un retour
- if(isset($ret[0])) {
- // si il ya une suite (recherche intermédiaire)
- if($filter[$i]['attr']){
- for($iii=0;$iii<count($ret);$iii++) {
- if(isset($ret[$iii]['attrs'][$filter[$i]['attr']])) {
- // cas de valeur multiple
- if(is_array($ret[$iii]['attrs'][$filter[$i]['attr']])) {
- foreach($ret[$iii]['attrs'][$filter[$i]['attr']] as $val_attr) {
- $new_attrs[]=$val_attr;
- }
- }
- // cas de valeur unique
- else {
- $new_attrs[]=$ret[$iii]['attrs'][$filter[$i]['attr']];
- }
- }
- }
- }
- }
- }
- // cas du dernier filtre
- if(!empty($ret_gen)) {
- break;
- }
- // dans le cas d'une suite prévu mais d'un retour nul de la précédente recherche
- else if(empty($new_attrs)) {
- // retour vide et arrêt de la recherche
- $ret=array();
- break;
- }
- else {
- $attrs=$new_attrs;
- }
- }
- // Dans le cas de la recherche initiale
- else {
- // Déclaration du filtre de recherche
- if((isset($filter[$i]['filter']))&&(!empty($filter[$i]['filter']))) {
- if($filter[$i]['filter'][0]=='(') {
- $sfilter.=$filter[$i]['filter'];
- }
- else {
- $sfilter.='('.$filter[$i]['filter'].')';
- }
- }
- // fermeture du filtre
- $sfilter.=$sfilter_end;
-
- // Attributes
- if (!isset($sparams['attributes'])) {
- $sparams['attributes'] = array($this -> config['rdn']);
- }
-
- // Lancement de la recherche
- $ret=LSldap :: search ($sfilter,$sbasedn,$sparams);
-
- //Si filtre multiple => on recupère une liste d'attributs
- if(isset($filter[$i]['attr'])) {
- for($ii=0;$ii<count($ret);$ii++) {
- if(isset($ret[$ii]['attrs'][$filter[$i]['attr']])) {
- // cas de valeur multiple
- if(is_array($ret[$ii]['attrs'][$filter[$i]['attr']])) {
- foreach($ret[$ii]['attrs'][$filter[$i]['attr']] as $val_attr) {
- $attrs[]=$val_attr;
- }
- }
- // cas de valeur unique
- else {
- $attrs[]=$ret[$ii]['attrs'][$filter[$i]['attr']];
- }
- }
- }
-
- // Si aucunne valeur n'est retournées
- if(empty($attrs)){
- // arrêt et retour à zéro
- $ret=array();
- break;
- }
- }
- // Si recherche unique
- else {
- // préparation du retour finale
- if (!is_array($ret)) {
- $ret=array();
- }
- break;
- }
- }
- }
- return $ret;
}
-*/
/**
* Retourne une liste d'objet du même type et retourne leur noms