[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/annu/ -> grouplist_csv.php (source)

   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&#232;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&#233;cup&#233;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)."&nbsp;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  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1