mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-12-18 14:33:49 +01:00
- LSldapObject :
-> Ajout de la méthode search() effectuant une recherche multi-niveau dans l'annuaire et retournant un tableau array(dn => '', attrs => '') des objets correspondants. Cette méthode est plus légère à utiliser quand on cherche simplement a obtenir une liste d'objet avec quelques infos plutôt qu'une liste d'objet instancié. -> Utilisation de la méthode search() dans les méthodes listObjects() et listObjectsName() plutôt qu'une recherche autonome.
This commit is contained in:
parent
2b5dfe8416
commit
41767dde3d
1 changed files with 41 additions and 51 deletions
|
@ -634,7 +634,36 @@ class LSldapObject {
|
||||||
*
|
*
|
||||||
* @retval array Tableau d'objets correspondant au resultat de la recherche
|
* @retval array Tableau d'objets correspondant au resultat de la recherche
|
||||||
*/
|
*/
|
||||||
function listObjects($filter='',$basedn=NULL,$params=array()) {
|
function listObjects($filter=NULL,$basedn=NULL,$params=array()) {
|
||||||
|
$retInfos=array();
|
||||||
|
|
||||||
|
$ret = $this -> search($filter,$basedn,$params);
|
||||||
|
|
||||||
|
// Création d'un tableau d'objet correspondant au valeur retourné
|
||||||
|
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();
|
$retInfos=array();
|
||||||
$attrs=false;
|
$attrs=false;
|
||||||
$check_final_dn=false;
|
$check_final_dn=false;
|
||||||
|
@ -716,7 +745,7 @@ class LSldapObject {
|
||||||
if ($filter[$i]['attr']) {
|
if ($filter[$i]['attr']) {
|
||||||
$sparams['attributes'] = array($filter[$i]['attr']);
|
$sparams['attributes'] = array($filter[$i]['attr']);
|
||||||
}
|
}
|
||||||
else {
|
else if (!isset($sparams['attributes'])) {
|
||||||
$sparams['attributes'] = array($this -> config['rdn']);
|
$sparams['attributes'] = array($this -> config['rdn']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -742,20 +771,10 @@ class LSldapObject {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
// vérification de la compatibilité de la compatibilité du DN resultant
|
|
||||||
// et du basedn de recherche
|
|
||||||
if (!$this -> isCompatibleDNs($ret[0]['dn'],$basedn))
|
|
||||||
continue;
|
|
||||||
// ajout du DN au resultat finale
|
|
||||||
$ret_gen[]=$ret[0]['dn'];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// cas du dernier filtre
|
// cas du dernier filtre
|
||||||
if(!empty($ret_gen)) {
|
if(!empty($ret_gen)) {
|
||||||
// on quitte la boucle des filtres de la conf
|
|
||||||
$ret=$ret_gen;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// dans le cas d'une suite prévu mais d'un retour nul de la précédente recherche
|
// dans le cas d'une suite prévu mais d'un retour nul de la précédente recherche
|
||||||
|
@ -783,7 +802,9 @@ class LSldapObject {
|
||||||
$sfilter.=$sfilter_end;
|
$sfilter.=$sfilter_end;
|
||||||
|
|
||||||
// Attributes
|
// Attributes
|
||||||
$sparams['attributes'] = array($this -> config['rdn']);
|
if (!isset($sparams['attributes'])) {
|
||||||
|
$sparams['attributes'] = array($this -> config['rdn']);
|
||||||
|
}
|
||||||
|
|
||||||
// Lancement de la recherche
|
// Lancement de la recherche
|
||||||
$ret=$GLOBALS['LSldap'] -> search ($sfilter,$sbasedn,$sparams);
|
$ret=$GLOBALS['LSldap'] -> search ($sfilter,$sbasedn,$sparams);
|
||||||
|
@ -815,28 +836,14 @@ class LSldapObject {
|
||||||
// Si recherche unique
|
// Si recherche unique
|
||||||
else {
|
else {
|
||||||
// préparation du retour finale
|
// préparation du retour finale
|
||||||
if (is_array($ret)) {
|
if (!is_array($ret)) {
|
||||||
$ret_final=array();
|
|
||||||
foreach($ret as $obj) {
|
|
||||||
$ret_final[]=$obj['dn'];
|
|
||||||
}
|
|
||||||
$ret=$ret_final;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$ret=array();
|
$ret=array();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $ret;
|
||||||
// Création d'un tableau d'objet correspondant au valeur retourné
|
|
||||||
for($i=0;$i<count($ret);$i++) {
|
|
||||||
$retInfos[$i] = new $this -> type_name($this -> config);
|
|
||||||
$retInfos[$i] -> loadData($ret[$i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $retInfos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -860,31 +867,14 @@ class LSldapObject {
|
||||||
if (!$displayFormat) {
|
if (!$displayFormat) {
|
||||||
$displayFormat = $this -> getDisplayAttributes();
|
$displayFormat = $this -> getDisplayAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filtre sur l'objet souhaité
|
|
||||||
$sfilter='(&';
|
|
||||||
$sfilter.=$this -> getObjectFilter();
|
|
||||||
$sfilter_end=')';
|
|
||||||
|
|
||||||
if(($filter)&&(!empty($filter))) {
|
|
||||||
if(substr($filter,0,1)=='(') {
|
|
||||||
$sfilter.=$filter;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$sfilter.='('.$filter.')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// fermeture du filtre
|
|
||||||
$sfilter.=$sfilter_end;
|
|
||||||
|
|
||||||
// Attributes
|
// Attributes
|
||||||
$sparams['attributes'] = getFieldInFormat($displayFormat);
|
$attrs = getFieldInFormat($displayFormat);
|
||||||
if(empty($sparams['attributes'])) {
|
if(!empty($attrs)) {
|
||||||
$sparams['attributes'] = array($this -> config['rdn']);
|
$sparams['attributes'] = $attrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lancement de la recherche
|
// Lancement de la recherche
|
||||||
$ret=$GLOBALS['LSldap'] -> search ($sfilter,$sbasedn,$sparams);
|
$ret=$this -> search ($filter,$sbasedn,$sparams);
|
||||||
|
|
||||||
if (is_array($ret)) {
|
if (is_array($ret)) {
|
||||||
foreach($ret as $obj) {
|
foreach($ret as $obj) {
|
||||||
|
|
Loading…
Reference in a new issue