[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 6 * Liste les groupes 7 * @Version $Id: grouplist_csv.php 8600 2015-03-16 20:12:30Z plouf $ 8 9 * @Projet LCS / SambaEdu 10 11 * @auteurs jLCF jean-luc.chretien@tice.ac-caen.fr 12 * @auteurs oluve olivier.le_monnier@crdp.ac-caen.fr 13 * @auteurs wawa olivier.lecluse@crdp.ac-caen.fr 14 * @auteurs Equipe Tice academie de Caen 15 16 * @Licence Distribue selon les termes de la licence GPL 17 18 * @note 19 */ 20 21 /** 22 23 * @Repertoire: annu 24 * file: grouplist_csv.php 25 */ 26 27 28 29 //==================================== 30 // Portion de code correspondant a la partie entete.inc.php sans l'affichage HTML 31 32 @session_start(); 33 $_SESSION["pageaide"]="Table_des_matières"; 34 35 require ("config.inc.php"); 36 require_once ("functions.inc.php"); 37 38 require_once ("lang.inc.php"); 39 bindtextdomain('se3-core',"/var/www/se3/locale"); 40 textdomain ('se3-core'); 41 42 // HTMLPurifier 43 require_once ("traitement_data.inc.php"); 44 45 $login=isauth(); 46 47 48 // Prise en compte de la page demandee initialement - leb 25/6/2005 49 if ($login == "") { 50 // header("Location:$urlauth"); 51 $request = $PHP_SELF; 52 if ( $_SERVER['QUERY_STRING'] != "") $request .= "?".$_SERVER['QUERY_STRING']; 53 echo "<script language=\"JavaScript\" type=\"text/javascript\">\n<!--\n"; 54 echo "top.location.href = '$urlauth?request=" . rawurlencode($request) . "';\n"; 55 echo "//-->\n</script>\n"; 56 } else { 57 //==================================== 58 //include "entete.inc.php"; 59 include "ldap.inc.php"; 60 include "ihm.inc.php"; 61 62 /* 63 require_once ("lang.inc.php"); 64 bindtextdomain('se3-annu',"/var/www/se3/locale"); 65 textdomain ('se3-annu'); 66 67 // Aide 68 $_SESSION["pageaide"]="Annuaire"; 69 */ 70 71 $filter=$_GET['filter']; 72 73 if ((is_admin("Annu_is_admin",$login)=="Y") || (is_admin("sovajon_is_admin",$login)=="Y")) { 74 75 76 require ("crob_ldap_functions.php"); 77 //crob_init(); 78 79 //============================================== 80 function search_people_groups2 ($uids,$filter,$order) { 81 82 83 /** 84 85 * Recherche des utilisateurs dans la branche people a partir d'un tableau d'uids nons tries 86 * Function: search_people_groups2 87 88 89 * @Parametres $order - "cat" => Tri par categorie (Eleves, Equipe...) - "group" => Tri par intitule de group (ex: 1GEA, TGEA...) 90 * @Parametres $uids - Tableau d'uids d'utilisateurs 91 * @Parametres $filter - Filtre de recherche 92 93 * @Return Retourne un tableau des utilisateurs repondant au filtre de recherche 94 */ 95 96 // Fonction modifeie pour recueprer aussi le mail 97 98 global $ldap_server, $ldap_port, $dn; 99 global $error; 100 $error=""; 101 102 // LDAP attributs 103 $ldap_user_attr = array( 104 "cn", // Nom complet 105 "sn", // Nom 106 "gecos", // Nom prenom (cn sans accents), Date de naissance,Sexe (F/M),Status administrateur LCS (Y/N) 107 "sexe", 108 "mail" 109 ); 110 111 if (!$filter) $filter="(sn=*)"; 112 $ds = @ldap_connect ( $ldap_server, $ldap_port ); 113 if ( $ds ) { 114 $r = @ldap_bind ( $ds ); // Bind anonyme 115 if ($r) { 116 $loop1=0; 117 for ($loop=0; $loop < count($uids); $loop++) { 118 119 //foreach($uids[$loop] as $key => $value){ 120 // echo "\$uids[$loop][$key]=".$uids[$loop][$key]."<br />\n"; 121 //} 122 /* 123 // On recupere des: 124 $uids[0][prof]=0 125 $uids[0][uid]=chabotf 126 $uids[0][group]=3_B2 127 $uids[0][cat]=Classe 128 */ 129 130 $result = @ldap_read ( $ds, "uid=".$uids[$loop]["uid"].",".$dn["people"], $filter, $ldap_user_attr ); 131 if ($result) { 132 $info = @ldap_get_entries ( $ds, $result ); 133 if ( $info["count"]) { 134 135 // Ajout pour récupérer le mail: 136 $attribut_tmp=array("mail"); 137 $tabtmp=get_tab_attribut("people", "uid=".$uids[$loop]["uid"], $attribut_tmp); 138 $uids[$loop]["mail"]=$tabtmp[0]; 139 140 // traitement du gecos pour identification du sexe 141 $gecos = $info[0]["gecos"][0]; 142 $tmp = preg_split ("/[\,]/",$gecos,4); 143 #echo "debug ".$info["count"]." init ".$init." loop ".$loop."<BR>"; 144 $ret[$loop1] = array ( 145 "uid" => $uids[$loop]["uid"], 146 "fullname" => utf8_decode($info[0]["cn"][0]), 147 "name" => utf8_decode($info[0]["sn"][0]), 148 "sexe" => $tmp[2], 149 "owner" => $uids[$loop]["owner"], 150 "group" => $uids[$loop]["group"], 151 "cat" => $uids[$loop]["cat"], 152 "gecos" => $gecos, 153 "prof" => $uids[$loop]["prof"], 154 "mail" => $uids[$loop]["mail"] 155 ); 156 157 /* 158 foreach($ret[$loop1] as $key => $value){ 159 echo "\$ret[$loop1][$key]=".$ret[$loop1][$key]."<br />\n"; 160 } 161 */ 162 163 $loop1++; 164 } 165 166 @ldap_free_result ( $result ); 167 } 168 } 169 } else { 170 $error = gettext("Echec du bind anonyme"); 171 } 172 173 @ldap_close ( $ds ); 174 } else $error = gettext("Erreur de connection au serveur LDAP"); 175 176 177 if (count($ret)) { 178 # Correction tri du tableau 179 # Tri par critere categorie ou intitule de groupe 180 if ( $order == "cat" ) usort ($ret, "cmp_cat"); 181 elseif ( $order == "group" ) usort ($ret, "cmp_group"); 182 # Recherche du nombre de catgories ou d'intitules de groupe 183 $i = 0; 184 for ( $loop=0; $loop < count($ret); $loop++) { 185 if ( $ret[$loop][$order] != $ret[$loop-1][$order]) { 186 $tab_order[$i] = $ret[$loop][$order]; 187 $i++; 188 } 189 } 190 191 if (count($tab_order) > 0 ) { 192 # On decoupe le tableau $ret en autant de sous tableaux $tmp que de criteres $order 193 for ($i=0; $i < count($tab_order); $i++) { 194 $j=0; 195 for ( $loop=0; $loop < count($ret); $loop++) { 196 if ( $ret[$loop][$order] == $tab_order[$i] ) { 197 $ret_tmp[$i][$j] = $ret[$loop]; 198 $j++; 199 } 200 } 201 } 202 203 # Tri alpabetique des sous tableaux 204 for ( $loop=0; $loop < count($ret_tmp); $loop++) usort ($ret_tmp[$loop], "cmp_name"); 205 206 # Reassemblage des tableaux temporaires 207 $ret_final = array(); 208 for ($loop=0; $loop < count($tab_order); $loop++) $ret_final = array_merge ($ret_final, $ret_tmp[$loop]); 209 return $ret_final; 210 } else { 211 usort ($ret, "cmp_name"); 212 return $ret; 213 } 214 } 215 } 216 //============================================== 217 218 219 $group=search_groups ("(cn=".$filter.")"); 220 $uids = search_uids ("(cn=".$filter.")"); 221 //$people = search_people_groups ($uids,"(sn=*)","cat"); 222 $people = search_people_groups2 ($uids,"(sn=*)","cat"); 223 #$TimeStamp_1=microtime(); 224 ############# 225 # DEBUG # 226 ############# 227 #echo "<u>debug</u> :Temps de recherche = ".duree($TimeStamp_0,$TimeStamp_1)." s<BR><BR>"; 228 ############# 229 # Fin DEBUG # 230 ############# 231 if (count($people)) { 232 233 //$nom_fic = "nom_du_groupe.csv"; 234 $nom_fic = "$filter.csv"; 235 $now = gmdate('D, d M Y H:i:s') . ' GMT'; 236 header('Content-Type: text/x-csv'); 237 header('Expires: ' . $now); 238 // lem9 & loic1: IE need specific headers 239 if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT'])) { 240 header('Content-Disposition: inline; filename="' . $nom_fic . '"'); 241 header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 242 header('Pragma: public'); 243 } else { 244 header('Content-Disposition: attachment; filename="' . $nom_fic . '"'); 245 header('Pragma: no-cache'); 246 } 247 248 //$contenu_fichier=''; 249 $contenu_fichier="Login;Nom complet;Nom;Prenom;Naissance;Sexe;Email\n"; 250 251 for ($loop=0; $loop < count($people); $loop++) { 252 preg_match("/([0-9]{8})/",$people[$loop]["gecos"],$naiss); 253 $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"; 254 } 255 echo $contenu_fichier; 256 } else { 257 include "entete.inc.php"; 258 echo " <STRONG>".gettext("Pas de membres")." </STRONG> ".gettext(" dans le groupe")." $filter.<BR>"; 259 include ("pdp.inc.php"); 260 } 261 } 262 } 263 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |