\n\n\n"; } else { //==================================== //include "entete.inc.php"; include "ldap.inc.php"; include "ihm.inc.php"; /* require_once ("lang.inc.php"); bindtextdomain('se3-annu',"/var/www/se3/locale"); textdomain ('se3-annu'); // Aide $_SESSION["pageaide"]="Annuaire"; */ $filter=$_GET['filter']; if ((is_admin("Annu_is_admin",$login)=="Y") || (is_admin("sovajon_is_admin",$login)=="Y")) { require ("crob_ldap_functions.php"); //crob_init(); //============================================== function search_people_groups2 ($uids,$filter,$order) { /** * Recherche des utilisateurs dans la branche people a partir d'un tableau d'uids nons tries * Function: search_people_groups2 * @Parametres $order - "cat" => Tri par categorie (Eleves, Equipe...) - "group" => Tri par intitule de group (ex: 1GEA, TGEA...) * @Parametres $uids - Tableau d'uids d'utilisateurs * @Parametres $filter - Filtre de recherche * @Return Retourne un tableau des utilisateurs repondant au filtre de recherche */ // Fonction modifeie pour recueprer aussi le mail global $ldap_server, $ldap_port, $dn; global $error; $error=""; // LDAP attributs $ldap_user_attr = array( "cn", // Nom complet "sn", // Nom "gecos", // Nom prenom (cn sans accents), Date de naissance,Sexe (F/M),Status administrateur LCS (Y/N) "sexe", "mail" ); if (!$filter) $filter="(sn=*)"; $ds = @ldap_connect ( $ldap_server, $ldap_port ); if ( $ds ) { $r = @ldap_bind ( $ds ); // Bind anonyme if ($r) { $loop1=0; for ($loop=0; $loop < count($uids); $loop++) { //foreach($uids[$loop] as $key => $value){ // echo "\$uids[$loop][$key]=".$uids[$loop][$key]."
\n"; //} /* // On recupere des: $uids[0][prof]=0 $uids[0][uid]=chabotf $uids[0][group]=3_B2 $uids[0][cat]=Classe */ $result = @ldap_read ( $ds, "uid=".$uids[$loop]["uid"].",".$dn["people"], $filter, $ldap_user_attr ); if ($result) { $info = @ldap_get_entries ( $ds, $result ); if ( $info["count"]) { // Ajout pour récupérer le mail: $attribut_tmp=array("mail"); $tabtmp=get_tab_attribut("people", "uid=".$uids[$loop]["uid"], $attribut_tmp); $uids[$loop]["mail"]=$tabtmp[0]; // traitement du gecos pour identification du sexe $gecos = $info[0]["gecos"][0]; $tmp = preg_split ("/[\,]/",$gecos,4); #echo "debug ".$info["count"]." init ".$init." loop ".$loop."
"; $ret[$loop1] = array ( "uid" => $uids[$loop]["uid"], "fullname" => utf8_decode($info[0]["cn"][0]), "name" => utf8_decode($info[0]["sn"][0]), "sexe" => $tmp[2], "owner" => $uids[$loop]["owner"], "group" => $uids[$loop]["group"], "cat" => $uids[$loop]["cat"], "gecos" => $gecos, "prof" => $uids[$loop]["prof"], "mail" => $uids[$loop]["mail"] ); /* foreach($ret[$loop1] as $key => $value){ echo "\$ret[$loop1][$key]=".$ret[$loop1][$key]."
\n"; } */ $loop1++; } @ldap_free_result ( $result ); } } } else { $error = gettext("Echec du bind anonyme"); } @ldap_close ( $ds ); } else $error = gettext("Erreur de connection au serveur LDAP"); if (count($ret)) { # Correction tri du tableau # Tri par critere categorie ou intitule de groupe if ( $order == "cat" ) usort ($ret, "cmp_cat"); elseif ( $order == "group" ) usort ($ret, "cmp_group"); # Recherche du nombre de catgories ou d'intitules de groupe $i = 0; for ( $loop=0; $loop < count($ret); $loop++) { if ( $ret[$loop][$order] != $ret[$loop-1][$order]) { $tab_order[$i] = $ret[$loop][$order]; $i++; } } if (count($tab_order) > 0 ) { # On decoupe le tableau $ret en autant de sous tableaux $tmp que de criteres $order for ($i=0; $i < count($tab_order); $i++) { $j=0; for ( $loop=0; $loop < count($ret); $loop++) { if ( $ret[$loop][$order] == $tab_order[$i] ) { $ret_tmp[$i][$j] = $ret[$loop]; $j++; } } } # Tri alpabetique des sous tableaux for ( $loop=0; $loop < count($ret_tmp); $loop++) usort ($ret_tmp[$loop], "cmp_name"); # Reassemblage des tableaux temporaires $ret_final = array(); for ($loop=0; $loop < count($tab_order); $loop++) $ret_final = array_merge ($ret_final, $ret_tmp[$loop]); return $ret_final; } else { usort ($ret, "cmp_name"); return $ret; } } } //============================================== $group=search_groups ("(cn=".$filter.")"); $uids = search_uids ("(cn=".$filter.")"); //$people = search_people_groups ($uids,"(sn=*)","cat"); $people = search_people_groups2 ($uids,"(sn=*)","cat"); #$TimeStamp_1=microtime(); ############# # DEBUG # ############# #echo "debug :Temps de recherche = ".duree($TimeStamp_0,$TimeStamp_1)." s

"; ############# # Fin DEBUG # ############# if (count($people)) { //$nom_fic = "nom_du_groupe.csv"; $nom_fic = "$filter.csv"; $now = gmdate('D, d M Y H:i:s') . ' GMT'; header('Content-Type: text/x-csv'); header('Expires: ' . $now); // lem9 & loic1: IE need specific headers if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) { header('Content-Disposition: inline; filename="' . $nom_fic . '"'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); } else { header('Content-Disposition: attachment; filename="' . $nom_fic . '"'); header('Pragma: no-cache'); } //$contenu_fichier=''; $contenu_fichier="Login;Nom complet;Nom;Prenom;Naissance;Sexe;Email\n"; for ($loop=0; $loop < count($people); $loop++) { preg_match("/([0-9]{8})/",$people[$loop]["gecos"],$naiss); $contenu_fichier.=$people[$loop]["uid"].";".$people[$loop]["fullname"].";".$people[$loop]["name"].";".getprenom($people[$loop]["fullname"],$people[$loop]["name"]).";".$naiss[0].";".$people[$loop]["sexe"].";".$people[$loop]["mail"]."\n"; } echo $contenu_fichier; } else { include "entete.inc.php"; echo " ".gettext("Pas de membres")." ".gettext(" dans le groupe")." $filter.
"; include ("pdp.inc.php"); } } } ?>