[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/scripts/ -> import_comptes.php (source)

   1  #!/usr/bin/php
   2  
   3  <?php
   4      /* $Id$ */
   5      /*
   6          Page d'import des comptes depuis les fichiers CSV/XML de Sconet
   7          Auteur: Stéphane Boireau (ex-Animateur de Secteur pour les TICE sur Bernay/Pont-Audemer (27))
   8          Portage LCS : jean-Luc Chrétien jean-luc.chretien@tice;accaen.fr
   9          Dernière modification: 03/12/2011
  10          modifs Christian Westphal 17/03/2013 christian.westphal@ac-strasbourg.fr
  11      */
  12  
  13      include  "se3orlcs_import_comptes.php";
  14  
  15      // $debug_import_comptes peut être initialisée dans se3orlcs_import_comptes.php
  16      //$debug_import_comptes="y";
  17  
  18      // Choix de destination des my_echo():
  19      $dest_mode="file";
  20      // On va écrire dans le fichier $echo_file et non dans la page courante... ce qui serait problématique depuis que cette page PHP n'est plus visitée depuis un navigateur.
  21  
  22      // Date et heure...
  23      $aujourdhui2 = getdate();
  24      $annee_aujourdhui2 = $aujourdhui2['year'];
  25      $mois_aujourdhui2 = sprintf("%02d",$aujourdhui2['mon']);
  26      $jour_aujourdhui2 = sprintf("%02d",$aujourdhui2['mday']);
  27      $heure_aujourdhui2 = sprintf("%02d",$aujourdhui2['hours']);
  28      $minute_aujourdhui2 = sprintf("%02d",$aujourdhui2['minutes']);
  29      $seconde_aujourdhui2 = sprintf("%02d",$aujourdhui2['seconds']);
  30  
  31      $debut_import="$jour_aujourdhui2/$mois_aujourdhui2/$annee_aujourdhui2 à $heure_aujourdhui2:$minute_aujourdhui2:$seconde_aujourdhui2";
  32  
  33  /*
  34      $fich=fopen("/tmp/rapport_test.txt","a+");
  35      fwrite($fich,"Le $jour_aujourdhui2/$mois_aujourdhui2/$annee_aujourdhui2 à $heure_aujourdhui2:$minute_aujourdhui2:$seconde_aujourdhui2\n");
  36      fwrite($fich,"\$type_fichier_eleves=$type_fichier_eleves\n");
  37      fwrite($fich,"\$eleves_file=$eleves_file\n");
  38      fwrite($fich,"\$sts_xml_file=$sts_xml_file\n");
  39      fwrite($fich,"\$prefix=$prefix\n");
  40      fwrite($fich,"\$annuelle=$annuelle\n");
  41      fwrite($fich,"\$simulation=$simulation\n");
  42      fwrite($fich,"\$timestamp=$timestamp\n");
  43      fwrite($fich,"\$randval=$randval\n");
  44      fwrite($fich,"\$temoin_creation_fichiers=$temoin_creation_fichiers\n");
  45      fwrite($fich,"===============================\n");
  46      fclose($fich);
  47  */
  48      //exit();
  49  
  50      //my_echo("<p style='background-color:red;'>\$servertype=$servertype</p>");
  51      //my_echo("<p style='background-color:red;'>\$debug_import_comptes=$debug_import_comptes</p>");
  52  
  53      // Récupération du type des groupes Equipe_* et Matiere_*
  54      $sql="SELECT value FROM params WHERE name='type_Equipe_Matiere'";
  55      $res1=mysql_query($sql);
  56      if(mysql_num_rows($res1)==0) {
  57          $type_Equipe_Matiere="groupOfNames";
  58      }
  59      else{
  60          $lig_type=mysql_fetch_object($res1);
  61          $type_Equipe_Matiere=$lig_type->value;
  62          if(($type_Equipe_Matiere!="groupOfNames")&&($type_Equipe_Matiere!="posixGroup")) {
  63              $type_Equipe_Matiere="groupOfNames";
  64          }
  65      }
  66  
  67      // Pour ne pas faire de betises en cours d'annee scolaire et se retrouver avec un nom de classe qui change en cours d'annee parce qu'on se serait mis a virer les accents dans les noms de classes:
  68      $sql="SELECT value FROM params WHERE name='clean_caract_classe';";
  69      $res_clean=mysql_query($sql);
  70      if(mysql_num_rows($res_clean)==0) {
  71          // On ne passera a 'y' que lors d'un import annuel.
  72          $clean_caract_classe="n";
  73      }
  74      else {
  75          $lig_clean=mysql_fetch_object($res_clean);
  76          $clean_caract_classe=$lig_clean->value;
  77      }
  78  
  79      $nouveaux_comptes=0;
  80      $comptes_avec_employeeNumber_mis_a_jour=0;
  81      $nb_echecs=0;
  82  
  83      $tab_nouveaux_comptes=array();
  84      $tab_comptes_avec_employeeNumber_mis_a_jour=array();
  85  
  86      // listing pour l'impression des comptes
  87      $listing = array(array());  // une ligne par compte ; le deuxième parametre est, dans l'ordre nom, prenom, classe (ou 'prof'), uid, password
  88  
  89      if(file_exists($pathscripts."/creation_branche_Trash.sh")) {
  90          exec("/bin/bash ".$pathscripts."/creation_branche_Trash.sh > /dev/null",$retour);
  91      }
  92  
  93      //my_echo("\$creer_equipes_vides=$creer_equipes_vides<br />");
  94  
  95      my_echo("<div id='div_signalements' style='display:none; color:red;'><strong>Signalements</strong><br /></div>\n");
  96  
  97      my_echo("<a name='menu'></a>");
  98      my_echo("<h3>Menu</h3>");
  99      my_echo("<blockquote>\n");
 100      my_echo("<p>Aller à la section</p>\n");
 101      my_echo("<table border='0'>\n");
 102      my_echo("<tr>\n");
 103      my_echo("<td>- </td>\n");
 104      my_echo("<td>création des comptes professeurs: </td><td><span id='id_creer_profs' style='display:none;'><a href='#creer_profs'>Clic</a></span></td>\n");
 105      my_echo("</tr>\n");
 106      my_echo("<tr>\n");
 107      my_echo("<td>- </td>\n");
 108      my_echo("<td>création des comptes élèves: </td><td><span id='id_creer_eleves' style='display:none;'><a href='#creer_eleves'>Clic</a></span></td>\n");
 109      my_echo("</tr>\n");
 110      if($simulation!="y") {
 111          my_echo("<tr>\n");
 112          my_echo("<td>- </td>\n");
 113          my_echo("<td>création des classes et des équipes: </td><td><span id='id_creer_classes' style='display:none;'><a href='#creer_classes'>Clic</a></span></td>\n");
 114          my_echo("</tr>\n");
 115          my_echo("<tr>\n");
 116          my_echo("<td>- </td>\n");
 117          // ===========================================================
 118          // AJOUTS: 20070914 boireaus
 119          if($creer_matieres=='y') {
 120              my_echo("<td>création des matières: </td><td><span id='id_creer_matieres' style='display:none;'><a href='#creer_matieres'>Clic</a></span></td>\n");
 121          }
 122          else{
 123              my_echo("<td>création des matières: </td><td><span id='id_creer_matieres' style='color:red;'>non demandée</span></td>\n");
 124          }
 125          // ===========================================================
 126          my_echo("</tr>\n");
 127          my_echo("<tr>\n");
 128          my_echo("<td>- </td>\n");
 129  
 130          // ===========================================================
 131          // AJOUTS: 20070914 boireaus
 132          if($creer_cours=='y') {
 133              my_echo("<td>création des cours: </td><td><span id='id_creer_cours' style='display:none;'><a href='#creer_cours'>Clic</a></span></td>\n");
 134          }
 135          else{
 136              my_echo("<td>création des cours: </td><td><span id='id_creer_cours' style='color:red;'>non demandée</span></td>\n");
 137          }
 138          // ===========================================================
 139          my_echo("</tr>\n");
 140      }
 141      my_echo("<tr>\n");
 142      my_echo("<td>- </td>\n");
 143      my_echo("<td>compte rendu final de ");
 144      if($simulation=="y") {my_echo("simulation");} else {my_echo("création");}
 145      my_echo(": </td><td><span id='id_fin' style='display:none;'><a href='#fin'>Clic</a></span></td>\n");
 146      my_echo("</tr>\n");
 147      my_echo("</table>\n");
 148      my_echo("</blockquote>\n");
 149  
 150      //exit;
 151  
 152      if($temoin_creation_fichiers=="oui") {
 153          my_echo("<h3>Fichiers CSV</h3>");
 154          my_echo("<blockquote>\n");
 155          my_echo("<p>Récupérer le fichier:</p>\n");
 156          my_echo("<table border='0'>\n");
 157          my_echo("<tr>\n");
 158          my_echo("<td>- </td>\n");
 159          //my_echo("<td>F_ele.txt: </td><td><span id='id_f_ele_txt' style='display:none;'><a href='$dossiercsv/f_ele.txt' target='_blank'>Clic</a></span></td>\n");
 160          my_echo("<td>F_ele.txt: </td><td><span id='id_f_ele_txt' style='display:none;'><a href='/$chemin_http_csv/f_ele.txt' target='_blank'>Clic</a></span></td>\n");
 161          my_echo("</tr>\n");
 162          my_echo("<tr>\n");
 163          my_echo("<td>- </td>\n");
 164          //my_echo("<td>F_div.txt: </td><td><span id='id_f_div_txt' style='display:none;'><a href='$dossiercsv/f_div.txt' target='_blank'>Clic</a></span></td>\n");
 165          my_echo("<td>F_div.txt: </td><td><span id='id_f_div_txt' style='display:none;'><a href='/$chemin_http_csv/f_div.txt' target='_blank'>Clic</a></span></td>\n");
 166          my_echo("</tr>\n");
 167          my_echo("<tr>\n");
 168          my_echo("<td>- </td>\n");
 169          //my_echo("<td>F_men.txt: </td><td><span id='id_f_men_txt' style='display:none;'><a href='$dossiercsv/f_men.txt' target='_blank'>Clic</a></span></td>\n");
 170          my_echo("<td>F_men.txt: </td><td><span id='id_f_men_txt' style='display:none;'><a href='/$chemin_http_csv/f_men.txt' target='_blank'>Clic</a></span></td>\n");
 171          my_echo("</tr>\n");
 172          my_echo("<tr>\n");
 173          my_echo("<td>- </td>\n");
 174          //my_echo("<td>F_wind.txt: </td><td><span id='id_f_wind_txt' style='display:none;'><a href='$dossiercsv/f_wind.txt' target='_blank'>Clic</a></span></td>\n");
 175          my_echo("<td>F_wind.txt: </td><td><span id='id_f_wind_txt' style='display:none;'><a href='/$chemin_http_csv/f_wind.txt' target='_blank'>Clic</a></span></td>\n");
 176          my_echo("</tr>\n");
 177          my_echo("</table>\n");
 178          //my_echo("<p>Supprimer les fichiers générés: <span id='id_suppr_txt' style='display:none;'><a href='".$_SERVER['PHP_SELF']."?nettoyage=oui&amp;dossier=".$timestamp."_".$randval."' target='_blank'>Clic</a></span></p>\n");
 179          my_echo("<p>Supprimer les fichiers générés: <span id='id_suppr_txt' style='display:none;'><a href='$www_import?nettoyage=oui&amp;dossier=".$timestamp."_".$randval."' target='_blank'>Clic</a></span></p>\n");
 180          my_echo("</blockquote>\n");
 181      }
 182  
 183      // Nom du groupe professeurs principaux
 184      $nom_groupe_pp="Groupe_".$prefix."Professeurs_Principaux";
 185  
 186      // Vérification de l'existence de la branche Trash:
 187      test_creation_trash();
 188  
 189      $tab_no_Trash_prof=array();
 190      $tab_no_Trash_eleve=array();
 191  
 192      // Suppression des anciens groupes si l'importation est annuelle:
 193      //if(isset($_POST['annuelle'])) {
 194      if($annuelle=="y") {
 195  
 196          //ldap_get_right("no_Trash_user",$login)=="Y"
 197          $tmp_tab_no_Trash_user=gof_members("no_Trash_user","rights",1);
 198          if(count($tmp_tab_no_Trash_user)>0) {
 199              $attribut=array("cn");
 200              $cpt_trash_ele=0;
 201              $cpt_trash_prof=0;
 202  
 203              my_echo("<p>Quelques comptes doivent être préservés de la Corbeille (<i>dispositif no_Trash_user</i>)&nbsp;:<br />\n");
 204  
 205              for($loop=0;$loop<count($tmp_tab_no_Trash_user);$loop++) {
 206                  //my_echo("\$tmp_tab_no_Trash_user[$loop]=$tmp_tab_no_Trash_user[$loop]<br />");
 207                  if($loop>0) {my_echo(", ");}
 208                  my_echo("$tmp_tab_no_Trash_user[$loop]");
 209                  $tabtmp=get_tab_attribut("groups", "(&(cn=Profs)(memberuid=$tmp_tab_no_Trash_user[$loop]))", $attribut);
 210                  if(count($tabtmp)>0) {
 211                      my_echo("(<i>prof</i>)");
 212                      $tab_no_Trash_prof[$cpt_trash_prof]=$tmp_tab_no_Trash_user[$loop];
 213                      $cpt_trash_prof++;
 214                  }
 215                  else {
 216                      $tabtmp=get_tab_attribut("groups", "(&(cn=Eleves)(memberuid=$tmp_tab_no_Trash_user[$loop]))", $attribut);
 217                      if(count($tabtmp)>0) {
 218                          my_echo("(<i>élève</i>)");
 219                          $tab_no_Trash_eleve[$cpt_trash_ele]=$tmp_tab_no_Trash_user[$loop];
 220                          $cpt_trash_ele++;
 221                      }
 222                  }
 223              }
 224          }
 225  
 226          for($loop=0;$loop<count($tab_no_Trash_prof);$loop++) {
 227              my_echo("\$tab_no_Trash_prof[$loop]=$tab_no_Trash_prof[$loop]<br />");
 228          }
 229  
 230          for($loop=0;$loop<count($tab_no_Trash_eleve);$loop++) {
 231              my_echo("\$tab_no_Trash_eleve[$loop]=$tab_no_Trash_eleve[$loop]<br />");
 232          }
 233  
 234          if($simulation!="y") {
 235              // A FAIRE...
 236              //if(del_entry ($entree, $branche)) {}else{}
 237              my_echo("<h3>Importation annuelle");
 238              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 239              my_echo("</h3>\n");
 240              my_echo("<blockquote>\n");
 241  
 242  
 243              // ==========================================================
 244              // On profite d'une mise a jour annuelle pour passer en mode sans accents sur les caractères dans les noms de classes (pour eviter des blagues dans la creation de dossiers de classes,...)
 245              $sql="DELETE FROM params WHERE name='clean_caract_classe';";
 246              $res_clean=mysql_query($sql);
 247              $sql="INSERT INTO params SET name='clean_caract_classe', value='y';";
 248              $res_clean=mysql_query($sql);
 249              $clean_caract_classe="y";
 250              // ==========================================================
 251  
 252              if(file_exists($sts_xml_file)) {
 253                  unset($attribut);
 254                  $attribut=array("memberuid");
 255                  $tab=get_tab_attribut("groups","cn=Profs",$attribut);
 256                  if(count($tab)>0) {
 257                      my_echo("<p>On vide le groupe Profs.<br />\n");
 258  
 259                      my_echo("Suppression de l'appartenance au groupe de: \n");
 260                      for($i=0;$i<count($tab);$i++) {
 261                          if($i==0) {
 262                              $sep="";
 263                          }
 264                          else{
 265                              $sep=", ";
 266                          }
 267                          my_echo($sep);
 268  
 269                          unset($attr);
 270                          $attr=array();
 271                          $attr["memberuid"]=$tab[$i];
 272                          if(modify_attribut("cn=Profs","groups",$attr, "del")) {
 273                              my_echo($tab[$i]);
 274                          }
 275                          else{
 276                              my_echo("<font color='red'>".$tab[$i]."</font>");
 277                          }
 278                      }
 279                      my_echo("</p>\n");
 280                  }
 281                  else{
 282                      my_echo("<p>Le groupe Profs est déjà vide.</p>\n");
 283                  }
 284                  if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 285              }
 286  
 287              if(file_exists($eleves_file)) {
 288                  unset($attribut);
 289                  $attribut=array("memberuid");
 290                  $tab=get_tab_attribut("groups","cn=Eleves",$attribut);
 291                  if(count($tab)>0) {
 292                      my_echo("<p>On vide le groupe Eleves.<br />\n");
 293  
 294                      my_echo("Suppression de l'appartenance au groupe de: \n");
 295                      for($i=0;$i<count($tab);$i++) {
 296                          if($i==0) {
 297                              $sep="";
 298                          }
 299                          else{
 300                              $sep=", ";
 301                          }
 302                          my_echo($sep);
 303  
 304                          unset($attr);
 305                          $attr=array();
 306                          $attr["memberuid"]=$tab[$i];
 307                          if(modify_attribut("cn=Eleves","groups",$attr, "del")) {
 308                              my_echo($tab[$i]);
 309                          }
 310                          else{
 311                              my_echo("<font color='red'>".$tab[$i]."</font>");
 312                          }
 313                      }
 314                      my_echo("</p>\n");
 315                  }
 316                  else{
 317                      my_echo("<p>Le groupe Eleves est déjà vide.</p>\n");
 318                  }
 319                  if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 320              }
 321  
 322              my_echo("<p>Suppression des groupes Classes, Equipes, Cours et Matieres.</p>\n");
 323  
 324              // Recherche des classes,...
 325              unset($attribut);
 326              $attribut=array("cn");
 327              $tab=get_tab_attribut("groups","(|(cn=Classe_*)(cn=Equipe_*)(cn=Cours_*)(cn=Matiere_*))",$attribut);
 328              if(count($tab)>0) {
 329                  my_echo("<table border='0'>\n");
 330                  for($i=0;$i<count($tab);$i++) {
 331                      my_echo("<tr>");
 332                      my_echo("<td>");
 333                      my_echo("Suppression de $tab[$i]: ");
 334                      my_echo("</td>");
 335                      my_echo("<td>");
 336                      if(del_entry("cn=$tab[$i]", "groups")) {
 337                          my_echo("<font color='green'>SUCCES</font>");
 338                      }
 339                      else{
 340                          my_echo("<font color='red'>ECHEC</font>");
 341                      }
 342                      //my_echo("<br />\n");
 343                      my_echo("</td>");
 344                      my_echo("</tr>");
 345                  }
 346                  //my_echo("</p>\n");
 347                  my_echo("</table>\n");
 348              }
 349  
 350  
 351              // Groupe Professeurs_Principaux
 352              $attribut=array("cn");
 353              $tabtmp=get_tab_attribut("groups", "cn=$nom_groupe_pp", $attribut);
 354              if(count($tabtmp)>0) {
 355                  unset($attribut);
 356                  $attribut=array("memberuid");
 357                  $tab_mem_pp=get_tab_attribut("groups","cn=$nom_groupe_pp",$attribut);
 358                  if(count($tab_mem_pp)>0) {
 359                      my_echo("<p>On vide le groupe $nom_groupe_pp<br />\n");
 360          
 361                      my_echo("Suppression de l'appartenance au groupe de: \n");
 362                      for($i=0;$i<count($tab_mem_pp);$i++) {
 363                          if($i==0) {
 364                              $sep="";
 365                          }
 366                          else{
 367                              $sep=", ";
 368                          }
 369                          my_echo($sep);
 370          
 371                          unset($attr);
 372                          $attr=array();
 373                          $attr["memberuid"]=$tab_mem_pp[$i];
 374                          if(modify_attribut("cn=$nom_groupe_pp","groups",$attr, "del")) {
 375                              my_echo($tab_mem_pp[$i]);
 376                          }
 377                          else{
 378                              my_echo("<font color='red'>".$tab_mem_pp[$i]."</font>");
 379                          }
 380                      }
 381                      my_echo("</p>\n");
 382                  }
 383                  else {
 384                      my_echo("<p>Le groupe $nom_groupe_pp est vide.</p>\n");
 385                  }
 386              }
 387  
 388  
 389              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 390              my_echo("</blockquote>\n");
 391              //exit();
 392          }
 393          else {
 394              my_echo("<h3>Importation annuelle");
 395              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 396              my_echo("</h3>\n");
 397              my_echo("<blockquote>\n");
 398              my_echo("<p><b>Simulation</b> de la suppression des groupes Classes, Equipes, Cours et Matieres.</p>\n");
 399              my_echo("<p>Les groupes suivants seraient supprimés: ");
 400              // Recherche des classes,...
 401              unset($attribut);
 402              $attribut=array("cn");
 403              $tab=get_tab_attribut("groups","(|(cn=Classe_*)(cn=Equipe_*)(cn=Cours_*)(cn=Matiere_*))",$attribut);
 404              if(count($tab)>0) {
 405                  my_echo("$tab[0]");
 406                  for($i=1;$i<count($tab);$i++) {
 407                      my_echo(", $tab[$i]");
 408                  }
 409              }
 410              else{
 411                      my_echo("AUCUN GROUPE TROUVÉ");
 412              }
 413              my_echo("</p>");
 414              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 415          }
 416  
 417  
 418          if($servertype!="LCS") {
 419              // Vider les fonds d'écran pour que les élèves ne restent pas avec les noms de classes de l'année précédente
 420              my_echo("<p>On vide les fonds d'écran pour que les élèves ne restent pas avec les noms de classes de l'année précédente.</p>\n");
 421              exec("/usr/bin/sudo $pathscripts/genere_fond.sh variable_bidon supprimer");
 422              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 423          }
 424      }
 425  
 426      //exit;
 427  
 428      // 20130115
 429      // Initialisation:
 430      $uaj="";
 431      $uaj_tronque="";
 432      $tab_eleve_autre_etab=array();
 433  
 434  
 435      // Partie ELEVES:
 436      //$type_fichier_eleves=isset($_POST['type_fichier_eleves']) ? $_POST['type_fichier_eleves'] : "csv";
 437      if($type_fichier_eleves=="csv") {
 438          //$eleves_csv_file = isset($_FILES["eleves_csv_file"]) ? $_FILES["eleves_csv_file"] : NULL;
 439  
 440          //$eleves_csv_file = isset($_FILES["eleves_file"]) ? $_FILES["eleves_file"] : NULL;
 441          //$fp=fopen($eleves_csv_file['tmp_name'],"r");
 442  
 443          $fp=fopen($eleves_file,"r");
 444          if($fp) {
 445              //my_echo("<h2>Section élèves</h2>\n");
 446              //my_echo("<h3>Section élèves</h3>\n");
 447              my_echo("<h3>Section élèves");
 448              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 449              my_echo("</h3>\n");
 450              my_echo("<blockquote>\n");
 451              //my_echo("<h3>Lecture du fichier...</h3>\n");
 452              my_echo("<h4>Lecture du fichier élèves...</h4>\n");
 453              my_echo("<blockquote>\n");
 454              unset($ligne);
 455              $ligne=array();
 456              while(!feof($fp)) {
 457                  //$ligne[]=fgets($fp,4096);
 458                  // Suppression des guillemets s'il jamais il y en a dans le CSV
 459                  //$ligne[]=ereg_replace('"','',fgets($fp,4096));
 460                  $ligne[]=preg_replace('/"/','',fgets($fp,4096));
 461              }
 462              fclose($fp);
 463  
 464              my_echo("<p>Terminé.</p>\n");
 465              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 466              my_echo("</blockquote>\n");
 467  
 468  
 469  
 470  
 471              // Contrôle du contenu du fichier:
 472              if(stristr($ligne[0],"<?xml ")) {
 473                  my_echo("<p style='color:red;'>ERREUR: Le fichier élèves fourni a l'air d'être de type XML et non CSV.</p>\n");
 474                  my_echo("<script type='text/javascript'>
 475      compte_a_rebours='n';
 476  </script>\n");
 477                  my_echo("<div style='position:absolute; top: 50px; left: 300px; width: 400px; border: 1px solid black; background-color: red;'><div align='center'>ERREUR: Le fichier élèves fourni a l'air d'être de type XML et non CSV.</div></div>");
 478                  my_echo("</body>\n</html>\n");
 479  
 480                  // Renseignement du témoin de mise à jour terminée.
 481                  $sql="SELECT value FROM params WHERE name='imprt_cmpts_en_cours'";
 482                  $res1=mysql_query($sql);
 483                  if(mysql_num_rows($res1)==0) {
 484                      $sql="INSERT INTO params SET name='imprt_cmpts_en_cours',value='n'";
 485                      $res0=mysql_query($sql);
 486                  }
 487                  else{
 488                      $sql="UPDATE params SET value='n' WHERE name='imprt_cmpts_en_cours'";
 489                      $res0=mysql_query($sql);
 490                  }
 491  
 492                  exit();
 493              }
 494  
 495  
 496  
 497              //my_echo("<h3>Affichage...</h3>\n");
 498              //my_echo("<h4>Affichage...</h4>\n");
 499              my_echo("<h4>Affichage...");
 500              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 501              my_echo("</h4>\n");
 502              my_echo("<blockquote>\n");
 503              my_echo("<p>Les lignes qui suivent sont le contenu du fichier fourni.<br />Ces lignes ne sont là qu'à des fins de débuggage.<p>\n");
 504              my_echo("<table border='0'>\n");
 505              $cpt=0;
 506              while($cpt<count($ligne)) {
 507                  my_echo("<tr valign='top'>\n");
 508                  my_echo("<td style='color: blue;'>$cpt</td><td>".htmlentities($ligne[$cpt])."</td>\n");
 509                  my_echo("</tr>\n");
 510                  $cpt++;
 511              }
 512              my_echo("</table>\n");
 513              my_echo("<p>Terminé.</p>\n");
 514              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 515              my_echo("</blockquote>\n");
 516              my_echo("</blockquote>\n");
 517  
 518              my_echo("<a name='analyse'></a>\n");
 519              //my_echo("<h2>Analyse</h2>\n");
 520              //my_echo("<h3>Analyse</h3>\n");
 521              my_echo("<h3>Analyse");
 522              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 523              my_echo("</h3>\n");
 524              my_echo("<blockquote>\n");
 525              //my_echo("<h3>Repérage des champs</h3>\n");
 526              //my_echo("<h4>Repérage des champs</h4>\n");
 527              my_echo("<h4>Repérage des champs");
 528              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 529              my_echo("</h4>\n");
 530              my_echo("<blockquote>\n");
 531  
 532              $champ=array("Nom",
 533              "Prénom 1",
 534              "Date de naissance",
 535              "N° Interne",
 536              "Sexe",
 537              "Division");
 538              // Analyse:
 539              // Repérage des champs souhaités:
 540              //$tabtmp=explode(";",$ligne[0]);
 541              $tabtmp=explode(";",trim($ligne[0]));
 542              for($j=0;$j<count($champ);$j++) {
 543                  $index[$j]="-1";
 544                  for($i=0;$i<count($tabtmp);$i++) {
 545                      if($tabtmp[$i]==$champ[$j]) {
 546                          my_echo("Champ '<font color='blue'>$champ[$j]</font>' repéré en colonne/position <font color='blue'>$i</font><br />\n");
 547                          $index[$j]=$i;
 548                      }
 549                  }
 550                  if($index[$j]=="-1") {
 551                      my_echo("<p><font color='red'>ERREUR: Le champ '<font color='blue'>$champ[$j]</font>' n'a pas été trouvé.</font></p>\n");
 552                      my_echo("</blockquote>");
 553                      //my_echo("<p><a href='".$_SERVER['PHP_SELF']."'>Retour</a>.</p>\n");
 554                      my_echo("<p><a href='$www_import'>Retour</a>.</p>\n");
 555                      my_echo("<script type='text/javascript'>
 556      compte_a_rebours='n';
 557  </script>\n");
 558                      my_echo("</blockquote></div></body></html>");
 559                      exit();
 560                  }
 561              }
 562              my_echo("<p>Terminé.</p>\n");
 563              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 564              my_echo("</blockquote>\n");
 565  
 566              //my_echo("<h3>Remplissage des tableaux pour SambaEdu3</h3>\n");
 567              my_echo("<h3>Remplissage des tableaux");
 568              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 569              my_echo("</h3>\n");
 570              my_echo("<blockquote>\n");
 571              $cpt=1;
 572              $tabnumero=array();
 573              $eleve=array();
 574              $temoin_format_num_interne="";
 575              while($cpt<count($ligne)) {
 576                  if($ligne[$cpt]!="") {
 577                      //$tabtmp=explode(";",$ligne[$cpt]);
 578                      $tabtmp=explode(";",trim($ligne[$cpt]));
 579  
 580                      // Si la division/classe n'est pas vide
 581                      if(isset($tabtmp[$index[5]])) {
 582                          if($tabtmp[$index[5]]!="") {
 583                              if(strlen($tabtmp[$index[3]])==11) {
 584                                  $numero=substr($tabtmp[$index[3]],0,strlen($tabtmp[$index[3]])-6);
 585                              }
 586                              else{
 587                                  $temoin_format_num_interne="non_standard";
 588                                  if(strlen($tabtmp[$index[3]])==4) {
 589                                      $numero="0".$tabtmp[$index[3]];
 590                                  }
 591                                  else{
 592                                      $numero=$tabtmp[$index[3]];
 593                                  }
 594                              }
 595  
 596                              $temoin=0;
 597                              for($i=0;$i<count($tabnumero);$i++) {
 598                                  if($tabnumero[$i]==$numero) {
 599                                      $temoin=1;
 600                                  }
 601                              }
 602                              if($temoin==0) {
 603                                  $tabnumero[]=$numero;
 604                                  $eleve[$numero]=array();
 605                                  $eleve[$numero]["numero"]=$numero;
 606  
 607                                  $eleve[$numero]["nom"]=preg_replace("/[^A-Za-zÆæ¼½".$liste_caracteres_accentues."_ -]/", "", $tabtmp[$index[0]]);
 608                                  $eleve[$numero]["prenom"]=preg_replace("/[^A-Za-zÆæ¼½".$liste_caracteres_accentues."_ -]/", "", $tabtmp[$index[1]]);
 609  
 610                                  // =============================================
 611                                  // On ne retient que le premier prénom: 20071101
 612                                  $tab_tmp_prenom=explode(" ",$eleve[$numero]["prenom"]);
 613                                  $eleve[$numero]["prenom"]=$tab_tmp_prenom[0];
 614                                  // =============================================
 615  
 616                                  unset($tmpdate);
 617                                  $tmpdate=explode("/",$tabtmp[$index[2]]);
 618                                  $eleve[$numero]["date"]=$tmpdate[2].$tmpdate[1].$tmpdate[0];
 619                                  $eleve[$numero]["sexe"]=$tabtmp[$index[4]];
 620  
 621                                  $eleve[$numero]["division"]=strtr(trim($tabtmp[$index[5]]),"/","_");
 622                                  if($clean_caract_classe=="y") {
 623                                      $eleve[$numero]["division"]=preg_replace("/[^a-zA-Z0-9_ -]/", "",remplace_accents($eleve[$numero]["division"]));
 624                                  }
 625                              }
 626                          }
 627                      }
 628                  }
 629                  $cpt++;
 630              }
 631              my_echo("<p>Terminé.</p>\n");
 632              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 633              my_echo("</blockquote>\n");
 634              // A CE STADE, LE TABLEAU $eleves N'EST REMPLI QUE POUR DES DIVISIONS NON VIDES (seuls les élèves affecté dans des classes sont retenus).
 635  
 636  
 637              my_echo("<a name='csv_eleves'></a>\n");
 638              my_echo("<h4>Affichage d'un CSV des élèves");
 639              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 640              my_echo("</h4>\n");
 641              my_echo("<blockquote>\n");
 642              if($temoin_format_num_interne!="") {
 643                  my_echo("<p style='color:red;'>ATTENTION: Le format des numéros internes des élèves n'a pas l'air standard.<br />Un préfixe 0 a dû être ajouté pour corriger.<br />Veillez à contrôler que vos numéros internes ont bien été analysés malgré tout.</p>\n");
 644              }
 645              //my_echo("");
 646              //if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/se3/f_ele.txt","w+");}
 647              if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/f_ele.txt","w+");}else{$fich=FALSE;}
 648              $tab_classe=array();
 649              $cpt_classe=-1;
 650              for($k=0;$k<count($tabnumero);$k++) {
 651                  $temoin_erreur_eleve="n";
 652  
 653                  $numero=$tabnumero[$k];
 654                  $chaine="";
 655                  $chaine.=$eleve[$numero]["numero"];
 656                  $chaine.="|";
 657                  $chaine.=remplace_accents($eleve[$numero]["nom"]);
 658                  $chaine.="|";
 659                  $chaine.=remplace_accents($eleve[$numero]["prenom"]);
 660                  $chaine.="|";
 661                  $chaine.=$eleve[$numero]["date"];
 662                  $chaine.="|";
 663                  $chaine.=$eleve[$numero]["sexe"];
 664                  $chaine.="|";
 665                  $chaine.=$eleve[$numero]["division"];
 666                  if($fich) {
 667                      //fwrite($fich,$chaine."\n");
 668                      fwrite($fich,html_entity_decode($chaine)."\n");
 669                  }
 670                  my_echo($chaine."<br />\n");
 671              }
 672              if($fich) {
 673                  fclose($fich);
 674              }
 675  
 676              //my_echo("disk_total_space($dossiercsv)=".disk_total_space($dossiercsv)."<br />");
 677              if($temoin_creation_fichiers!="non") {
 678                  my_echo("<script type='text/javascript'>
 679      document.getElementById('id_f_ele_txt').style.display='';
 680  </script>");
 681              }
 682  
 683              my_echo("</blockquote>\n");
 684              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
 685              my_echo("</blockquote>\n");
 686          }
 687          else{
 688              //my_echo("<p>ERREUR lors de l'ouverture du fichier ".$eleves_csv_file['name']." (<i>".$eleves_csv_file['tmp_name']."</i>).</p>\n");
 689              my_echo("<p>ERREUR lors de l'ouverture du fichier '$eleves_file'.</p>\n");
 690          }
 691      }
 692      else{
 693          // *****************************
 694          // C'est un fichier Eleves...XML
 695          // *****************************
 696  
 697          // Pour avoir accès aux erreurs XML:
 698          libxml_use_internal_errors(true);
 699  
 700          $ele_xml=simplexml_load_file($eleves_file);
 701          if($ele_xml) {
 702              $nom_racine=$ele_xml->getName();
 703              if(strtoupper($nom_racine)!='BEE_ELEVES') {
 704                  my_echo("<p style='color:red;'>ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML Elèves.<br />Sa racine devrait être 'BEE_ELEVES'.</p>\n");
 705                  my_echo("<script type='text/javascript'>
 706      compte_a_rebours='n';
 707  </script>\n");
 708                  my_echo("<div style='position:absolute; top: 50px; left: 300px; width: 400px; border: 1px solid black; background-color: red;'><div align='center'>ERREUR: Le fichier XML fourni n'a pas l'air d'être un fichier XML Elèves.<br />Sa racine devrait être 'BEE_ELEVES'.</div></div>");
 709                  my_echo("</body>\n</html>\n");
 710      
 711                  // Renseignement du témoin de mise à jour terminée.
 712                  $sql="SELECT value FROM params WHERE name='imprt_cmpts_en_cours'";
 713                  $res1=mysql_query($sql);
 714                  if(mysql_num_rows($res1)==0) {
 715                      $sql="INSERT INTO params SET name='imprt_cmpts_en_cours',value='n'";
 716                      $res0=mysql_query($sql);
 717                  }
 718                  else{
 719                      $sql="UPDATE params SET value='n' WHERE name='imprt_cmpts_en_cours'";
 720                      $res0=mysql_query($sql);
 721                  }
 722  
 723                  // On a fourni un fichier, mais invalide, donc ABANDON
 724                  die();
 725              }
 726              else {
 727                  my_echo("<h3>Section élèves");
 728                  if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 729                  my_echo("</h3>\n");
 730                  my_echo("<blockquote>\n");
 731  
 732                  // 20130115
 733                  $uaj="";
 734                  $uaj_tronque="";
 735                  $annee_scolaire="";
 736                  $date_export="";
 737                  $objet_parametres=($ele_xml->PARAMETRES);
 738                  foreach ($objet_parametres->children() as $key => $value) {
 739                      if(strtoupper($key)=='UAJ') {
 740                          $uaj=trim($value);
 741                          $uaj_tronque=substr(substr($uaj,0,strlen($uaj)-1), 1);
 742                      }
 743                      elseif(strtoupper($key)=='ANNEE_SCOLAIRE') {
 744                          $annee_scolaire=trim($value)."-".(trim($value)+1);
 745                      }
 746                      elseif(strtoupper($key)=='HORODATAGE') {
 747                          $date_export=trim($value);
 748                      }
 749                  }
 750                  my_echo("<p>");
 751                  if($uaj!="") {
 752                      my_echo("Fichier XML Élèves de l'établissement $uaj ($uaj_tronque) ");
 753                  }
 754                  if($annee_scolaire!="") {
 755                      my_echo("pour l'année scolaire $annee_scolaire ");
 756                  }
 757                  if($date_export!="") {
 758                      my_echo("exporté le $date_export");
 759                      crob_setParam('xml_ele_last_import',$date_export,"Date du dernier export XML Eleves importé");
 760                  }
 761                  my_echo("</p>");
 762  
 763                  my_echo("<h4>Analyse du fichier pour extraire les informations élèves...");
 764                  if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
 765                  my_echo("</h4>\n");
 766                  my_echo("<blockquote>\n");
 767      
 768                  $eleves=array();
 769                  //$indice_from_eleve_id[ELEVE_ID]=INDICE_$i_DANS_LE_TABLEAU_$eleves
 770                  $indice_from_eleve_id=array();
 771                  $indice_from_elenoet=array();
 772              
 773                  //Compteur élève:
 774                  $i=-1;
 775              
 776                  $tab_champs_eleve=array("ID_NATIONAL",
 777                  "ELENOET",
 778                  "ID_ELEVE_ETAB",
 779                  "NOM",
 780                  "PRENOM",
 781                  "DATE_NAISS",
 782                  "DOUBLEMENT",
 783                  "DATE_SORTIE",
 784                  "CODE_REGIME",
 785                  "DATE_ENTREE",
 786                  "CODE_MOTIF_SORTIE",
 787                  "CODE_SEXE",
 788                  );
 789              
 790              
 791                  // Inutile pour SE3
 792                  $avec_scolarite_an_dernier="n";
 793                  $tab_champs_scol_an_dernier=array("CODE_STRUCTURE",
 794                  "CODE_RNE",
 795                  "SIGLE",
 796                  "DENOM_PRINC",
 797                  "DENOM_COMPL",
 798                  "LIGNE1_ADRESSE",
 799                  "LIGNE2_ADRESSE",
 800                  "LIGNE3_ADRESSE",
 801                  "LIGNE4_ADRESSE",
 802                  "BOITE_POSTALE",
 803                  "MEL",
 804                  "TELEPHONE",
 805                  "LL_COMMUNE_INSEE"
 806                  );
 807      
 808      
 809                  // PARTIE <ELEVES>
 810                  my_echo("<p>Parcours de la section ELEVES<br />\n");
 811              
 812                  $objet_eleves=($ele_xml->DONNEES->ELEVES);
 813                  foreach ($objet_eleves->children() as $eleve) {
 814                      $i++;
 815                      //my_echo("<p><b>Elève $i</b><br />");
 816              
 817                      $eleves[$i]=array();
 818              
 819                      foreach($eleve->attributes() as $key => $value) {
 820                          //my_echo("$key=".$value."<br />");
 821              
 822                          $eleves[$i][strtolower($key)]=trim(traite_utf8($value));
 823                          if(strtoupper($key)=='ELEVE_ID') {
 824                              $indice_from_eleve_id["$value"]=$i;
 825                          }
 826                          elseif(strtoupper($key)=='ELENOET') {
 827                              $indice_from_elenoet["$value"]=$i;
 828                          }
 829                      }
 830              
 831                      foreach($eleve->children() as $key => $value) {
 832                          if(in_array(strtoupper($key),$tab_champs_eleve)) {
 833                              $eleves[$i][strtolower($key)]=trim(traite_utf8($value));
 834                              //my_echo("\$eleve->$key=".$value."<br />");
 835                          }
 836              
 837                          if(($avec_scolarite_an_dernier=='y')&&(strtoupper($key)=='SCOLARITE_AN_DERNIER')) {
 838                              $eleves[$i]["scolarite_an_dernier"]=array();
 839              
 840                              foreach($eleve->SCOLARITE_AN_DERNIER->children() as $key2 => $value2) {
 841                                  //my_echo("\$eleve->SCOLARITE_AN_DERNIER->$key2=$value2<br />");
 842                                  if(in_array(strtoupper($key2),$tab_champs_scol_an_dernier)) {
 843                                      $eleves[$i]["scolarite_an_dernier"][strtolower($key2)]=trim(traite_utf8($value2));
 844                                  }
 845                              }
 846                          }
 847              
 848                      }
 849  
 850                      //20130115
 851                      // Est-ce que l'elenoet enregistré est bien un elenoet de l'établissement ou un élève importé d'un autre établissement?
 852                      if(($uaj_tronque!="")&&(isset($eleves[$i]['elenoet']))&&(isset($eleves[$i]['id_eleve_etab']))&&(!preg_match("/".$elenoet.$uaj_tronque."/", $eleves[$i]['id_eleve_etab']))) {
 853                          my_echo("<p style='color:red'>L'élève ".$eleves[$i]['nom']." ".$eleves[$i]['prenom']." a été importé d'un autre établissement (<em>".$eleves[$i]['id_eleve_etab']."-&gt;".preg_replace("/[0]*".$eleves[$i]['elenoet']."/","",$eleves[$i]['id_eleve_etab'])."</em>).<br />Son elenoet (<em>".$eleves[$i]['elenoet']."</em>) est celui qu'il avait dans son ancien établissement.<br />Cet elenoet n'est pas encore valide<br />Vous devrez créer le compte à la main en attendant que Sconet/Siècle soit nettoyé/mis à jour.</p>\n");
 854                          $tab_eleve_autre_etab[]=$eleves[$i]['nom']."|".$eleves[$i]['prenom']."|".$eleves[$i]['code_sexe']."|".$eleves[$i]['date_naiss'];
 855                          unset($eleves[$i]['elenoet']);
 856                      }
 857  
 858                      if($debug_import_comptes=='y') {
 859                          my_echo("<pre style='color:green;'><b>Tableau \$eleves[$i]&nbsp;:</b>");
 860                          my_print_r($eleves[$i]);
 861                          my_echo("</pre>");
 862                      }
 863                  }
 864                  my_echo("Fin de la section ELEVES<br />\n");
 865              
 866                  //++++++++++++++++++++++++++++++++++++++
 867              
 868                  $tab_champs_opt=array("NUM_OPTION","CODE_MODALITE_ELECT","CODE_MATIERE");
 869              
 870                  my_echo("<p>Parcours de la section OPTIONS<br />\n");
 871                  // PARTIE <OPTIONS>
 872                  $objet_options=($ele_xml->DONNEES->OPTIONS);
 873                  foreach ($objet_options->children() as $option) {
 874                      // $option est un <OPTION ELEVE_ID="145778" ELENOET="2643">
 875                      //my_echo("<p><b>Option</b><br />");
 876              
 877                      // $i est l'indice de l'élève dans le tableau $eleves
 878                      unset($i);
 879              
 880                      $chaine_option="OPTION";
 881                      foreach($option->attributes() as $key => $value) {
 882                          //my_echo("$key=".$value."<br />");
 883              
 884                          $chaine_option.=" $key='$value'";
 885              
 886                          // Recherche de la valeur de $i dans $eleves[$i] d'après l'ELEVE_ID ou l'ELENOET
 887                          if((strtoupper($key)=='ELEVE_ID')&&(isset($indice_from_eleve_id["$value"]))) {
 888                              $i=$indice_from_eleve_id["$value"];
 889                              break;
 890                          }
 891                          elseif((strtoupper($key)=='ELENOET')&&(isset($indice_from_elenoet["$value"]))) {
 892                              $i=$indice_from_elenoet["$value"];
 893                              break;
 894                          }
 895                      }
 896              
 897                      if(!isset($i)) {
 898                          my_echo("<span style='color:red;'>ERREUR&nbsp;: Echec de l'association de l'option &lt;$chaine_option&gt; avec un élève</span>.<br />");
 899                      }
 900                      else {
 901                          $eleves[$i]["options"]=array();
 902                          $j=0;
 903                          //foreach($option->OPTIONS_ELEVE->children() as $key => $value) {
 904              
 905                          // $option fait référence à un élève
 906                          // Les enfants sont des OPTIONS_ELEVE
 907                          foreach($option->children() as $options_eleve) {
 908                              foreach($options_eleve->children() as $key => $value) {
 909                                  // Les enfants indiquent NUM_OPTION, CODE_MODALITE_ELECT, CODE_MATIERE
 910                                  if(in_array(strtoupper($key),$tab_champs_opt)) {
 911                                      $eleves[$i]["options"][$j][strtolower($key)]=trim(traite_utf8($value));
 912                                      //my_echo("\$eleve->$key=".$value."<br />";
 913                                      //my_echo("\$eleves[$i][\"options\"][$j][".strtolower($key)."]=".$value."<br />");
 914                                  }
 915                              }
 916                              $j++;
 917                          }
 918              
 919                          if($debug_import_comptes=='y') {
 920                              my_echo("<pre style='color:green;'><b>Tableau \$eleves[$i]&nbsp;:</b>");
 921                              my_print_r($eleves[$i]);
 922                              my_echo("</pre>");
 923                          }
 924                      }
 925              
 926              
 927                  }
 928                  my_echo("Fin de la section OPTIONS<br />\n");
 929              
 930                  //++++++++++++++++++++++++++++++++++++++
 931              
 932                  // TYPE_STRUCTURE vaut D pour la classe et G pour un groupe
 933                  $tab_champs_struct=array("CODE_STRUCTURE","TYPE_STRUCTURE");
 934              
 935                  my_echo("<p>Parcours de la section STRUCTURES<br />\n");
 936                  // PARTIE <OPTIONS>
 937                  $objet_structures=($ele_xml->DONNEES->STRUCTURES);
 938                  foreach ($objet_structures->children() as $structures_eleve) {
 939                      //my_echo("<p><b>Structure</b><br />");
 940              
 941                      // $i est l'indice de l'élève dans le tableau $eleves
 942                      unset($i);
 943              
 944                      $chaine_structures_eleve="STRUCTURES_ELEVE";
 945                      foreach($structures_eleve->attributes() as $key => $value) {
 946                          //my_echo("$key=".$value."<br />");
 947              
 948                          $chaine_structures_eleve.=" $key='$value'";
 949              
 950                          // Recherche de la valeur de $i dans $eleves[$i] d'après l'ELEVE_ID ou l'ELENOET
 951                          if((strtoupper($key)=='ELEVE_ID')&&(isset($indice_from_eleve_id["$value"]))) {
 952                              $i=$indice_from_eleve_id["$value"];
 953                              break;
 954                          }
 955                          elseif((strtoupper($key)=='ELENOET')&&(isset($indice_from_elenoet["$value"]))) {
 956                              $i=$indice_from_elenoet["$value"];
 957                              break;
 958                          }
 959                      }
 960              
 961                      if(!isset($i)) {
 962                          my_echo("<span style='color:red;'>ERREUR&nbsp;: Echec de l'association de &lt;$chaine_structures_eleve&gt; avec un élève</span>.<br />");
 963                      }
 964                      else {
 965                          $eleves[$i]["structures"]=array();
 966                          $j=0;
 967                          //foreach($objet_structures->STRUCTURES_ELEVE->children() as $structure) {
 968                          foreach($structures_eleve->children() as $structure) {
 969                              $eleves[$i]["structures"][$j]=array();
 970                              foreach($structure->children() as $key => $value) {
 971                                  if(in_array(strtoupper($key),$tab_champs_struct)) {
 972                                      //my_echo("\$structure->$key=".$value."<br />");
 973  
 974                                      $eleves[$i]["structures"][$j][strtolower($key)]=strtr(trim(traite_utf8($value)),"/","_");
 975                                      if($clean_caract_classe=="y") {
 976                                          $eleves[$i]["structures"][$j][strtolower($key)]=preg_replace("/[^a-zA-Z0-9_ -]/", "",remplace_accents($eleves[$i]["structures"][$j][strtolower($key)]));
 977                                      }
 978  
 979                                  }
 980                              }
 981                              $j++;
 982                          }
 983      
 984                          if($debug_import_comptes=='y') {
 985                              my_echo("<pre style='color:green;'><b>Tableau \$eleves[$i]&nbsp;:</b>)");
 986                              my_print_r($eleves[$i]);
 987                              my_echo("</pre>");
 988                          }
 989                      }
 990              
 991              
 992                  }
 993                  my_echo("Fin de la section STRUCTURES</p>\n");
 994              
 995                  //++++++++++++++++++++++++++++++++++++++
 996      
 997                  // Générer un tableau des membres des groupes:
 998                  // $structure[$i]["nom"]        ->    5LATIN-, 3 A2DEC3,...
 999                  // $structure[$i]["eleve"][]    ->    ELENOET
1000      
1001      
1002                  my_echo("<p>Terminé.</p>\n");
1003                  if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1004                  my_echo("</blockquote>\n");
1005      
1006                  //===================================================================
1007  
1008                  $tab_groups=array();
1009                  $tab_groups_member=array();
1010  
1011                  my_echo("<h4>Affichage (d'une partie) des données ELEVES extraites:");
1012                  if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1013                  my_echo("</h4>\n");
1014                  my_echo("<blockquote>\n");
1015                  my_echo(count($eleves)." élèves dans le fichier.");
1016                  my_echo("<table border='1'>\n");
1017                  my_echo("<tr>\n");
1018                  //my_echo("<th style='color: blue;'>&nbsp;</th>\n");
1019                  my_echo("<th style='color: blue;'>&nbsp;</th>\n");
1020                  my_echo("<th>Elenoet</th>\n");
1021                  my_echo("<th>Nom</th>\n");
1022                  my_echo("<th>Prénom</th>\n");
1023                  my_echo("<th>Sexe</th>\n");
1024                  my_echo("<th>Date de naissance</th>\n");
1025                  my_echo("<th>Division</th>\n");
1026                  my_echo("</tr>\n");
1027                  $i=0;
1028                  while($i<count($eleves)) {
1029                      my_echo("<tr>\n");
1030                      //my_echo("<td style='color: blue;'>$cpt</td>\n");
1031                      //my_echo("<td style='color: blue;'>&nbsp;</td>\n");
1032                      my_echo("<td style='color: blue;'>$i</td>\n");
1033                      my_echo("<td>".$eleves[$i]["elenoet"]."</td>\n");
1034                      my_echo("<td>".$eleves[$i]["nom"]."</td>\n");
1035      
1036                      // =============================================
1037                      // On ne retient que le premier prénom: 20071101
1038                      $tab_tmp_prenom=explode(" ",$eleves[$i]["prenom"]);
1039                      $eleves[$i]["prenom"]=$tab_tmp_prenom[0];
1040                      // =============================================
1041      
1042                      my_echo("<td>".$eleves[$i]["prenom"]."</td>\n");
1043                      my_echo("<td>".$eleves[$i]["code_sexe"]."</td>\n");
1044                      my_echo("<td>".$eleves[$i]["date_naiss"]."</td>\n");
1045                      /*
1046                      if(isset($eleves[$i]["structures"])) {
1047                          my_echo("<td>".$eleves[$i]["structures"][0]["code_structure"]."</td>\n");
1048                      }
1049                      else{
1050                          my_echo("<td>&nbsp;</td>\n");
1051                      }
1052                      */
1053                      $temoin_div_trouvee="";
1054                      if(isset($eleves[$i]["structures"])) {
1055                          if(count($eleves[$i]["structures"])>0) {
1056                              for($j=0;$j<count($eleves[$i]["structures"]);$j++) {
1057                                  if($eleves[$i]["structures"][$j]["type_structure"]=="D") {
1058  
1059                                      // Normalement, un élève n'est que dans une classe, mais au cas où:
1060                                      if($temoin_div_trouvee!="oui") {
1061                                          my_echo("<td>".$eleves[$i]["structures"][$j]["code_structure"]."</td>");
1062                                          $eleves[$i]["classe"]=$eleves[$i]["structures"][$j]["code_structure"];
1063                                      }
1064  
1065                                      $temoin_div_trouvee="oui";
1066                                      //break;
1067                                  }
1068                                  elseif($eleves[$i]["structures"][$j]["type_structure"]=="G") {
1069                                      if(!in_array($eleves[$i]["structures"][$j]["code_structure"], $tab_groups)) {
1070                                          $tab_groups[]=$eleves[$i]["structures"][$j]["code_structure"];
1071                                          $tab_groups_member[$eleves[$i]["structures"][$j]["code_structure"]]=array();
1072                                      }
1073      
1074                                      // 20130115
1075                                      //if(!in_array($eleves[$i]['eleve_id'], $tab_groups_member[$eleves[$i]["structures"][$j]["code_structure"]])) {
1076                                      if((!in_array($eleves[$i]['eleve_id'], $tab_groups_member[$eleves[$i]["structures"][$j]["code_structure"]]))&&($eleves[$i]['elenoet'])) {
1077                                          //$tab_groups_member[$eleves[$i]["structures"][$j]["code_structure"]][]=$eleves[$i]['eleve_id'];
1078                                          $tab_groups_member[$eleves[$i]["structures"][$j]["code_structure"]][]=$eleves[$i]['elenoet'];
1079                                      }
1080                                  }
1081                              }
1082  
1083                              /*
1084                              if($temoin_div_trouvee=="") {
1085                                  echo "&nbsp;";
1086                              }
1087                              else{
1088                                  my_echo("<td>".$eleves[$i]["structures"][$j]["code_structure"]."</td>");
1089                                  $eleves[$i]["classe"]=$eleves[$i]["structures"][$j]["code_structure"];
1090                              }
1091                              */
1092                          }
1093                          else{
1094                              my_echo("<td>&nbsp;</td>\n");
1095                          }
1096                      }
1097                      else{
1098                          my_echo("<td>&nbsp;</td>\n");
1099                      }
1100      
1101      
1102                      my_echo("</tr>\n");
1103                      //flush();
1104                      $i++;
1105                  }
1106  
1107                  my_echo("</table>\n");
1108  
1109                  if($debug_import_comptes=='y') {
1110                      my_echo("DEBUG_ELEVES_1<br /><pre style='color:green'><b>eleves</b><br />\n");
1111                      my_print_r($eleves);
1112                      my_echo("</pre><br />DEBUG_ELEVES_2<br />\n");
1113      
1114                      my_echo("DEBUG_TAB_GROUPS_1<br /><pre style='color:green'><b>tab_groups</b><br />\n");
1115                      my_print_r($tab_groups);
1116                      my_echo("</pre><br />DEBUG_TAB_GROUPS_2<br />\n");
1117      
1118                      my_echo("DEBUG_TAB_GROUPS_MEMBER_1<br /><pre style='color:green'><b>tab_groups_member</b><br />\n");
1119                      my_print_r($tab_groups_member);
1120                      my_echo("</pre><br />DEBUG_TAB_GROUPS_MEMBER_2<br />\n");
1121                  }
1122  
1123                  //my_echo("___ ... ___");
1124                  my_echo("</blockquote>\n");
1125                  if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1126                  my_echo("</blockquote>\n");
1127      
1128      
1129      
1130                  // Avec le fichier XML, on a rempli un tableau $eleves (au pluriel)
1131                  // Remplissage du tableau $eleve (au singulier) calqué sur celui du fichier CSV.
1132                  if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/f_ele.txt","w+");}else{$fich=FALSE;}
1133                  $eleve=array();
1134                  $tabnumero=array();
1135                  $tab_division=array();
1136                  $i=0;
1137                  while($i<count($eleves)) {
1138                      //if(isset($eleves[$i]["structures"][0]["code_structure"])) {
1139                      //if(isset($eleves[$i]["structures"])) {
1140                      if(isset($eleves[$i]["classe"])) {
1141                          // 20130115
1142                          if(isset($eleves[$i]["elenoet"])) {
1143                              //$numero=$eleves[$i]["elenoet"];
1144                              $numero=sprintf("%05d",$eleves[$i]["elenoet"]);
1145                              $tabnumero[]="$numero";
1146                              $eleve[$numero]=array();
1147                              $eleve[$numero]["numero"]="$numero";
1148                              $eleve[$numero]["nom"]=$eleves[$i]["nom"];
1149                              //my_echo("\$eleve[$numero][\"nom\"]=".$eleves[$i]["nom"]."<br />\n");
1150                              //my_echo("<p>\$eleve[$numero][\"nom\"]=".$eleve[$numero]["nom"]." ");
1151                              $eleve[$numero]["prenom"]=$eleves[$i]["prenom"];
1152                              //my_echo("\$eleve[$numero][\"prenom\"]=".$eleve[$numero]["prenom"]." ");
1153                              $tmpdate=explode("/",$eleves[$i]["date_naiss"]);
1154                              $eleve[$numero]["date"]=$tmpdate[2].$tmpdate[1].$tmpdate[0];
1155                              if($eleves[$i]["code_sexe"]==1) {$eleve[$numero]["sexe"]="M";}else{$eleve[$numero]["sexe"]="F";}
1156      
1157                              //$eleve[$numero]["division"]=$eleves[$i]["structures"][0]["code_structure"];
1158                              $eleve[$numero]["division"]=$eleves[$i]["classe"];
1159      
1160                              //my_echo(" en ".$eleve[$numero]["division"]."<br />");
1161                              //my_echo("\$eleve[$numero][\"division\"]=".$eleve[$numero]["division"]."<br />");
1162      
1163                              $chaine="";
1164                              $chaine.=$eleve[$numero]["numero"];
1165                              $chaine.="|";
1166                              $chaine.=remplace_accents($eleve[$numero]["nom"]);
1167                              $chaine.="|";
1168                              $chaine.=remplace_accents($eleve[$numero]["prenom"]);
1169                              $chaine.="|";
1170                              $chaine.=$eleve[$numero]["date"];
1171                              $chaine.="|";
1172                              $chaine.=$eleve[$numero]["sexe"];
1173                              $chaine.="|";
1174                              $chaine.=$eleve[$numero]["division"];
1175                              if($fich) {
1176                                  //fwrite($fich,$chaine."\n");
1177                                  fwrite($fich,html_entity_decode($chaine)."\n");
1178                              }
1179      
1180                              //my_echo("Parcours des divisions existantes: ");
1181                              $temoin_new_div="oui";
1182                              for($k=0;$k<count($tab_division);$k++) {
1183                                  //my_echo($tab_division[$k]["nom"]." (<i>$k</i>) ");
1184                                  if($eleve[$numero]["division"]==$tab_division[$k]["nom"]) {
1185                                      $temoin_new_div="non";
1186                                      //my_echo(" (<font color='green'><i>BINGO</i></font>) ");
1187                                      break;
1188                                  }
1189                              }
1190                              if($temoin_new_div=="oui") {
1191                                  //$k++;
1192                                  $tab_division[$k]=array();
1193                                  //$tab_division[$k]["nom"]=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($eleve[$numero]["division"])));
1194                                  $tab_division[$k]["nom"]=$eleve[$numero]["division"];
1195                                  $tab_division[$k]["option"]=array();
1196                                  //my_echo("<br />Nouvelle classe: \$tab_division[$k][\"nom\"]=".$tab_division[$k]["nom"]."<br />");
1197                              }
1198      
1199                              // Et pour les options, on conserve $eleves? NON
1200                              //$eleves[$i]["options"][$j]
1201                              if(isset($eleves[$i]["options"])) {
1202                                  $eleve[$numero]["options"]=array();
1203                                  for($j=0;$j<count($eleves[$i]["options"]);$j++) {
1204                                      $eleve[$numero]["options"][$j]=array();
1205                                      $eleve[$numero]["options"][$j]["code_matiere"]=$eleves[$i]["options"][$j]["code_matiere"];
1206                                      // Les autres champs ne sont pas très utiles...
1207      
1208                                      //my_echo("Option suivie: \$eleve[$numero][\"options\"][$j][\"code_matiere\"]=".$eleve[$numero]["options"][$j]["code_matiere"]."<br />");
1209      
1210                                      // TESTER SI L'OPTION EST DEJA DANS LA LISTE DES OPTIONS DE LA CLASSE.
1211                                      //my_echo("Options existantes: ");
1212                                      $temoin_nouvelle_option="oui";
1213                                      for($n=0;$n<count($tab_division[$k]["option"]);$n++) {
1214                                          //my_echo($tab_division[$k]["option"][$n]["code_matiere"]." (<i>$k - $n</i>)");
1215                                          if($tab_division[$k]["option"][$n]["code_matiere"]==$eleve[$numero]["options"][$j]["code_matiere"]) {
1216                                              $temoin_nouvelle_option="non";
1217                                              //my_echo(" (<font color='green'><i>BINGO</i></font>) ");
1218                                              break;
1219                                          }
1220                                      }
1221                                      //my_echo("<br />");
1222                                      if($temoin_nouvelle_option=="oui") {
1223                                          //$n++;
1224                                          $tab_division[$k]["option"][$n]=array();
1225                                          $tab_division[$k]["option"][$n]["code_matiere"]=$eleve[$numero]["options"][$j]["code_matiere"];
1226                                          $tab_division[$k]["option"][$n]["eleve"]=array();
1227                                          //my_echo("Nouvelle option: \$tab_division[$k][\"option\"][$n][\"code_matiere\"]=".$tab_division[$k]["option"][$n]["code_matiere"]."<br />");
1228                                      }
1229                                      //my_echo("<br />");
1230                                      $tab_division[$k]["option"][$n]["eleve"][]=$eleve[$numero]["numero"];
1231      
1232                                  //    my_echo("<p>Membres actuels de l'option ".$tab_division[$k]["option"][$n]["code_matiere"]." de ".$tab_division[$k]["nom"].": ");
1233                                  //    for($m=0;$m<count($tab_division[$k]["option"][$n]["eleve"]);$m++) {
1234                                  //        my_echo($tab_division[$k]["option"][$n]["eleve"][$m]." ");
1235                                  //    }
1236                                  //    my_echo(" ($m)</p>");
1237                                  }
1238                              }
1239                          }
1240                      }
1241                      $i++;
1242                  }
1243                  if($fich) {
1244                      fclose($fich);
1245                  }
1246                  if($temoin_creation_fichiers!="non") {
1247                      my_echo("<script type='text/javascript'>
1248          document.getElementById('id_f_ele_txt').style.display='';
1249      </script>");
1250                  }
1251                  //my_echo("disk_total_space($dossiercsv)=".disk_total_space($dossiercsv)."<br />");
1252      
1253                  //    // Affichage pour debug:
1254                  //    for($k=0;$k<count($tab_division);$k++) {
1255                  //        my_echo("<p>\$tab_division[$k][\"nom\"]=<b>".$tab_division[$k]["nom"]."</b></p>");
1256                  //        for($n=0;$n<count($tab_division[$k]["option"]);$n++) {
1257                  //            my_echo("<p>\$tab_division[$k][\"option\"][$n][\"code_matiere\"]=".$tab_division[$k]["option"][$n]["code_matiere"]."<br />");
1258                  //            //my_echo("<ul>");
1259                  //            my_echo("Elèves: ");
1260                  //            my_echo($tab_division[$k]["option"][$n]["eleve"][0]);
1261                  //            for($i=1;$i<count($tab_division[$k]["option"][$n]["eleve"]);$i++) {
1262                  //                //my_echo("<li></li>");
1263                  //                my_echo(", ".$tab_division[$k]["option"][$n]["eleve"][$i]);
1264                  //            }
1265                  //            //my_echo("</ul>");
1266                  //            my_echo("</p>");
1267                  //        }
1268                  //        my_echo("<hr />");
1269                  //    }
1270          
1271      
1272                  if($debug_import_comptes=='y') {
1273                      my_echo("DEBUG_ELEVE_1<br /><pre style='color:green'><b>eleve</b><br />\n");
1274                      my_print_r($eleve);
1275                      my_echo("</pre><br />DEBUG_ELEVE_2<br />\n");
1276                  }
1277      
1278              }
1279          }
1280          else{
1281              //$eleves_xml_file
1282              //my_echo("<p>ERREUR lors de l'ouverture du fichier ".$eleves_xml_file['name']." (<i>".$eleves_xml_file['tmp_name']."</i>).</p>\n");
1283  
1284              my_echo("<script type='text/javascript'>
1285      document.getElementById('div_signalements').style.display='';
1286      document.getElementById('div_signalements').innerHTML=document.getElementById('div_signalements').innerHTML+'<br /><a href=\'#erreur_eleves_file\'>Erreur</a> lors de l\'ouverture du fichier <b>$eleves_file</b>';
1287  </script>\n");
1288  
1289              my_echo("<p style='color:red;'><a name='erreur_eleves_file'></a>ERREUR lors de l'ouverture du fichier '$eleves_file'</p>\n");
1290  
1291              my_echo("<div style='color:red;'>");
1292              foreach(libxml_get_errors() as $xml_error) {
1293                  my_echo($xml_error->message."<br />");
1294              }
1295              my_echo("</div>");
1296  
1297              libxml_clear_errors();
1298          }
1299      }
1300  
1301      //my_echo("<p>Fin provisoire...</p>");
1302      //exit;
1303  
1304      //=========================================================================
1305      //=========================================================================
1306      // On passe au fichier STS_EDT
1307      //=========================================================================
1308      //=========================================================================
1309  
1310  // *******************************************************************
1311  // *******************************************************************
1312  // A FAIRE: METTRE UN if(file_exists($sts_xml_file))
1313  // *******************************************************************
1314  // *******************************************************************
1315  
1316      // Lecture du XML de STS...
1317      $temoin_au_moins_un_prof_princ="";
1318  
1319      // Pour avoir accès aux erreurs XML:
1320      libxml_use_internal_errors(true);
1321  
1322      $sts_xml=simplexml_load_file($sts_xml_file);
1323      if($sts_xml) {
1324          my_echo("<h3>Section professeurs, matières, groupes,...");
1325          if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1326          my_echo("</h3>\n");
1327          my_echo("<blockquote>\n");
1328  
1329      
1330          $nom_racine=$sts_xml->getName();
1331          if(strtoupper($nom_racine)!='STS_EDT') {
1332              //echo "<p style='color:red'>ABANDON&nbsp;: Le fichier n'est pas de type STS_EDT.</p>\n";
1333              my_echo("<p style='color:red;'>ERREUR: Le fichier STS/Emploi-du-temps fourni n'a pas l'air d'être de type STS_EDT.</p>\n");
1334  
1335              my_echo("<script type='text/javascript'>
1336          compte_a_rebours='n';
1337      </script>\n");
1338              my_echo("<div style='position:absolute; top: 50px; left: 300px; width: 400px; border: 1px solid black; background-color: red;'><div align='center'>ERREUR: Le fichier STS/Emploi-du-temps fourni n'a pas l'air d'être de type STS_EDT.</div></div>");
1339              my_echo("</body>\n</html>\n");
1340  
1341              // Renseignement du témoin de mise à jour terminée.
1342              $sql="SELECT value FROM params WHERE name='imprt_cmpts_en_cours'";
1343              $res1=mysql_query($sql);
1344              if(mysql_num_rows($res1)==0) {
1345                  $sql="INSERT INTO params SET name='imprt_cmpts_en_cours',value='n'";
1346                  $res0=mysql_query($sql);
1347              }
1348              else{
1349                  $sql="UPDATE params SET value='n' WHERE name='imprt_cmpts_en_cours'";
1350                  $res0=mysql_query($sql);
1351              }
1352  
1353              // On a fourni un fichier, mais invalide, donc ABANDON
1354              die();
1355          }
1356          else {
1357  
1358              if($debug_import_comptes=='y') {
1359                  my_echo("<p style='font-weight:bold;>Affichage du contenu du XML STS_EDT</p>");
1360                  my_echo("<pre style='color:blue;'>");
1361                  my_print_r($sts_xml);
1362                  my_echo("</pre>");
1363              }
1364  
1365              my_echo("<h4>Analyse du fichier pour extraire les informations de l'établissement</h4\n");
1366              my_echo("<blockquote>\n");
1367  
1368              $tab_champs_uaj=array("SIGLE",
1369              "DENOM_PRINC",
1370              "DENOM_COMPL",
1371              "CODE_NATURE",
1372              "CODE_CATEGORIE",
1373              "ADRESSE",
1374              "COMMUNE",
1375              "CODE_POSTAL",
1376              "BOITE_POSTALE",
1377              "CEDEX",
1378              "TELEPHONE",
1379              "STATUT",
1380              "ETABLISSEMENT_SENSIBLE"
1381              );
1382      
1383              // PARTIE <PARAMETRES>
1384              my_echo("<p>Parcours de la section PARAMETRES<br />\n");
1385  
1386              // RNE
1387              $etablissement=array();
1388              foreach($sts_xml->PARAMETRES->UAJ->attributes() as $key => $value) {
1389                  if(strtoupper($key)=='CODE') {
1390                      $etablissement["code"]=trim(traite_utf8($value));
1391                      break;
1392                  }
1393              }
1394      
1395              // Académie
1396              $etablissement["academie"]=array();
1397              foreach($sts_xml->PARAMETRES->UAJ->ACADEMIE->children() as $key => $value) {
1398                  $etablissement["academie"][strtolower($key)]=trim(traite_utf8($value));
1399              }
1400      
1401              // Champs de l'établissement (sigle, denom_princ, adresse,...)
1402              foreach($sts_xml->PARAMETRES->UAJ->children() as $key => $value) {
1403                  if(in_array(strtoupper($key),$tab_champs_uaj)) {
1404                      $etablissement[strtolower($key)]=trim(traite_utf8($value));
1405                  }
1406              }
1407      
1408              // Année
1409              foreach($sts_xml->PARAMETRES->ANNEE_SCOLAIRE->attributes() as $key => $value) {
1410                  if(strtoupper($key)=='ANNEE') {
1411                      $etablissement["annee"]=array();
1412                      $etablissement["annee"]["annee"]=trim(traite_utf8($value));
1413                      break;
1414                  }
1415              }
1416      
1417              // Dates de début et fin d'année
1418              foreach($sts_xml->PARAMETRES->ANNEE_SCOLAIRE->children() as $key => $value) {
1419                  $etablissement["annee"][strtolower($key)]=trim(traite_utf8($value));
1420              }
1421      
1422      
1423              my_echo("Fin de la section PARAMETRES<br />\n");
1424          
1425              my_echo("<p>Terminé.</p>\n");
1426              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1427              my_echo("</blockquote>\n");
1428      
1429  
1430              //==============================================================================
1431      
1432      
1433              my_echo("<h5>Affichage des données PARAMETRES établissement extraites:");
1434              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1435              my_echo("</h5>\n");
1436              my_echo("<blockquote>\n");
1437              my_echo("<table border='1'>\n");
1438              my_echo("<tr>\n");
1439              //my_echo("<th style='color: blue;'>&nbsp;</th>\n");
1440              my_echo("<th>Code</th>\n");
1441              my_echo("<th>Code académie</th>\n");
1442              my_echo("<th>Libelle académie</th>\n");
1443              my_echo("<th>Sigle</th>\n");
1444              my_echo("<th>Denom_princ</th>\n");
1445              my_echo("<th>Denom_compl</th>\n");
1446              my_echo("<th>Code_nature</th>\n");
1447              my_echo("<th>Code_categorie</th>\n");
1448              my_echo("<th>Adresse</th>\n");
1449              my_echo("<th>Code_postal</th>\n");
1450              my_echo("<th>Boite_postale</th>\n");
1451              my_echo("<th>Cedex</th>\n");
1452              my_echo("<th>Telephone</th>\n");
1453              my_echo("<th>Statut</th>\n");
1454              my_echo("<th>Etablissement_sensible</th>\n");
1455              my_echo("<th>Annee</th>\n");
1456              my_echo("<th>Date_debut</th>\n");
1457              my_echo("<th>Date_fin</th>\n");
1458              my_echo("</tr>\n");
1459              //$cpt=0;
1460              //while($cpt<count($etablissement)) {
1461                  my_echo("<tr>\n");
1462                  //my_echo("<td style='color: blue;'>$cpt</td>\n");
1463                  //my_echo("<td style='color: blue;'>&nbsp;</td>\n");
1464                  my_echo("<td>".$etablissement["code"]."</td>\n");
1465                  my_echo("<td>".$etablissement["academie"]["code"]."</td>\n");
1466                  my_echo("<td>".$etablissement["academie"]["libelle"]."</td>\n");
1467                  my_echo("<td>".$etablissement["sigle"]."</td>\n");
1468                  my_echo("<td>".$etablissement["denom_princ"]."</td>\n");
1469                  my_echo("<td>".$etablissement["denom_compl"]."</td>\n");
1470                  my_echo("<td>".$etablissement["code_nature"]."</td>\n");
1471                  my_echo("<td>".$etablissement["code_categorie"]."</td>\n");
1472                  my_echo("<td>".$etablissement["adresse"]."</td>\n");
1473                  my_echo("<td>".$etablissement["code_postal"]."</td>\n");
1474                  my_echo("<td>".$etablissement["boite_postale"]."</td>\n");
1475                  my_echo("<td>".$etablissement["cedex"]."</td>\n");
1476                  my_echo("<td>".$etablissement["telephone"]."</td>\n");
1477                  my_echo("<td>".$etablissement["statut"]."</td>\n");
1478                  my_echo("<td>".$etablissement["etablissement_sensible"]."</td>\n");
1479                  my_echo("<td>".$etablissement["annee"]["annee"]."</td>\n");
1480                  my_echo("<td>".$etablissement["annee"]["date_debut"]."</td>\n");
1481                  my_echo("<td>".$etablissement["annee"]["date_fin"]."</td>\n");
1482                  my_echo("</tr>\n");
1483                  //$cpt++;
1484              //}
1485              my_echo("</table>\n");
1486              my_echo("</blockquote>\n");
1487              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1488              my_echo("</blockquote>\n");
1489  
1490              if($debug_import_comptes=='y') {
1491                  my_echo("DEBUG_ETAB_1<br /><pre style='color:green'><b>etablissement</b><br />\n");
1492                  my_print_r($etablissement);
1493                  my_echo("</pre><br />\nDEBUG_ETAB_2<br />\n");
1494              }
1495      
1496              //==============================================================================    
1497      
1498              $tab_champs_matiere=array("CODE_GESTION",
1499              "LIBELLE_COURT",
1500              "LIBELLE_LONG",
1501              "LIBELLE_EDITION");
1502      
1503              my_echo("<h4>Matières");
1504              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1505              my_echo("</h4>\n");
1506              my_echo("<blockquote>\n");
1507              //my_echo("<h3>Analyse du fichier pour extraire les matières...</h3>\n");
1508              //my_echo("<h4>Analyse du fichier pour extraire les matières...</h4>\n");
1509              //my_echo("<h5>Analyse du fichier pour extraire les matières...</h5>\n");
1510              my_echo("<h5>Analyse du fichier pour extraire les matières...");
1511              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1512              my_echo("</h5>\n");
1513              my_echo("<blockquote>\n");
1514      
1515              $matiere=array();
1516              $i=0;
1517      
1518              foreach($sts_xml->NOMENCLATURES->MATIERES->children() as $objet_matiere) {
1519      
1520                  foreach($objet_matiere->attributes() as $key => $value) {
1521                      if(strtoupper($key)=='CODE') {
1522                          $matiere[$i]["code"]=trim(traite_utf8($value));
1523                          break;
1524                      }
1525                  }
1526      
1527                  // Champs de la matière
1528                  foreach($objet_matiere->children() as $key => $value) {
1529                      if(in_array(strtoupper($key),$tab_champs_matiere)) {
1530                          if(strtoupper($key)=='CODE_GESTION') {
1531                              //$matiere[$i][strtolower($key)]=trim(ereg_replace("[^a-zA-Z0-9&_. -]","",html_entity_decode($value)));
1532                              $matiere[$i][strtolower($key)]=trim(preg_replace("/[^a-zA-Z0-9&_. -]/","",html_entity_decode(traite_utf8($value))));
1533                          }
1534                          elseif(strtoupper($key)=='LIBELLE_COURT') {
1535                              //$matiere[$i][strtolower($key)]=trim(ereg_replace("[^A-Za-zÆæ¼½".$liste_caracteres_accentues."0-9&_. -]","",html_entity_decode($value)));
1536                              $matiere[$i][strtolower($key)]=trim(preg_replace("/[^A-Za-zÆæ¼½".$liste_caracteres_accentues."0-9&_. -]/","",html_entity_decode(traite_utf8($value))));
1537                          }
1538                          else {
1539                              $matiere[$i][strtolower($key)]=trim(traite_utf8($value));
1540                          }
1541                      }
1542                  }
1543      
1544                  $i++;
1545              }
1546      
1547              my_echo("<p>Terminé.</p>\n");
1548              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1549              my_echo("</blockquote>\n");
1550      
1551      
1552      
1553              my_echo("<h5>Affichage des données MATIERES extraites:");
1554              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1555              my_echo("</h5>\n");
1556              my_echo("<blockquote>\n");
1557              my_echo("<table border='1'>\n");
1558              my_echo("<tr>\n");
1559              my_echo("<th style='color: blue;'>&nbsp;</th>\n");
1560              my_echo("<th>Code</th>\n");
1561              my_echo("<th>Code_gestion</th>\n");
1562              my_echo("<th>Libelle_court</th>\n");
1563              my_echo("<th>Libelle_long</th>\n");
1564              my_echo("<th>Libelle_edition</th>\n");
1565              my_echo("</tr>\n");
1566              $cpt=0;
1567              while($cpt<count($matiere)) {
1568                  my_echo("<tr>\n");
1569                  my_echo("<td style='color: blue;'>$cpt</td>\n");
1570                  my_echo("<td>".$matiere[$cpt]["code"]."</td>\n");
1571                  my_echo("<td>".htmlentities($matiere[$cpt]["code_gestion"])."</td>\n");
1572                  my_echo("<td>".htmlentities($matiere[$cpt]["libelle_court"])."</td>\n");
1573                  my_echo("<td>".htmlentities($matiere[$cpt]["libelle_long"])."</td>\n");
1574                  my_echo("<td>".htmlentities($matiere[$cpt]["libelle_edition"])."</td>\n");
1575                  my_echo("</tr>\n");
1576                  $cpt++;
1577              }
1578              my_echo("</table>\n");
1579              my_echo("</blockquote>\n");
1580              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1581              my_echo("</blockquote>\n");
1582  
1583              if($debug_import_comptes=='y') {
1584                  my_echo("DEBUG_MATIERE_1<br /><pre style='color:green'><b>matiere</b><br />\n");
1585                  my_print_r($matiere);
1586                  my_echo("</pre><br />\nDEBUG_MATIERE_2<br />\n");
1587              }
1588      
1589  
1590  			function get_nom_matiere($code) {
1591                  global $matiere;
1592      
1593                  $retour=$code;
1594                  for($i=0;$i<count($matiere);$i++) {
1595                      if($matiere[$i]["code"]=="$code") {
1596                          $retour=$matiere[$i]["code_gestion"];
1597                          break;
1598                      }
1599                  }
1600                  return $retour;
1601              }
1602      
1603  			function get_nom_prof($code) {
1604                  global $prof;
1605      
1606                  $retour=$code;
1607                  for($i=0;$i<count($prof);$i++) {
1608                      if($prof[$i]["id"]=="$code") {
1609                          $retour=$prof[$i]["nom_usage"];
1610                          break;
1611                      }
1612                  }
1613                  return $retour;
1614              }
1615  
1616  
1617  
1618              my_echo("<h4>Personnels");
1619              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1620              my_echo("</h4>\n");
1621              my_echo("<blockquote>\n");
1622              my_echo("<h5>Analyse du fichier pour extraire les professeurs,...");
1623              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1624              my_echo("</h5>\n");
1625              my_echo("<blockquote>\n");
1626  
1627              $tab_champs_personnels=array("NOM_USAGE",
1628              "NOM_PATRONYMIQUE",
1629              "PRENOM",
1630              "SEXE",
1631              "CIVILITE",
1632              "DATE_NAISSANCE",
1633              "GRADE",
1634              "FONCTION");
1635      
1636              $prof=array();
1637              $i=0;
1638      
1639              foreach($sts_xml->DONNEES->INDIVIDUS->children() as $individu) {
1640                  $prof[$i]=array();
1641      
1642                  //my_echo("<span style='color:orange'>\$individu->NOM_USAGE=".$individu->NOM_USAGE."</span><br />");
1643      
1644                  foreach($individu->attributes() as $key => $value) {
1645                      $prof[$i][strtolower($key)]=trim(traite_utf8($value));
1646                  }
1647      
1648                  // Champs de l'individu
1649                  //$temoin_prof_princ=0;
1650                  //$temoin_discipline=0;
1651                  foreach($individu->children() as $key => $value) {
1652                      if(in_array(strtoupper($key),$tab_champs_personnels)) {
1653                          if(strtoupper($key)=='SEXE') {
1654                              //$prof[$i]["sexe"]=trim(ereg_replace("[^1-2]","",$value));
1655                              $prof[$i]["sexe"]=trim(preg_replace("/[^1-2]/","",$value));
1656                          }
1657                          elseif(strtoupper($key)=='CIVILITE') {
1658                              //$prof[$i]["civilite"]=trim(ereg_replace("[^1-3]","",$value));
1659                              $prof[$i]["civilite"]=trim(preg_replace("/[^1-3]/","",$value));
1660                          }
1661                          elseif((strtoupper($key)=='NOM_USAGE')||
1662                          (strtoupper($key)=='NOM_PATRONYMIQUE')||
1663                          (strtoupper($key)=='PRENOM')||
1664                          (strtoupper($key)=='NOM_USAGE')){
1665                              //$prof[$i][strtolower($key)]=trim(ereg_replace("[^A-Za-zÆæ¼½".$liste_caracteres_accentues." -]","",$value));
1666                              $prof[$i][strtolower($key)]=trim(preg_replace("/[^A-Za-zÆæ¼½".$liste_caracteres_accentues." -]/","",traite_utf8($value)));
1667                              //my_echo("\$prof[$i][".strtolower($key)."]=".$prof[$i][strtolower($key)]."<br />";
1668                          }
1669                          else {
1670                              $prof[$i][strtolower($key)]=trim(traite_utf8($value));
1671                          }
1672                      }
1673      
1674                      /*
1675                      //my_echo("$key<br />";
1676                      if(strtoupper($key)=='PROFS_PRINC') {
1677                      //if($key=='PROFS_PRINC') {
1678                          $temoin_prof_princ++;
1679                          //my_echo("\$temoin_prof_princ=$temoin_prof_princ<br />";
1680                      }
1681                      if(strtoupper($key)=='DISCIPLINES') {
1682                          $temoin_discipline++;
1683                          //my_echo("\$temoin_discipline=$temoin_discipline<br />";
1684                      }
1685                      */
1686                  }
1687      
1688                  if(isset($individu->PROFS_PRINC)) {
1689                  //if($temoin_prof_princ>0) {
1690                      $j=0;
1691                      foreach($individu->PROFS_PRINC->children() as $prof_princ) {
1692                          //$prof[$i]["prof_princ"]=array();
1693                          foreach($prof_princ->children() as $key => $value) {
1694                              //$prof[$i]["prof_princ"][$j][strtolower($key)]=trim(traite_utf8($value));
1695                              // Traitement des accents et slashes dans les noms de divisions
1696                              //$prof[$i]["prof_princ"][$j][strtolower($key)]=preg_replace("/[^a-zA-Z0-9_ -]/", "",strtr(remplace_accents(trim(traite_utf8($value))),"/","_"));
1697  
1698                              $prof[$i]["prof_princ"][$j][strtolower($key)]=strtr(trim(traite_utf8($value)),"/","_");
1699                              if($clean_caract_classe=="y") {
1700                                  $prof[$i]["prof_princ"][$j][strtolower($key)]=preg_replace("/[^a-zA-Z0-9_ -]/", "",remplace_accents($prof[$i]["prof_princ"][$j][strtolower($key)]));
1701                              }
1702  
1703                              $temoin_au_moins_un_prof_princ="oui";
1704                          }
1705                          $j++;
1706                      }
1707                  }
1708      
1709                  //if($temoin_discipline>0) {
1710                  if(isset($individu->DISCIPLINES)) {
1711                      $j=0;
1712                      foreach($individu->DISCIPLINES->children() as $discipline) {
1713                          foreach($discipline->attributes() as $key => $value) {
1714                              if(strtoupper($key)=='CODE') {
1715                                  $prof[$i]["disciplines"][$j]["code"]=trim(traite_utf8($value));
1716                                  break;
1717                              }
1718                          }
1719          
1720                          foreach($discipline->children() as $key => $value) {
1721                              $prof[$i]["disciplines"][$j][strtolower($key)]=trim(traite_utf8($value));
1722                          }
1723                          $j++;
1724                      }
1725                  }
1726                  $i++;
1727              }
1728  
1729              my_echo("<p>$i personnels.</p>");
1730  
1731              if($debug_import_comptes=='y') {
1732                  my_echo("DEBUG_PROF_1<br /><pre style='color:green'><b>prof</b><br />\n");
1733                  my_print_r($prof);
1734                  my_echo("</pre><br />DEBUG_PROF_2<br />\n");
1735              }
1736              my_echo("</blockquote>\n");
1737              my_echo("</blockquote>\n");
1738      
1739      
1740      
1741              my_echo("<h4>Structures");
1742              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1743              my_echo("</h4>\n");
1744              my_echo("<blockquote>\n");
1745              my_echo("<h5>Analyse du fichier pour extraire les divisions et associations profs/matières,...");
1746              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1747              my_echo("</h5>\n");
1748              my_echo("<blockquote>\n");
1749              $divisions=array();
1750              $i=0;
1751      
1752              foreach($sts_xml->DONNEES->STRUCTURE->DIVISIONS->children() as $objet_division) {
1753                  $divisions[$i]=array();
1754      
1755                  foreach($objet_division->attributes() as $key => $value) {
1756                      if(strtoupper($key)=='CODE') {
1757                          //$divisions[$i]['code']=trim(traite_utf8($value));
1758                          //$divisions[$i]['code']=trim(remplace_accents(traite_utf8($value)));
1759                          // Traitement des accents et slashes dans les noms de divisions
1760                          //$divisions[$i]['code']=preg_replace("/[^a-zA-Z0-9_ -]/", "",strtr(remplace_accents(trim(traite_utf8($value))),"/","_"));
1761  
1762                          $divisions[$i]['code']=strtr(trim(traite_utf8($value)),"/","_");
1763                          if($clean_caract_classe=="y") {
1764                              $divisions[$i]['code']=preg_replace("/[^a-zA-Z0-9_ -]/", "",remplace_accents($divisions[$i]['code']));
1765                          }
1766  
1767                          //my_echo("<p>\$divisions[$i]['code']=".$divisions[$i]['code']."<br />");
1768                          break;
1769                      }
1770                  }
1771      
1772                  // Champs de la division
1773                  $j=0;
1774      
1775                  foreach($objet_division->SERVICES->children() as $service) {
1776                      foreach($service->attributes() as $key => $value) {
1777                          $divisions[$i]["services"][$j][strtolower($key)]=trim(traite_utf8($value));
1778                          //my_echo("\$divisions[$i][\"services\"][$j][".strtolower($key)."]=trim(traite_utf8($value))<br />");
1779                      }
1780      
1781                      $k=0;
1782                      foreach($service->ENSEIGNANTS->children() as $enseignant) {
1783      
1784                          foreach($enseignant->attributes() as $key => $value) {
1785                              //<ENSEIGNANT ID="8949" TYPE="epp">
1786                              //$divisions[$i]["services"][$j]["enseignants"][$k][strtolower($key)]=trim(traite_utf8($value));
1787                              if(strtoupper($key)=="ID") {
1788                                  $divisions[$i]["services"][$j]["enseignants"][$k]["id"]=trim(traite_utf8($value));
1789                                  break;
1790                              }
1791                          }
1792                          $k++;
1793                      }
1794                      $j++;
1795                  }
1796                  $i++;
1797              }
1798              my_echo("$i divisions.<br />\n");
1799              my_echo("</blockquote>\n");
1800      
1801              if($debug_import_comptes=='y') {
1802                  my_echo("DEBUG_DIV_1<br /><pre style='color:green'><b>divisions</b><br />\n");
1803                  my_print_r($divisions);
1804                  my_echo("</pre><br />DEBUG_DIV_2<br />\n");
1805              }
1806              my_echo("</blockquote>\n");
1807  
1808              //====================================================
1809  
1810              $tab_champs_groupe=array("LIBELLE_LONG");
1811      
1812              my_echo("<h4>Groupes");
1813              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1814              my_echo("</h4>\n");
1815              my_echo("<blockquote>\n");
1816              my_echo("<h5>Analyse du fichier pour extraire les groupes...");
1817              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1818              my_echo("</h5>\n");
1819              my_echo("<blockquote>\n");
1820              $groupes=array();
1821              $i=0;
1822      
1823              foreach($sts_xml->DONNEES->STRUCTURE->GROUPES->children() as $objet_groupe) {
1824                  $groupes[$i]=array();
1825      
1826                  foreach($objet_groupe->attributes() as $key => $value) {
1827                      if(strtoupper($key)=='CODE') {
1828                          $groupes[$i]['code']=trim(traite_utf8($value));
1829                          //my_echo("<p>\$groupes[$i]['code']=".$groupes[$i]['code']."<br />");
1830                          break;
1831                      }
1832                  }
1833      
1834                  // Champs enfants du groupe
1835                  foreach($objet_groupe->children() as $key => $value) {
1836                      if(in_array(strtoupper($key),$tab_champs_groupe)) {
1837                          $groupes[$i][strtolower($key)]=trim(traite_utf8($value));
1838                      }
1839                  }
1840      
1841                  if((!isset($groupes[$i]['libelle_long']))||($groupes[$i]['libelle_long']=='')) {
1842                      $groupes[$i]['libelle_long']=$groupes[$i]['code'];
1843                  }
1844      
1845                  $j=0;
1846                  foreach($objet_groupe->DIVISIONS_APPARTENANCE->children() as $objet_division_apartenance) {
1847                      foreach($objet_division_apartenance->attributes() as $key => $value) {
1848                          $groupes[$i]["divisions"][$j][strtolower($key)]=strtr(trim(traite_utf8($value)),"/","_");
1849                          if($clean_caract_classe=="y") {
1850                              $groupes[$i]["divisions"][$j][strtolower($key)]=preg_replace("/[^a-zA-Z0-9_ -]/", "",remplace_accents($groupes[$i]["divisions"][$j][strtolower($key)]));
1851                          }
1852                      }
1853                      $j++;
1854                  }
1855      
1856                  $j=0;
1857                  foreach($objet_groupe->SERVICES->children() as $service) {
1858                      foreach($service->attributes() as $key => $value) {
1859                          $groupes[$i]["service"][$j][strtolower($key)]=trim(traite_utf8($value));
1860                          // Remarque: Pour les divisions, c'est ["services"] au lieu de ["service"]
1861                          //           $divisions[$i]["services"][$j][strtolower($key)]=trim(traite_utf8($value));
1862                      }
1863      
1864                      $k=0;
1865                      foreach($service->ENSEIGNANTS->children() as $enseignant) {
1866      
1867                          foreach($enseignant->attributes() as $key => $value) {
1868                              //<ENSEIGNANT ID="8949" TYPE="epp">
1869                              //$divisions[$i]["services"][$j]["enseignants"][$k][strtolower($key)]=trim(traite_utf8($value));
1870                              if(strtoupper($key)=="ID") {
1871                                  $groupes[$i]["service"][$j]["enseignant"][$k]["id"]=trim(traite_utf8($value));
1872                                  break;
1873                              }
1874                          }
1875                          $k++;
1876                      }
1877                      $j++;
1878                  }
1879                  $i++;
1880              }
1881              my_echo("$i groupes.<br />\n");
1882  
1883              my_echo("<p>Terminé.</p>\n");
1884              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1885              my_echo("</blockquote>\n");
1886      
1887              if($debug_import_comptes=='y') {
1888                  my_echo("DEBUG_GRP_1<br /><pre style='color:green'><b>groupes</b><br />\n");
1889                  my_print_r($groupes);
1890                  my_echo("</pre><br />DEBUG_GRP_2<br />\n");
1891              }
1892              my_echo("</blockquote>\n");
1893  
1894              /*
1895              my_echo("DEBUG_PROF_1<br /><pre style='color:green'><b>prof</b><br />\n");
1896              my_print_r($prof);
1897              my_echo("</pre><br />DEBUG_PROF_2<br />\n");
1898      
1899              my_echo("DEBUG_DIV_1<br /><pre style='color:green'><b>divisions</b><br />\n");
1900              my_print_r($divisions);
1901              my_echo("</pre><br />DEBUG_DIV_2<br />\n");
1902      
1903              my_echo("DEBUG_GRP_1<br /><pre style='color:green'><b>groupes</b><br />\n");
1904              my_print_r($groupes);
1905              my_echo("</pre><br />DEBUG_GRP_2<br />\n");
1906              */
1907      
1908              my_echo("<h5>Affichage des données PROFS,... extraites:");
1909              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1910              my_echo("</h5>\n");
1911              my_echo("<blockquote>\n");
1912              my_echo("<table border='1'>\n");
1913              my_echo("<tr>\n");
1914              my_echo("<th style='color: blue;'>&nbsp;</th>\n");
1915              my_echo("<th>Id</th>\n");
1916              my_echo("<th>Type</th>\n");
1917              my_echo("<th>Sexe</th>\n");
1918              my_echo("<th>Civilite</th>\n");
1919              my_echo("<th>Nom_usage</th>\n");
1920              my_echo("<th>Nom_patronymique</th>\n");
1921              my_echo("<th>Prenom</th>\n");
1922              my_echo("<th>Date_naissance</th>\n");
1923              my_echo("<th>Grade</th>\n");
1924              my_echo("<th>Fonction</th>\n");
1925              my_echo("<th>Disciplines</th>\n");
1926              my_echo("</tr>\n");
1927              $cpt=0;
1928              while($cpt<count($prof)) {
1929                  my_echo("<tr>\n");
1930                  my_echo("<td style='color: blue;'>$cpt</td>\n");
1931                  my_echo("<td>".$prof[$cpt]["id"]."</td>\n");
1932                  my_echo("<td>".$prof[$cpt]["type"]."</td>\n");
1933                  my_echo("<td>".$prof[$cpt]["sexe"]."</td>\n");
1934                  my_echo("<td>".$prof[$cpt]["civilite"]."</td>\n");
1935                  my_echo("<td>".$prof[$cpt]["nom_usage"]."</td>\n");
1936                  my_echo("<td>".$prof[$cpt]["nom_patronymique"]."</td>\n");
1937      
1938                  // =============================================
1939                  // On ne retient que le premier prénom: 20071101
1940                  $tab_tmp_prenom=explode(" ",$prof[$cpt]["prenom"]);
1941                  $prof[$cpt]["prenom"]=$tab_tmp_prenom[0];
1942                  // =============================================
1943      
1944                  my_echo("<td>".$prof[$cpt]["prenom"]."</td>\n");
1945                  my_echo("<td>".$prof[$cpt]["date_naissance"]."</td>\n");
1946                  my_echo("<td>".$prof[$cpt]["grade"]."</td>\n");
1947                  my_echo("<td>".$prof[$cpt]["fonction"]."</td>\n");
1948      
1949                  my_echo("<td align='center'>\n");
1950      
1951                  if($prof[$cpt]["fonction"]=="ENS") {
1952                      my_echo("<table border='1'>\n");
1953                      my_echo("<tr>\n");
1954                      my_echo("<th>Code</th>\n");
1955                      my_echo("<th>Libelle_court</th>\n");
1956                      my_echo("<th>Nb_heures</th>\n");
1957                      my_echo("</tr>\n");
1958                      for($j=0;$j<count($prof[$cpt]["disciplines"]);$j++) {
1959                          my_echo("<tr>\n");
1960                          my_echo("<td>".$prof[$cpt]["disciplines"][$j]["code"]."</td>\n");
1961                          my_echo("<td>".$prof[$cpt]["disciplines"][$j]["libelle_court"]."</td>\n");
1962                          my_echo("<td>".$prof[$cpt]["disciplines"][$j]["nb_heures"]."</td>\n");
1963                          my_echo("</tr>\n");
1964                      }
1965                      my_echo("</table>\n");
1966                  }
1967      
1968                  my_echo("</td>\n");
1969                  my_echo("</tr>\n");
1970                  $cpt++;
1971              }
1972              my_echo("</table>\n");
1973              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
1974              my_echo("</blockquote>\n");
1975  
1976              if($debug_import_comptes=='y') {
1977                  my_echo("DEBUG_PROFbis_1<br /><pre style='color:green'><b>prof</b><br />\n");
1978                  my_print_r($prof);
1979                  my_echo("</pre><br />DEBUG_PROFbis_2<br />\n");
1980              }
1981  
1982              $temoin_au_moins_une_matiere="";
1983              $temoin_au_moins_un_prof="";
1984              // Affichage des infos Enseignements et divisions:
1985              //my_echo("<a name='divisions'></a><h3>Affichage des divisions</h3>\n");
1986              //my_echo("<a name='divisions'></a><h5>Affichage des divisions</h5>\n");
1987              my_echo("<a name='divisions'></a><h5>Affichage des divisions");
1988              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1989              my_echo("</h5>\n");
1990              my_echo("<blockquote>\n");
1991              for($i=0;$i<count($divisions);$i++) {
1992                  //my_echo("<p>\$divisions[$i][\"code\"]=".$divisions[$i]["code"]."<br />\n");
1993                  //my_echo("<h4>Classe de ".$divisions[$i]["code"]."</h4>\n");
1994                  //my_echo("<h6>Classe de ".$divisions[$i]["code"]."</h6>\n");
1995                  my_echo("<h6>Classe de ".$divisions[$i]["code"]);
1996                  if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
1997                  my_echo("</h6>\n");
1998                  my_echo("<ul>\n");
1999                  for($j=0;$j<count($divisions[$i]["services"]);$j++) {
2000                      //my_echo("\$divisions[$i][\"services\"][$j][\"code_matiere\"]=".$divisions[$i]["services"][$j]["code_matiere"]."<br />\n");
2001                      my_echo("<li>\n");
2002                      for($m=0;$m<count($matiere);$m++) {
2003                          if($matiere[$m]["code"]==$divisions[$i]["services"][$j]["code_matiere"]) {
2004                              //my_echo("\$matiere[$m][\"code_gestion\"]=".$matiere[$m]["code_gestion"]."<br />\n");
2005                              my_echo("Matière: ".$matiere[$m]["code_gestion"]."<br />\n");
2006                              $temoin_au_moins_une_matiere="oui";
2007                          }
2008                      }
2009                      my_echo("<ul>\n");
2010                      for($k=0;$k<count($divisions[$i]["services"][$j]["enseignants"]);$k++) {
2011                      //$divisions[$i]["services"][$j]["enseignants"][$k]["id"]
2012                          for($m=0;$m<count($prof);$m++) {
2013                              if($prof[$m]["id"]==$divisions[$i]["services"][$j]["enseignants"][$k]["id"]) {
2014                                  //my_echo($prof[$m]["nom_usage"]." ".$prof[$m]["prenom"]."|");
2015                                  my_echo("<li>\n");
2016                                  my_echo("Enseignant: ".$prof[$m]["nom_usage"]." ".$prof[$m]["prenom"]);
2017                                  my_echo("</li>\n");
2018                                  $temoin_au_moins_un_prof="oui";
2019                              }
2020                          }
2021                      }
2022                      my_echo("</ul>\n");
2023                      //my_echo("<br />\n");
2024                      my_echo("</li>\n");
2025                  }
2026                  my_echo("</ul>\n");
2027                  //my_echo("</p>\n");
2028              }
2029              my_echo("</blockquote>\n");
2030              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2031              my_echo("</blockquote>\n");
2032              my_echo("</blockquote>\n");
2033              my_echo("<h3>Génération des CSV");
2034              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2035              my_echo("</h3>\n");
2036              my_echo("<blockquote>\n");
2037              my_echo("<a name='se3'></a><h4>Génération du CSV (F_WIND.txt) des profs");
2038              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2039              my_echo("</h4>\n");
2040              my_echo("<blockquote>\n");
2041              $cpt=0;
2042              //if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/se3/f_wind.txt","w+");}
2043              if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/f_wind.txt","w+");}else{$fich=FALSE;}
2044              while($cpt<count($prof)) {
2045                  if($prof[$cpt]["fonction"]=="ENS") {
2046                      $date=str_replace("-","",$prof[$cpt]["date_naissance"]);
2047                      $chaine="P".$prof[$cpt]["id"]."|".$prof[$cpt]["nom_usage"]."|".$prof[$cpt]["prenom"]."|".$date."|".$prof[$cpt]["sexe"];
2048                      if($fich) {
2049                          //fwrite($fich,$chaine."\n");
2050                          fwrite($fich,html_entity_decode($chaine)."\n");
2051                      }
2052                      my_echo($chaine."<br />\n");
2053                  }
2054                  $cpt++;
2055              }
2056              if($temoin_creation_fichiers!="non") {
2057                          fclose($fich);
2058                      }
2059      
2060              //my_echo("disk_total_space($dossiercsv)=".disk_total_space($dossiercsv)."<br />");
2061              if($temoin_creation_fichiers!="non") {
2062                  my_echo("<script type='text/javascript'>
2063      document.getElementById('id_f_wind_txt').style.display='';
2064      </script>");
2065              }
2066      
2067              my_echo("<p>Vous pouvez copier/coller ces lignes dans un fichier texte pour effectuer l'import des comptes profs.</p>\n");
2068              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2069              my_echo("</blockquote>\n");
2070      
2071              //my_echo("<a name='f_div'></a><h2>Génération d'un CSV du F_DIV pour SambaEdu3</h2>\n");
2072              //my_echo("<a name='f_div'></a><h3>Génération d'un CSV du F_DIV pour SambaEdu3</h3>\n");
2073              //my_echo("<a name='f_div'></a><h4>Génération d'un CSV du F_DIV pour SambaEdu3</h4>\n");
2074              my_echo("<a name='f_div'></a><h4>Génération d'un CSV du F_DIV");
2075              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2076              my_echo("</h4>\n");
2077              my_echo("<blockquote>\n");
2078              //if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/se3/f_div.txt","w+");}
2079              if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/f_div.txt","w+");}else{$fich=FALSE;}
2080              for($i=0;$i<count($divisions);$i++) {
2081                  $numind_pp="";
2082                  for($m=0;$m<count($prof);$m++) {
2083                      if(isset($prof[$m]["prof_princ"])) {
2084                          for($n=0;$n<count($prof[$m]["prof_princ"]);$n++) {
2085                              if($prof[$m]["prof_princ"][$n]["code_structure"]==$divisions[$i]["code"]) {
2086                                  $numind_pp="P".$prof[$m]["id"];
2087                              }
2088                          }
2089                      }
2090                  }
2091                  $chaine=$divisions[$i]["code"]."|".$divisions[$i]["code"]."|".$numind_pp;
2092                  if($fich) {
2093                      //fwrite($fich,$chaine."\n");
2094                      fwrite($fich,html_entity_decode($chaine)."\n");
2095                  }
2096                  my_echo($chaine."<br />\n");
2097              }
2098              if($temoin_creation_fichiers!="non") {
2099                          fclose($fich);
2100                      }
2101      
2102              //my_echo("disk_total_space($dossiercsv)=".disk_total_space($dossiercsv)."<br />");
2103      
2104              if($temoin_creation_fichiers!="non") {
2105                  my_echo("<script type='text/javascript'>
2106          document.getElementById('id_f_div_txt').style.display='';
2107      </script>");
2108              }
2109      
2110              if($temoin_au_moins_un_prof_princ!="oui") {
2111                  my_echo("<p>Il semble que votre fichier ne comporte pas l'information suivante:<br />Qui sont les profs principaux?<br />Cela n'empêche cependant pas l'import du CSV.</p>\n");
2112              }
2113              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2114              my_echo("</blockquote>\n");
2115      
2116      
2117      
2118      
2119              //my_echo("<a name='f_men'></a><h2>Génération d'un CSV du F_MEN pour SambaEdu3</h2>\n");
2120              //my_echo("<a name='f_men'></a><h3>Génération d'un CSV du F_MEN pour SambaEdu3</h3>\n");
2121              //my_echo("<a name='f_men'></a><h4>Génération d'un CSV du F_MEN pour SambaEdu3</h4>\n");
2122              my_echo("<a name='f_men'></a><h4>Génération d'un CSV du F_MEN");
2123              if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2124              my_echo("</h4>\n");
2125              my_echo("<blockquote>\n");
2126              if(($temoin_au_moins_une_matiere=="")||($temoin_au_moins_un_prof=="")) {
2127                  my_echo("<p>Votre fichier ne comporte pas suffisamment d'informations pour générer ce CSV.<br />Il faut que les emplois du temps soient remontés vers STS pour que le fichier XML permette de générer ce CSV.</p>\n");
2128              }
2129              else{
2130                  unset($tab_chaine);
2131                  $tab_chaine=array();
2132      
2133                  //if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/se3/f_men.txt","w+");}
2134                  if($temoin_creation_fichiers!="non") {$fich=fopen("$dossiercsv/f_men.txt","w+");}else{$fich=FALSE;}
2135                  for($i=0;$i<count($divisions);$i++) {
2136                      //$divisions[$i]["services"][$j]["code_matiere"]
2137                      $classe=$divisions[$i]["code"];
2138                      for($j=0;$j<count($divisions[$i]["services"]);$j++) {
2139                          $mat="";
2140                          for($m=0;$m<count($matiere);$m++) {
2141                              if($matiere[$m]["code"]==$divisions[$i]["services"][$j]["code_matiere"]) {
2142                                  $mat=$matiere[$m]["code_gestion"];
2143                              }
2144                          }
2145                          if($mat!="") {
2146                              for($k=0;$k<count($divisions[$i]["services"][$j]["enseignants"]);$k++) {
2147                                  $chaine=$mat."|".$classe."|P".$divisions[$i]["services"][$j]["enseignants"][$k]["id"];
2148                                  if($fich) {
2149                                      //fwrite($fich,$chaine."\n");
2150                                      fwrite($fich,html_entity_decode($chaine)."\n");
2151                                  }
2152                                  my_echo($chaine."<br />\n");
2153                                  $tab_chaine[]=$chaine;
2154                              }
2155                          }
2156                      }
2157                  }
2158      
2159      
2160                  //if($_POST['se3_groupes']=='yes') {
2161                  // PROBLEME: On crée des groupes avec tous les membres de la classe...
2162                      //my_echo("<hr width='200' />\n");
2163                      for($i=0;$i<count($groupes);$i++) {
2164                          unset($matimn);
2165                          $grocod=$groupes[$i]["code"];
2166                          //my_echo("<p>Groupe $i: \$grocod=$grocod<br />\n");
2167                          for($m=0;$m<count($matiere);$m++) {
2168                              //my_echo("\$matiere[$m][\"code\"]=".$matiere[$m]["code"]." et \$groupes[$i][\"code_matiere\"]=".$groupes[$i]["code_matiere"]."<br />\n");
2169                              //my_echo("\$matiere[$m][\"code\"]=".$matiere[$m]["code"]." et \$groupes[$i][\"service\"][0][\"code_matiere\"]=".$groupes[$i]["service"][0]["code_matiere"]."<br />\n");
2170      //+++++++++++++++++++++++++
2171      //+++++++++++++++++++++++++
2172      // PB: si on a un même groupe/regroupement pour plusieurs matières, on ne récupère que le premier
2173      // A FAIRE: Revoir le dispositif pour créer dans ce cas des groupes <NOM_GROUPE>_<MATIERE> ou <MATIERE>_<NOM_GROUPE>
2174      //+++++++++++++++++++++++++
2175      //+++++++++++++++++++++++++
2176                              //if(isset($groupes[$i]["code_matiere"])) {
2177                              //    if($matiere[$m]["code"]==$groupes[$i]["code_matiere"]) {
2178                              if(isset($groupes[$i]["service"][0]["code_matiere"])) {
2179                                  if($matiere[$m]["code"]==$groupes[$i]["service"][0]["code_matiere"]) {
2180                                      //$matimn=$programme[$k]["code_matiere"];
2181                                      $matimn=$matiere[$m]["code_gestion"];
2182                                      //my_echo("<b>Trouvé: matière n°$m: \$matimn=$matimn</b><br />\n");
2183                                  }
2184                              }
2185                          }
2186                          //$groupes[$i]["enseignant"][$m]["id"]
2187                          //$groupes[$i]["divisions"][$j]["code"]
2188                          if((isset($matimn))&&($matimn!="")) {
2189                              for($j=0;$j<count($groupes[$i]["divisions"]);$j++) {
2190                                  $elstco=$groupes[$i]["divisions"][$j]["code"];
2191                                  //my_echo("\$elstco=$elstco<br />\n");
2192                                  if(!isset($groupes[$i]["enseignant"])) {
2193                                      $chaine=$matimn."|".$elstco."|";
2194                                      $tab_chaine[]=$chaine;
2195                                  }
2196                                  else{
2197                                      if(count($groupes[$i]["enseignant"])==0) {
2198                                          //$chaine="$matimn;;$elstco");
2199                                          $chaine=$matimn."|".$elstco."|";
2200                                          /*
2201                                          if($fich) {
2202                                              fwrite($fich,html_entity_decode($chaine)."\n");
2203                                          }
2204                                          my_echo($chaine."<br />\n");
2205                                          */
2206                                          $tab_chaine[]=$chaine;
2207      
2208                                      }
2209                                      else{
2210                                          for($m=0;$m<count($groupes[$i]["enseignant"]);$m++) {
2211                                              $numind=$groupes[$i]["enseignant"][$m]["id"];
2212                                              //my_echo("$matimn;P$numind;$elstco<br />\n");
2213                                              //$chaine="$matimn;P$numind;$elstco";
2214                                              $chaine=$matimn."|".$elstco."|P".$numind;
2215                                              /*
2216                                              if($fich) {
2217                                                  fwrite($fich,html_entity_decode($chaine)."\n");
2218                                              }
2219                                              my_echo($chaine."<br />\n");
2220                                              */
2221                                              $tab_chaine[]=$chaine;
2222                                          }
2223                                      }
2224                                  }
2225                                  //my_echo($grocod.";".$groupes[$i]["divisions"][$j]["code"]."<br />\n");
2226                              }
2227                          }
2228                      }
2229                  //}
2230      
2231                  $tab2_chaine=array_unique($tab_chaine);
2232                  //for($i=0;$i<count($tab2_chaine);$i++) {
2233                  for($i=0;$i<count($tab_chaine);$i++) {
2234                      if(isset($tab2_chaine[$i])) {
2235                          if($tab2_chaine[$i]!="") {
2236                              if($fich) {
2237                                  fwrite($fich,html_entity_decode($tab2_chaine[$i])."\n");
2238                              }
2239                              my_echo($tab2_chaine[$i]."<br />\n");
2240                          }
2241                      }
2242                  }
2243                  if($fich) {
2244                      fclose($fich);
2245                  }
2246                  if($temoin_creation_fichiers!="non") {
2247                      //my_echo("disk_total_space($dossiercsv)=".disk_total_space($dossiercsv)."<br />");
2248                      my_echo("<script type='text/javascript'>
2249          document.getElementById('id_f_men_txt').style.display='';
2250      </script>");
2251                  }
2252      
2253              }
2254              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2255              my_echo("</blockquote>\n");
2256          }
2257      }
2258      else {
2259          //my_echo("<p>ERREUR lors de l'ouverture du fichier ".$sts_xml_file['name']." (<i>".$sts_xml_file['tmp_name']."</i>).</p>\n");
2260  
2261          my_echo("<script type='text/javascript'>
2262  document.getElementById('div_signalements').style.display='';
2263  document.getElementById('div_signalements').innerHTML=document.getElementById('div_signalements').innerHTML+'<br /><a href=\'#erreur_sts_file\'>Erreur</a> lors de l\'ouverture du fichier <b>$sts_xml_file</b>';
2264  </script>\n");
2265  
2266          my_echo("<p style='color:red'><a name='erreur_sts_file'></a>ERREUR lors de l'ouverture du fichier '$sts_xml_file'.</p>\n");
2267  
2268          my_echo("<div style='color:red;'>");
2269          foreach(libxml_get_errors() as $xml_error) {
2270              my_echo($xml_error->message."<br />");
2271          }
2272          my_echo("</div>");
2273  
2274          libxml_clear_errors();
2275      }
2276  
2277      if($temoin_creation_fichiers!="non") {
2278          my_echo("<script type='text/javascript'>
2279      document.getElementById('id_suppr_txt').style.display='';
2280  </script>");
2281      }
2282  
2283  
2284  
2285      // =========================================================
2286  
2287      // Création d'une sauvegarde:
2288      // Problème avec l'emplacement dans lequel www-se3 peut écrire...
2289      //if($fich=fopen("/var/se3/save/sauvegarde_ldap.sh","w+")) {
2290  
2291  /*
2292      if($fich=fopen("/var/remote_adm/sauvegarde_ldap.sh","w+")) {
2293          fwrite($fich,'#!/bin/bash
2294  date=$(date +%Y%m%d-%H%M%S)
2295  #dossier_svg="/var/se3/save/sauvegarde_ldap_avant_import"
2296  dossier_svg="/var/remote_adm/sauvegarde_ldap_avant_import"
2297  mkdir -p $dossier_svg
2298  
2299  BASEDN=$(cat /etc/ldap/ldap.conf | grep "^BASE" | tr "\t" " " | sed -e "s/ \{2,\}/ /g" | cut -d" " -f2)
2300  ROOTDN=$(cat /etc/ldap/slapd.conf | grep "^rootdn" | tr "\t" " " | cut -d\'"\' -f2)
2301  PASSDN=$(cat /etc/ldap.secret)
2302  
2303  #source /etc/ssmtp/ssmtp.conf
2304  
2305  echo "Erreur lors de la sauvegarde de précaution effectuée avant import.
2306  Le $date" > /tmp/erreur_svg_prealable_ldap_${date}.txt
2307  # Le fichier d erreur est généré quoi qu il arrive, mais il n est expédié qu en cas de problème de sauvegarde
2308  /usr/bin/ldapsearch -xLLL -D $ROOTDN -w $PASSDN > $dossier_svg/ldap_${date}.ldif || mail root -s "Erreur sauvegarde LDAP" < /tmp/erreur_svg_prealable_ldap_${date}.txt
2309  rm -f /tmp/erreur_svg_prealable_ldap_${date}.txt
2310  ');
2311          fclose($fich);
2312          exec("/bin/bash /var/se3/save/sauvegarde_ldap.sh",$retour);
2313      }
2314  */
2315  
2316          exec("/usr/bin/sudo $pathscripts/sauvegarde_ldap_avant_import.sh",$retour);
2317  
2318      // =========================================================
2319  
2320  
2321      if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2322  
2323      my_echo("</blockquote>\n");
2324  
2325  
2326  
2327      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
2328  
2329  
2330      $infos_corrections_gecos="";
2331  
2332      my_echo("<a name='profs_se3'></a>\n");
2333      my_echo("<a name='creer_profs'></a>\n");
2334      my_echo("<h3>Création des comptes professeurs");
2335      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2336      my_echo("</h3>\n");
2337      my_echo("<script type='text/javascript'>
2338      document.getElementById('id_creer_profs').style.display='';
2339  </script>");
2340      my_echo("<blockquote>\n");
2341      if((!isset($prof))||(count($prof)==0)) {
2342  
2343      }
2344      else {
2345          $cpt=0;
2346          while($cpt<count($prof)) {
2347              if($prof[$cpt]["fonction"]=="ENS") {
2348                  // Pour chaque prof:
2349                  //$chaine="P".$prof[$cpt]["id"]."|".$prof[$cpt]["nom_usage"]."|".$prof[$cpt]["prenom"]."|".$date."|".$prof[$cpt]["sexe"]
2350                  // Témoin d'échec de création du compte prof
2351                  $temoin_erreur_prof="";
2352                  $date=str_replace("-","",$prof[$cpt]["date_naissance"]);
2353                  $employeeNumber="P".$prof[$cpt]["id"];
2354                  if($tab=verif_employeeNumber($employeeNumber)) {
2355                      my_echo("<p>Uid existant pour employeeNumber=$employeeNumber: $tab[0]<br />\n");
2356                      $uid=$tab[0];
2357      
2358                      if($tab[-1]=="people") {
2359                          // ================================
2360                          // Vérification/correction du GECOS
2361                          if($corriger_gecos_si_diff=='y') {
2362                              $nom=remplace_accents(traite_espaces($prof[$cpt]["nom_usage"]));
2363                              $prenom=remplace_accents(traite_espaces($prof[$cpt]["prenom"]));
2364                              if($prof[$cpt]["sexe"]==1) {$sexe="M";}else{$sexe="F";}
2365                              $naissance=$date;
2366                              verif_et_corrige_gecos($uid,$nom,$prenom,$naissance,$sexe);
2367                          }
2368                          // ================================
2369      
2370                          // ================================
2371                          // Vérification/correction du givenName
2372                          if($corriger_givenname_si_diff=='y') {
2373                              $prenom=strtolower(remplace_accents(traite_espaces($prof[$cpt]["prenom"])));
2374                              //my_echo("Test de la correction du givenName: verif_et_corrige_givenname($uid,$prenom)<br />\n");
2375                              verif_et_corrige_givenname($uid,$prenom);
2376                          }
2377                          // ================================
2378      
2379                          // ================================
2380                          // Vérification/correction du pseudo
2381                          //if($annuelle=="y") {
2382                              if($controler_pseudo=='y') {
2383                                  $nom=remplace_accents(traite_espaces($prof[$cpt]["nom_usage"]));
2384                                  $prenom=strtolower(remplace_accents(traite_espaces($prof[$cpt]["prenom"])));
2385                                  verif_et_corrige_pseudo($uid,$nom,$prenom);
2386                              }
2387                          //}
2388                          // ================================
2389                      }
2390                      elseif($tab[-1]=="trash") {
2391                          // On restaure le compte de Trash puisqu'il y est avec le même employeeNumber
2392                          my_echo("Restauration du compte depuis la branche Trash: \n");
2393                          if(recup_from_trash($uid)) {
2394                              my_echo("<font color='green'>SUCCES</font>");
2395                          }
2396                          else {
2397                              my_echo("<font color='red'>ECHEC</font>");
2398                              $nb_echecs++;
2399                          }
2400                          my_echo(".<br />\n");
2401                      }
2402                  }
2403                  else{
2404                      my_echo("<p>Pas encore d'uid pour employeeNumber=$employeeNumber<br />\n");
2405      
2406                      //$prenom=remplace_accents($prof[$cpt]["prenom"]);
2407                      //$nom=remplace_accents($prof[$cpt]["nom_usage"]);
2408                      //$prenom=remplace_accents(traite_espaces($prof[$cpt]["prenom"]));
2409                      //$nom=remplace_accents(traite_espaces($prof[$cpt]["nom_usage"]));
2410                      $prenom=traite_espaces($prof[$cpt]["prenom"]);
2411                      $nom=traite_espaces($prof[$cpt]["nom_usage"]);
2412                      if($uid=verif_nom_prenom_sans_employeeNumber($nom,$prenom)) {
2413                          my_echo("$nom $prenom est dans l'annuaire sans employeeNumber: $uid<br />\n");
2414                          my_echo("Mise à jour avec l'employeeNumber $employeeNumber: \n");
2415                          //$comptes_avec_employeeNumber_mis_a_jour++;
2416      
2417                          if($simulation!="y") {
2418                              $attributs=array();
2419                              $attributs["employeeNumber"]=$employeeNumber;
2420                              if(modify_attribut ("uid=$uid", "people", $attributs, "add")) {
2421                                  my_echo("<font color='green'>SUCCES</font>");
2422                                  $comptes_avec_employeeNumber_mis_a_jour++;
2423                                  $tab_comptes_avec_employeeNumber_mis_a_jour[]=$uid;
2424                              }
2425                              else{
2426                                  my_echo("<font color='red'>ECHEC</font>");
2427                                  $nb_echecs++;
2428                              }
2429                              my_echo(".<br />\n");
2430                          }
2431                          else{
2432                              my_echo("<font color='blue'>SIMULATION</font>");
2433                              $comptes_avec_employeeNumber_mis_a_jour++;
2434                              $tab_comptes_avec_employeeNumber_mis_a_jour[]=$uid;
2435                          }
2436                      }
2437                      else{
2438                          my_echo("Il n'y a pas de $nom $prenom dans l'annuaire sans employeeNumber<br />\n");
2439                          my_echo("C'est donc un <b>nouveau compte</b>.<br />\n");
2440                          //$nouveaux_comptes++;
2441      
2442                          if($temoin_f_uid=='y') {
2443                              // On cherche une ligne correspondant à l'employeeNumber dans le F_UID.TXT
2444                              if($uid=get_uid_from_f_uid_file($employeeNumber)) {
2445                                  // On controle si ce login est deja employe
2446      
2447                                  $attribut=array("uid");
2448                                  $verif1=get_tab_attribut("people", "uid=$uid", $attribut);
2449                                  $verif2=get_tab_attribut("trash", "uid=$uid", $attribut);
2450                                  //if((count($verif1)>0)||(count($verif2)>0)) {
2451                                  if(count($verif1)>0) {
2452                                      // Le login proposé est déjà dans l'annuaire
2453                                      my_echo("Le login proposé <span style='color:red;'>$uid</span> est déjà dans l'annuaire (<i>branche People</i>).<br />\n");
2454                                      $uid="";
2455                                  }
2456                                  elseif(count($verif2)>0) {
2457                                      // Le login proposé est déjà dans l'annuaire
2458                                      my_echo("Le login proposé <span style='color:red;'>$uid</span> est déjà dans l'annuaire (<i>branche Trash</i>).<br />\n");
2459                                      $uid="";
2460                                  }
2461                                  else {
2462                                      my_echo("Ajout du professeur $prenom $nom (<i style='color:magenta;'>$uid</i>): ");
2463                                  }
2464                              }
2465      
2466                              if($uid=='') {
2467                                  // Création d'un uid:
2468                                  if(!$uid=creer_uid($nom,$prenom)) {
2469                                      $temoin_erreur_prof="o";
2470                                      my_echo("<font color='red'>ECHEC: Problème lors de la création de l'uid...</font><br />\n");
2471                                      if("$error"!="") {
2472                                          my_echo("<font color='red'>$error</font><br />\n");
2473                                      }
2474                                      $nb_echecs++;
2475                                  }
2476                                  else {
2477                                      my_echo("Ajout du professeur $prenom $nom (<i>$uid</i>): ");
2478                                  }
2479                              }
2480      
2481                              if(($uid!='')&&($temoin_erreur_prof!="o")) {
2482                                  if($prof[$cpt]["sexe"]==1) {$sexe="M";} else {$sexe="F";}
2483                                  $naissance=$date;
2484  
2485                                  switch ($pwdPolicy) {
2486                                      case 0:        // date de naissance
2487                                          $password=$naissance;
2488                                          break;
2489                                      case 1:        // semi-aleatoire
2490                                          $out=array();
2491                                          exec("/usr/share/se3/sbin/gen_pwd.sh -s", $out);
2492                                          $password=$out[0];
2493                                          break;
2494                                      case 2:        // aleatoire
2495                                          $out=array();
2496                                          exec("/usr/share/se3/sbin/gen_pwd.sh -a", $out);
2497                                          $password=$out[0];
2498                                          break;
2499                                  }
2500  
2501                                  if($simulation!="y") {
2502                                      if(add_user($uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber)) {
2503                                          my_echo("<font color='green'>SUCCES</font>");
2504                                          $tab_nouveaux_comptes[]=$uid;
2505                                          $listing[$nouveaux_comptes]['nom']="$nom";
2506                                          $listing[$nouveaux_comptes]['pre']="$prenom";
2507                                          $listing[$nouveaux_comptes]['cla']="prof";
2508                                          $listing[$nouveaux_comptes]['uid']="$uid";
2509                                          $listing[$nouveaux_comptes]['pwd']="$password";
2510                                          $nouveaux_comptes++;
2511                                      }
2512                                      else{
2513                                          my_echo("<font color='red'>ECHEC</font>");
2514                                          $nb_echecs++;
2515                                          $temoin_erreur_prof="o";
2516                                      }
2517                                  }
2518                                  else{
2519                                      my_echo("<font color='blue'>SIMULATION</font>");
2520                                      $nouveaux_comptes++;
2521                                      $tab_nouveaux_comptes[]=$uid;
2522                                  }
2523                                  my_echo("<br />\n");
2524                              }
2525                          }
2526                          else {
2527                              // On n'a pas de F_UID.TXT pour imposer des logins
2528      
2529                              // Création d'un uid:
2530                              if(!$uid=creer_uid($nom,$prenom)) {
2531                                  $temoin_erreur_prof="o";
2532                                  my_echo("<font color='red'>ECHEC: Problème lors de la création de l'uid...</font><br />\n");
2533                                  if("$error"!="") {
2534                                      my_echo("<font color='red'>$error</font><br />\n");
2535                                  }
2536                                  $nb_echecs++;
2537                              }
2538                              else{
2539                                  //$sexe=$prof[$cpt]["sexe"];
2540                                  if($prof[$cpt]["sexe"]==1) {$sexe="M";}else{$sexe="F";}
2541                                  $naissance=$date;
2542  
2543                                  switch ($pwdPolicy) {
2544                                      case 0:        // date de naissance
2545                                          $password=$naissance;
2546                                          break;
2547                                      case 1:        // semi-aleatoire
2548                                          $out=array();
2549                                          exec("/usr/share/se3/sbin/gen_pwd.sh -s", $out);
2550                                          $password=$out[0];
2551                                          break;
2552                                      case 2:        // aleatoire
2553                                          $out=array();
2554                                          exec("/usr/share/se3/sbin/gen_pwd.sh -a", $out);
2555                                          $password=$out[0];
2556                                          break;
2557                                  }
2558                                  my_echo("Ajout du professeur $prenom $nom (<i>$uid</i>): ");
2559  
2560                                  if($simulation!="y") {
2561                                      if(add_user($uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber)) {
2562                                          my_echo("<font color='green'>SUCCES</font>");
2563                                          $tab_nouveaux_comptes[]=$uid;
2564                                          $listing[$nouveaux_comptes]['nom']="$nom";
2565                                          $listing[$nouveaux_comptes]['pre']="$prenom";
2566                                          $listing[$nouveaux_comptes]['cla']="prof";
2567                                          $listing[$nouveaux_comptes]['uid']="$uid";
2568                                          $listing[$nouveaux_comptes]['pwd']="$password";
2569                                          $nouveaux_comptes++;
2570                                      }
2571                                      else{
2572                                          my_echo("<font color='red'>ECHEC</font>");
2573                                          $nb_echecs++;
2574                                          $temoin_erreur_prof="o";
2575                                      }
2576                                  }
2577                                  else{
2578                                      my_echo("<font color='blue'>SIMULATION</font>");
2579                                      $nouveaux_comptes++;
2580                                      $tab_nouveaux_comptes[]=$uid;
2581                                  }
2582                                  my_echo("<br />\n");
2583                              }
2584                          }
2585                      }
2586                  }
2587                  if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
2588      
2589                  if($temoin_erreur_prof!="o") {
2590                      // Ajout au groupe Profs:
2591                      $attribut=array("memberuid");
2592                      $memberUid=get_tab_attribut("groups", "(&(cn=Profs)(memberuid=$uid))", $attribut);
2593                      if(count($memberUid)>0) {
2594                          my_echo("$uid est déjà membre du groupe Profs.<br />\n");
2595                      }
2596                      else{
2597                          my_echo("Ajout de $uid au groupe Profs: ");
2598                          if($simulation!="y") {
2599                              $attributs=array();
2600                              $attributs["memberuid"]=$uid;
2601                              if(modify_attribut ("cn=Profs", "groups", $attributs, "add")) {
2602                                  my_echo("<font color='green'>SUCCES</font>");
2603                              }
2604                              else{
2605                                  my_echo("<font color='red'>ECHEC</font>");
2606                                  $nb_echecs++;
2607                              }
2608                          }
2609                          else{
2610                              my_echo("<font color='blue'>SIMULATION</font>");
2611                          }
2612                          my_echo(".<br />\n");
2613                      }
2614                  }
2615                  //$chaine="P".$prof[$cpt]["id"]."|".$prof[$cpt]["nom_usage"]."|".$prof[$cpt]["prenom"]."|".$date."|".$prof[$cpt]["sexe"];
2616              }
2617              $cpt++;
2618          }
2619      }
2620  
2621      //if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2622      //my_echo("</blockquote>\n");
2623  
2624  
2625      // Récupération des comptes de no_Trash_Profs
2626      /*
2627      $attribut=array("memberuid");
2628      $membre_no_Trash_Profs=get_tab_attribut("groups", "cn=no_Trash_Profs", $attribut);
2629      if(count($membre_no_Trash_Profs)>0) {
2630          my_echo("<h3>Comptes à préserver de la corbeille (Profs)");
2631          if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2632          my_echo("</h3>\n");
2633  
2634          my_echo("<blockquote>\n");
2635          for($loop=0;$loop<count($membre_no_Trash_Profs);$loop++) {
2636              $uid=$membre_no_Trash_Profs[$loop];
2637              my_echo("<p>Contrôle du membre $uid du groupe no_Trash_Profs: <br />");
2638  
2639              // Le membre de no_Trash_Profs existe-t-il encore dans People:
2640              // Si oui, on contrôle s'il est dans Profs... si nécessaire on l'y met
2641              // Sinon, on le supprime de no_Trash_Profs
2642              $attribut=array("uid");
2643              $compte_existe=get_tab_attribut("people", "uid=$uid", $attribut);
2644              if(count($compte_existe)==0) {
2645                  // Le compte n'existe plus... et on a oublié de nettoyer no_Trash_Profs
2646                  // Normalement, cela n'arrive pas: Lors de la suppression d'un compte, le ménage est normalement fait dans les groupes
2647  
2648                  my_echo("Le compte $uid n'existe plus.<br />Suppression de l'appartenance au groupe no_Trash_Profs: ");
2649                  if($simulation!="y") {
2650                      $attributs=array();
2651                      $attributs["memberuid"]=$uid;
2652                      if(modify_attribut ("cn=Profs", "groups", $attributs, "del")) {
2653                          my_echo("<font color='green'>SUCCES</font>");
2654                      }
2655                      else{
2656                          my_echo("<font color='red'>ECHEC</font>");
2657                          $nb_echecs++;
2658                      }
2659                  }
2660                  else{
2661                      my_echo("<font color='blue'>SIMULATION</font>");
2662                  }
2663                  my_echo(".<br />\n");
2664  
2665  
2666              }
2667              else {
2668                  // On contrôle si le compte est membre du groupe Profs
2669                  $attribut=array("memberuid");
2670                  $memberUid=get_tab_attribut("groups", "(&(cn=Profs)(memberuid=$uid))", $attribut);
2671                  if(count($memberUid)>0) {
2672                      my_echo("$uid est déjà membre du groupe Profs.<br />\n");
2673                  }
2674                  else{
2675                      my_echo("Ajout de $uid au groupe Profs: ");
2676                      if($simulation!="y") {
2677                          $attributs=array();
2678                          $attributs["memberuid"]=$uid;
2679                          if(modify_attribut ("cn=Profs", "groups", $attributs, "add")) {
2680                              my_echo("<font color='green'>SUCCES</font>");
2681                          }
2682                          else{
2683                              my_echo("<font color='red'>ECHEC</font>");
2684                              $nb_echecs++;
2685                          }
2686                      }
2687                      else{
2688                          my_echo("<font color='blue'>SIMULATION</font>");
2689                      }
2690                      my_echo(".<br />\n");
2691                  }
2692              }
2693          }
2694          my_echo("</blockquote>\n");
2695      }
2696      */
2697  
2698      if(count($tab_no_Trash_prof)>0) {
2699          my_echo("<h3>Comptes à préserver de la corbeille (Profs)");
2700          if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2701          my_echo("</h3>\n");
2702  
2703          my_echo("<blockquote>\n");
2704          for($loop=0;$loop<count($tab_no_Trash_prof);$loop++) {
2705              $uid=$tab_no_Trash_prof[$loop];
2706              my_echo("\$uid=$uid<br />");
2707              if($uid!="") {
2708                  my_echo("<p>Contrôle du membre $uid titulaire du droit no_Trash_user: <br />");
2709  
2710                  // Le membre de no_Trash_user existe-t-il encore dans People:
2711                  // Si oui, on contrôle s'il est dans Profs... si nécessaire on l'y met
2712                  // Sinon, on le supprime de no_Trash_user
2713                  $attribut=array("uid");
2714                  $compte_existe=get_tab_attribut("people", "uid=$uid", $attribut);
2715                  if(count($compte_existe)==0) {
2716                      // Le compte n'existe plus... et on a oublié de nettoyer no_Trash_user
2717  
2718                      my_echo("Le compte $uid n'existe plus.<br />Suppression de l'appartenance au droit no_Trash_user: ");
2719                      if($simulation!="y") {
2720                          $attributs=array();
2721                          $attributs["member"]="uid=$uid,".$dn["people"];
2722  
2723                          if(modify_attribut("cn=no_Trash_user", "rights", $attributs, "del")) {
2724                              my_echo("<font color='green'>SUCCES</font>");
2725                          }
2726                          else{
2727                              my_echo("<font color='red'>ECHEC</font>");
2728                              $nb_echecs++;
2729                          }
2730                      }
2731                      else{
2732                          my_echo("<font color='blue'>SIMULATION</font>");
2733                      }
2734                      my_echo(".<br />\n");
2735                  }
2736                  else {
2737                      // On contrôle si le compte est membre du groupe Profs
2738                      $attribut=array("memberuid");
2739                      $memberUid=get_tab_attribut("groups", "(&(cn=Profs)(memberuid=$uid))", $attribut);
2740                      if(count($memberUid)>0) {
2741                          my_echo("$uid est déjà membre du groupe Profs.<br />\n");
2742                      }
2743                      else{
2744                          my_echo("$uid n'est plus membre du groupe Profs.<br />Retablissement de l'appartenance de $uid au groupe Profs: ");
2745                          if($simulation!="y") {
2746                              $attributs=array();
2747                              $attributs["memberuid"]=$uid;
2748                              if(modify_attribut ("cn=Profs", "groups", $attributs, "add")) {
2749                                  my_echo("<font color='green'>SUCCES</font>");
2750                              }
2751                              else{
2752                                  my_echo("<font color='red'>ECHEC</font>");
2753                                  $nb_echecs++;
2754                              }
2755                          }
2756                          else{
2757                              my_echo("<font color='blue'>SIMULATION</font>");
2758                          }
2759                          my_echo(".<br />\n");
2760                      }
2761                  }
2762              }
2763          }
2764          my_echo("</blockquote>\n");
2765      }
2766  
2767  
2768      if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
2769      my_echo("</blockquote>\n");
2770  
2771  
2772  
2773      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
2774  
2775      my_echo("<a name='creer_eleves'></a>\n");
2776      my_echo("<a name='eleves_se3'></a>\n");
2777      //my_echo("<h2>Création des comptes élèves</h2>\n");
2778      //my_echo("<h3>Création des comptes élèves</h3>\n");
2779      my_echo("<h3>Création des comptes élèves");
2780      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
2781      my_echo("</h3>\n");
2782      my_echo("<script type='text/javascript'>
2783      document.getElementById('id_creer_eleves').style.display='';
2784  </script>");
2785      my_echo("<blockquote>\n");
2786      $tab_classe=array();
2787      $cpt_classe=-1;
2788      for($k=0;$k<count($tabnumero);$k++) {
2789          $temoin_erreur_eleve="n";
2790  
2791          $numero=$tabnumero[$k];
2792          /*
2793          $chaine="";
2794          $chaine.=$eleve[$numero]["numero"];
2795          $chaine.="|";
2796          $chaine.=remplace_accents($eleve[$numero]["nom"]);
2797          $chaine.="|";
2798          $chaine.=remplace_accents($eleve[$numero]["prenom"]);
2799          $chaine.="|";
2800          $chaine.=$eleve[$numero]["date"];
2801          $chaine.="|";
2802          $chaine.=$eleve[$numero]["sexe"];
2803          $chaine.="|";
2804          $chaine.=$eleve[$numero]["division"];
2805          */
2806          /*
2807          if($fich) {
2808              //fwrite($fich,$chaine."\n");
2809              fwrite($fich,html_entity_decode($chaine)."\n");
2810          }
2811          */
2812  
2813  
2814          // La classe existe-t-elle?
2815          $div=$eleve[$numero]["division"];
2816          //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div)));
2817          $div=apostrophes_espaces_2_underscore(remplace_accents($div));
2818          $attribut=array("cn");
2819          //$cn_classe=get_tab_attribut("groups", "cn=Classe_$div", $attribut);
2820          $cn_classe=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut);
2821          if(count($cn_classe)==0) {
2822              // La classe n'existe pas dans l'annuaire.
2823  
2824              // LE TEST CI-DESSOUS NE CONVIENT PLUS AVEC UN TABLEAU A PLUSIEURS DIMENSIONS... A CORRIGER
2825              //if(!in_array($div,$tab_classe)) {
2826  
2827              $temoin_classe="";
2828              for($i=0;$i<count($tab_classe);$i++) {
2829                  if($tab_classe[$i]["nom"]==$div) {
2830                      $temoin_classe="y";
2831                  }
2832              }
2833  
2834              if($temoin_classe!="y") {
2835                  // On ajoute la classe à créér.
2836                  $cpt_classe++;
2837                  my_echo("<p>Nouvelle classe: $div</p>\n");
2838                  $tab_classe[$cpt_classe]=array();
2839                  $tab_classe[$cpt_classe]["nom"]=$div;
2840                  $tab_classe[$cpt_classe]["creer_classe"]="y";
2841                  $tab_classe[$cpt_classe]["eleves"]=array();
2842              }
2843          }
2844          else{
2845              // La classe existe déjà dans l'annuaire.
2846  
2847              $temoin_classe="";
2848              for($i=0;$i<count($tab_classe);$i++) {
2849                  if($tab_classe[$i]["nom"]==$div) {
2850                      $temoin_classe="y";
2851                  }
2852              }
2853  
2854              if($temoin_classe!="y") {
2855                  // On ajoute la classe à créér.
2856                  $cpt_classe++;
2857                  my_echo("<p>Classe existante: $div</p>\n");
2858                  $tab_classe[$cpt_classe]=array();
2859                  $tab_classe[$cpt_classe]["nom"]=$div;
2860                  $tab_classe[$cpt_classe]["creer_classe"]="n";
2861                  $tab_classe[$cpt_classe]["eleves"]=array();
2862              }
2863          }
2864  
2865  
2866          // Pour chaque élève:
2867          $employeeNumber=$eleve[$numero]["numero"];
2868          if($tab=verif_employeeNumber($employeeNumber)) {
2869              my_echo("<p>Uid existant pour employeeNumber=$employeeNumber: $tab[0]<br />\n");
2870              $uid=$tab[0];
2871  
2872              if($tab[-1]=="people") {
2873                  // ================================
2874                  // Vérification/correction du GECOS
2875                  if($corriger_gecos_si_diff=='y') {
2876                      $nom=remplace_accents(traite_espaces($eleve[$numero]["nom"]));
2877                      $prenom=remplace_accents(traite_espaces($eleve[$numero]["prenom"]));
2878                      $sexe=$eleve[$numero]["sexe"];
2879                      $naissance=$eleve[$numero]["date"];
2880                      verif_et_corrige_gecos($uid,$nom,$prenom,$naissance,$sexe);
2881                  }
2882                  // ================================
2883  
2884                  // ================================
2885                  // Vérification/correction du givenName
2886                  if($corriger_givenname_si_diff=='y') {
2887                      $prenom=strtolower(remplace_accents(traite_espaces($eleve[$numero]["prenom"])));
2888                      //my_echo("Test de la correction du givenName: verif_et_corrige_givenname($uid,$prenom)<br />\n");
2889                      verif_et_corrige_givenname($uid,$prenom);
2890                  }
2891                  // ================================
2892  
2893                  // ================================
2894                  // Vérification/correction du pseudo
2895                  //if($annuelle=="y") {
2896                      if($controler_pseudo=='y') {
2897                          $nom=remplace_accents(traite_espaces($eleve[$numero]["nom"]));
2898                          $prenom=strtolower(remplace_accents(traite_espaces($eleve[$numero]["prenom"])));
2899                          verif_et_corrige_pseudo($uid,$nom,$prenom);
2900                      }
2901                  //}
2902                  // ================================
2903              }
2904              elseif($tab[-1]=="trash") {
2905                  // On restaure le compte de Trash puisqu'il y est avec le même employeeNumber
2906                  my_echo("Restauration du compte depuis la branche Trash: \n");
2907                  if(recup_from_trash($uid)) {
2908                      my_echo("<font color='green'>SUCCES</font>");
2909                  }
2910                  else {
2911                      my_echo("<font color='red'>ECHEC</font>");
2912                      $nb_echecs++;
2913                  }
2914                  my_echo(".<br />\n");
2915              }
2916          }
2917          else{
2918              my_echo("<p>Pas encore d'uid pour employeeNumber=$employeeNumber<br />\n");
2919  
2920              //$prenom=remplace_accents($eleve[$numero]["prenom"]);
2921              //$nom=remplace_accents($eleve[$numero]["nom"]);
2922              //$prenom=remplace_accents(traite_espaces($eleve[$numero]["prenom"]));
2923              //$nom=remplace_accents(traite_espaces($eleve[$numero]["nom"]));
2924              $prenom=traite_espaces($eleve[$numero]["prenom"]);
2925              $nom=traite_espaces($eleve[$numero]["nom"]);
2926              if($uid=verif_nom_prenom_sans_employeeNumber($nom,$prenom)) {
2927                  my_echo("$nom $prenom est dans l'annuaire sans employeeNumber: $uid<br />\n");
2928                  my_echo("Mise à jour avec l'employeeNumber $employeeNumber: \n");
2929                  //$comptes_avec_employeeNumber_mis_a_jour++;
2930  
2931                  if($simulation!="y") {
2932                      $attributs=array();
2933                      $attributs["employeeNumber"]=$employeeNumber;
2934                      if(modify_attribut ("uid=$uid", "people", $attributs, "add")) {
2935                          my_echo("<font color='green'>SUCCES</font>");
2936                          $comptes_avec_employeeNumber_mis_a_jour++;
2937                          $tab_comptes_avec_employeeNumber_mis_a_jour[]=$uid;
2938                      }
2939                      else{
2940                          my_echo("<font color='red'>ECHEC</font>");
2941                          $nb_echecs++;
2942                      }
2943                  }
2944                  else{
2945                      my_echo("<font color='blue'>SIMULATION</font>");
2946                      $comptes_avec_employeeNumber_mis_a_jour++;
2947                      $tab_comptes_avec_employeeNumber_mis_a_jour[]=$uid;
2948                  }
2949                  my_echo(".<br />\n");
2950              }
2951              else{
2952                  my_echo("Il n'y a pas de $nom $prenom dans l'annuaire sans employeeNumber<br />\n");
2953                  my_echo("C'est donc un <b>nouveau compte</b>.<br />\n");
2954                  //$nouveaux_comptes++;
2955  
2956                  $uid="";
2957                  if($temoin_f_uid=='y') {
2958                      // On cherche une ligne correspondant à l'employeeNumber dans le F_UID.TXT
2959                      if($uid=get_uid_from_f_uid_file($employeeNumber)) {
2960                          // On controle si ce login est deja employe
2961  
2962                          $attribut=array("uid");
2963                          $verif1=get_tab_attribut("people", "uid=$uid", $attribut);
2964                          $verif2=get_tab_attribut("trash", "uid=$uid", $attribut);
2965                          //if((count($verif1)>0)||(count($verif2)>0)) {
2966                          if(count($verif1)>0) {
2967                              // Le login proposé est déjà dans l'annuaire
2968                              my_echo("Le login proposé <span style='color:red;'>$uid</span> est déjà dans l'annuaire (<i>branche People</i>).<br />\n");
2969                              $uid="";
2970                          }
2971                          elseif(count($verif2)>0) {
2972                              // Le login proposé est déjà dans l'annuaire
2973                              my_echo("Le login proposé <span style='color:red;'>$uid</span> est déjà dans l'annuaire (<i>branche Trash</i>).<br />\n");
2974                              $uid="";
2975                          }
2976                          else {
2977                              my_echo("Ajout de l'élève $prenom $nom (<i style='color:magenta;'>$uid</i>): ");
2978                          }
2979                      }
2980  
2981                      if($uid=='') {
2982                          // Création d'un uid:
2983                          if(!$uid=creer_uid($nom,$prenom)) {
2984                              $temoin_erreur_eleve="o";
2985                              my_echo("<font color='red'>ECHEC: Problème lors de la création de l'uid...</font><br />\n");
2986                              if("$error"!="") {
2987                                  my_echo("<font color='red'>$error</font><br />\n");
2988                              }
2989                              $nb_echecs++;
2990                          }
2991                          else {
2992                              my_echo("Ajout de l'élève $prenom $nom (<i>$uid</i>): ");
2993                          }
2994                      }
2995  
2996                      if(($uid!='')&&($temoin_erreur_eleve!="o")) {
2997                          $sexe=$eleve[$numero]["sexe"];
2998                          $naissance=$eleve[$numero]["date"];
2999                          $ele_div=$eleve[$numero]['division'];
3000  
3001                          switch ($pwdPolicy) {
3002                              case 0:        // date de naissance
3003                                  $password=$naissance;
3004                                  break;
3005                              case 1:        // semi-aleatoire
3006                                  $out=array();
3007                                  exec("/usr/share/se3/sbin/gen_pwd.sh -s", $out);
3008                                  $password=$out[0];
3009                                  break;
3010                              case 2:        // aleatoire
3011                                  $out=array();
3012                                  exec("/usr/share/se3/sbin/gen_pwd.sh -a", $out);
3013                                  $password=$out[0];
3014                                  break;
3015                          }
3016  
3017                          if($simulation!="y") {
3018                              # DBG system ("echo 'add_suser : $uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber' >> /tmp/comptes.log");
3019                              if(add_user($uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber)) {
3020                                  my_echo("<font color='green'>SUCCES</font>");
3021                                  $tab_nouveaux_comptes[]=$uid;
3022                                  $listing[$nouveaux_comptes]['nom']="$nom";
3023                                  $listing[$nouveaux_comptes]['pre']="$prenom";
3024                                  $listing[$nouveaux_comptes]['cla']="$ele_div";
3025                                  $listing[$nouveaux_comptes]['uid']="$uid";
3026                                  $listing[$nouveaux_comptes]['pwd']="$password";
3027                                  $nouveaux_comptes++;
3028                              }
3029                              else{
3030                                  my_echo("<font color='red'>ECHEC</font>");
3031                                  $temoin_erreur_eleve="o";
3032                                  $nb_echecs++;
3033                              }
3034                          }
3035                          else{
3036                              my_echo("<font color='blue'>SIMULATION</font>");
3037                              $nouveaux_comptes++;
3038                              $tab_nouveaux_comptes[]=$uid;
3039                          }
3040                          my_echo("<br />\n");
3041                      }
3042                  }
3043                  else {
3044                      // Pas de F_UID.TXT fourni pour imposer des logins.
3045  
3046                      /*
3047                      if(strtolower($nom)=="andro") {
3048                      $f_tmp=fopen("/tmp/debug_accents.txt","a+");
3049                      fwrite($f_tmp,"creer_uid($nom,$prenom)\n");
3050                      fclose($f_tmp);
3051                      }
3052                      */
3053  
3054                      // Création d'un uid:
3055                      if(!$uid=creer_uid($nom,$prenom)) {
3056                          $temoin_erreur_eleve="o";
3057                          my_echo("<font color='red'>ECHEC: Problème lors de la création de l'uid...</font><br />\n");
3058                          if("$error"!="") {
3059                              my_echo("<font color='red'>$error</font><br />\n");
3060                          }
3061                          $nb_echecs++;
3062                      }
3063                      else{
3064                          /*
3065                          // Récupération du premier uidNumber libre: C'EST FAIT DANS add_user()
3066                          $uidNumber=get_first_free_uidNumber();
3067                          // AJOUTER DES TESTS SUR LE FAIT QU'IL RESTE OU NON DES uidNumber dispo...
3068                          */
3069                          $sexe=$eleve[$numero]["sexe"];
3070                          $naissance=$eleve[$numero]["date"];
3071                          $ele_div=$eleve[$numero]["division"];
3072  
3073                          switch ($pwdPolicy) {
3074                              case 0:        // date de naissance
3075                                  $password=$naissance;
3076                                  break;
3077                              case 1:        // semi-aleatoire
3078                                  $out=array();
3079                                  exec("/usr/share/se3/sbin/gen_pwd.sh -s", $out);
3080                                  $password=$out[0];
3081                                  break;
3082                              case 2:        // aleatoire
3083                                  $out=array();
3084                                  exec("/usr/share/se3/sbin/gen_pwd.sh -a", $out);
3085                                  $password=$out[0];
3086                                  break;
3087                          }
3088  
3089                          my_echo("Ajout de l'élève $prenom $nom (<i>$uid</i>): ");
3090                          if($simulation!="y") {
3091                              # DBG system ("echo 'add_suser : $uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber' >> /tmp/comptes.log");
3092                              /*
3093                              if(strtolower($nom)=="andro") {
3094                              $f_tmp=fopen("/tmp/debug_accents.txt","a+");
3095                              fwrite($f_tmp,"add_user($uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber)\n");
3096                              fclose($f_tmp);
3097                              }
3098                              */
3099                              if(add_user($uid,$nom,$prenom,$sexe,$naissance,$password,$employeeNumber)) {
3100                                  my_echo("<font color='green'>SUCCES</font>");
3101                                  $tab_nouveaux_comptes[]=$uid;
3102                                  $listing[$nouveaux_comptes]['nom']="$nom";
3103                                  $listing[$nouveaux_comptes]['pre']="$prenom";
3104                                  $listing[$nouveaux_comptes]['cla']="$ele_div";
3105                                  $listing[$nouveaux_comptes]['uid']="$uid";
3106                                  $listing[$nouveaux_comptes]['pwd']="$password";
3107                                  $nouveaux_comptes++;
3108                              }
3109                              else{
3110                                  my_echo("<font color='red'>ECHEC</font>");
3111                                  $temoin_erreur_eleve="o";
3112                                  $nb_echecs++;
3113                              }
3114                          }
3115                          else{
3116                              my_echo("<font color='blue'>SIMULATION</font>");
3117                              $nouveaux_comptes++;
3118                              $tab_nouveaux_comptes[]=$uid;
3119                          }
3120                          my_echo("<br />\n");
3121                      }
3122                  }
3123              }
3124          }
3125          if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
3126  
3127          if($temoin_erreur_eleve!="o") {
3128              // Ajout au groupe Eleves:
3129              $attribut=array("memberuid");
3130              $memberUid=get_tab_attribut("groups", "(&(cn=Eleves)(memberuid=$uid))", $attribut);
3131              if(count($memberUid)>0) {
3132                  my_echo("$uid est déjà membre du groupe Eleves.<br />\n");
3133              }
3134              else{
3135                  my_echo("Ajout de $uid au groupe Eleves: ");
3136                  $attributs=array();
3137                  $attributs["memberuid"]=$uid;
3138                  if($simulation!="y") {
3139                      if(modify_attribut ("cn=Eleves", "groups", $attributs, "add")) {
3140                          my_echo("<font color='green'>SUCCES</font>");
3141                      }
3142                      else{
3143                          my_echo("<font color='red'>ECHEC</font>");
3144                          $nb_echecs++;
3145                      }
3146                  }
3147                  else{
3148                      my_echo("<font color='blue'>SIMULATION</font>");
3149                  }
3150                  my_echo(".<br />\n");
3151              }
3152  
3153              // Témoin pour repérer les appartenances à plusieurs classes
3154              $temoin_plusieurs_classes="n";
3155  
3156              // Ajout de l'élève au tableau de la classe:
3157              $attribut=array("memberuid");
3158              $memberUid=get_tab_attribut("groups", "(&(cn=Classe_".$prefix."$div)(memberuid=$uid))", $attribut);
3159              if(count($memberUid)>0) {
3160                  my_echo("$uid est déjà membre de la classe $div.<br />\n");
3161  
3162                  // Ajout d'un test:
3163                  // L'élève est-il membre d'autres classes.
3164                  $attribut=array("memberuid");
3165                  $test_memberUid=get_tab_attribut("groups", "(&(cn=Classe_*)(memberuid=$uid))", $attribut);
3166                  if(count($test_memberUid)>1) {
3167                      $temoin_plusieurs_classes="y";
3168                  }
3169              }
3170              else{
3171                  my_echo("Ajout de $uid au tableau de la classe $div.<br />\n");
3172                  //$tab_classe[$cpt_classe]["eleves"][]=$uid;
3173                  // PROBLEME: Avec l'import XML, les élèves ne sont jamais triés par classes... et ce n'est le cas dans l'import CSV que si on a fait le tri dans ce sens
3174                  // Recherche de l'indice dans tab_classe
3175                  $ind_classe=-1;
3176                  for($i=0;$i<count($tab_classe);$i++) {
3177                      if($tab_classe[$i]["nom"]==$div) {
3178                          $ind_classe=$i;
3179                      }
3180                  }
3181                  if($ind_classe!=-1) {
3182                      $tab_classe[$ind_classe]["eleves"][]=$uid;
3183                  }
3184  
3185  
3186                  // Ajout d'un test:
3187                  // L'élève est-il membre d'autres classes.
3188                  $attribut=array("memberuid");
3189                  $test_memberUid=get_tab_attribut("groups", "(&(cn=Classe_*)(memberuid=$uid))", $attribut);
3190                  if(count($test_memberUid)>0) {
3191                      $temoin_plusieurs_classes="y";
3192                  }
3193              }
3194  
3195              // Ajout d'un test:
3196              // L'élève est-il membre d'autres classes.
3197              if($temoin_plusieurs_classes=="y") {
3198                  $attribut=array("cn");
3199                  $cn_classes_de_l_eleve=get_tab_attribut("groups", "(&(cn=Classe_*)(memberuid=$uid))", $attribut);
3200                  if(count($cn_classes_de_l_eleve)>0) {
3201                      for($loop=0;$loop<count($cn_classes_de_l_eleve);$loop++) {
3202                          // Exclure Classe_.$prefix.$div
3203                          if($cn_classes_de_l_eleve[$loop]!="Classe_".$prefix.$div) {
3204                              my_echo("Suppression de l'appartenance de $uid à la classe ".$cn_classes_de_l_eleve[$loop]." : ");
3205  
3206                              unset($attr);
3207                              $attr=array();
3208                              $attr["memberuid"]=$uid;
3209                              if($simulation!="y") {
3210                                  if(modify_attribut ("cn=".$cn_classes_de_l_eleve[$loop], "groups", $attr, "del")) {
3211                                      my_echo("<font color='green'>SUCCES</font>");
3212                                  }
3213                                  else{
3214                                      my_echo("<font color='red'>ECHEC</font>");
3215                                      $nb_echecs++;
3216                                  }
3217                              }
3218                              else{
3219                                  my_echo("<font color='blue'>SIMULATION</font>");
3220                              }
3221                              my_echo(".<br />\n");
3222                          }
3223                      }
3224                  }
3225              }
3226          }
3227  
3228  
3229          //my_echo("<font color='green'>".$chaine."</font><br />\n");
3230  
3231          my_echo("</p>\n");
3232      }
3233  
3234  
3235  
3236      if(count($tab_no_Trash_eleve)>0) {
3237          my_echo("<h3>Comptes à préserver de la corbeille (Eleves)");
3238          if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
3239          my_echo("</h3>\n");
3240  
3241          my_echo("<blockquote>\n");
3242          for($loop=0;$loop<count($tab_no_Trash_eleve);$loop++) {
3243              $uid=$tab_no_Trash_eleve[$loop];
3244              my_echo("\$uid=$uid<br />");
3245              if($uid!="") {
3246                  my_echo("<p>Contrôle du membre $uid titulaire du droit no_Trash_user: <br />");
3247  
3248                  // Le membre de no_Trash_user existe-t-il encore dans People:
3249                  // Si oui, on contrôle s'il est dans Eleves... si nécessaire on l'y met
3250                  // Sinon, on le supprime de no_Trash_user
3251                  $attribut=array("uid");
3252                  $compte_existe=get_tab_attribut("people", "uid=$uid", $attribut);
3253                  if(count($compte_existe)==0) {
3254                      // Le compte n'existe plus... et on a oublié de nettoyer no_Trash_user
3255  
3256                      my_echo("Le compte $uid n'existe plus.<br />Suppression de l'association au droit no_Trash_user: ");
3257                      if($simulation!="y") {
3258                          $attributs=array();
3259                          $attributs["member"]="uid=$uid,".$dn["people"];
3260  
3261                          if(modify_attribut("cn=no_Trash_user", "rights", $attributs, "del")) {
3262                              my_echo("<font color='green'>SUCCES</font>");
3263                          }
3264                          else{
3265                              my_echo("<font color='red'>ECHEC</font>");
3266                              $nb_echecs++;
3267                          }
3268                      }
3269                      else{
3270                          my_echo("<font color='blue'>SIMULATION</font>");
3271                      }
3272                      my_echo(".<br />\n");
3273                  }
3274                  else {
3275                      // On contrôle si le compte est membre du groupe Eleves
3276                      $attribut=array("memberuid");
3277                      $memberUid=get_tab_attribut("groups", "(&(cn=Eleves)(memberuid=$uid))", $attribut);
3278                      if(count($memberUid)>0) {
3279                          my_echo("$uid est déjà membre du groupe Eleves.<br />\n");
3280                      }
3281                      else{
3282                          //my_echo("Ajout de $uid au groupe Eleves: ");
3283                          my_echo("$uid n'est plus membre du groupe Eleves.<br />Retablissement de l'appartenance de $uid au groupe Eleves: ");
3284                          if($simulation!="y") {
3285                              $attributs=array();
3286                              $attributs["memberuid"]=$uid;
3287                              if(modify_attribut ("cn=Eleves", "groups", $attributs, "add")) {
3288                                  my_echo("<font color='green'>SUCCES</font>");
3289                              }
3290                              else{
3291                                  my_echo("<font color='red'>ECHEC</font>");
3292                                  $nb_echecs++;
3293                              }
3294                          }
3295                          else{
3296                              my_echo("<font color='blue'>SIMULATION</font>");
3297                          }
3298                          my_echo(".<br />\n");
3299                      }
3300                  }
3301              }
3302          }
3303          my_echo("</blockquote>\n");
3304      }
3305  
3306  
3307  
3308      if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
3309      my_echo("</blockquote>\n");
3310  
3311  
3312      if($simulation=="y") {
3313          my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
3314  
3315          my_echo("<a name='fin'></a>\n");
3316          //my_echo("<h3>Rapport final de simulation</h3>");
3317          my_echo("<h3>Rapport final de simulation");
3318          if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
3319          my_echo("</h3>\n");
3320          my_echo("<blockquote>\n");
3321          my_echo("<script type='text/javascript'>
3322      document.getElementById('id_fin').style.display='';
3323  </script>");
3324  
3325  
3326  
3327          my_echo("<p>Fin de la simulation!</p>\n");
3328  
3329  
3330          $chaine="";
3331          if($nouveaux_comptes==0) {
3332              //my_echo("<p>Aucun nouveau compte ne serait créé.</p>\n");
3333              $chaine.="<p>Aucun nouveau compte ne serait créé.</p>\n";
3334          }
3335          elseif($nouveaux_comptes==1) {
3336              //my_echo("<p>$nouveaux_comptes nouveau compte serait créé: $tab_nouveaux_comptes[0]</p>\n");
3337              $chaine.="<p>$nouveaux_comptes nouveau compte serait créé: $tab_nouveaux_comptes[0]</p>\n";
3338          }
3339          else{
3340              /*
3341              my_echo("<p>$nouveaux_comptes nouveaux comptes seraient créés: ");
3342              my_echo($tab_nouveaux_comptes[0]);
3343              for($i=1;$i<count($tab_nouveaux_comptes);$i++) {my_echo(", $tab_nouveaux_comptes[$i]");}
3344              my_echo("</p>\n");
3345              my_echo("<p><i>Attention:</i> Si un nom de compte est en doublon dans les nouveaux comptes, c'est un bug de la simulation.<br />Le problème ne se produira pas en mode création.</p>\n");
3346              */
3347              $chaine.=$tab_nouveaux_comptes[0];
3348              for($i=1;$i<count($tab_nouveaux_comptes);$i++) {$chaine.=", $tab_nouveaux_comptes[$i]";}
3349              $chaine.="</p>\n";
3350              $chaine.="<p><i>Attention:</i> Si un nom de compte est en doublon dans les nouveaux comptes, c'est un bug de la simulation.<br />Le problème ne se produira pas en mode création.</p>\n";
3351          }
3352  
3353  
3354          if($comptes_avec_employeeNumber_mis_a_jour==0) {
3355              //my_echo("<p>Aucun compte existant sans employeeNumber n'aurait été récupéré/corrigé.</p>\n");
3356              $chaine.="<p>Aucun compte existant sans employeeNumber n'aurait été récupéré/corrigé.</p>\n";
3357          }
3358          elseif($comptes_avec_employeeNumber_mis_a_jour==1) {
3359              //my_echo("<p>$comptes_avec_employeeNumber_mis_a_jour compte existant sans employeeNumber aurait été récupéré/corrigé (<i>son employeeNumber serait maintenant renseigné</i>): $tab_comptes_avec_employeeNumber_mis_a_jour[0]</p>\n");
3360              $chaine.="<p>$comptes_avec_employeeNumber_mis_a_jour compte existant sans employeeNumber aurait été récupéré/corrigé (<i>son employeeNumber serait maintenant renseigné</i>): $tab_comptes_avec_employeeNumber_mis_a_jour[0]</p>\n";
3361          }
3362          else{
3363              /*
3364              my_echo("<p>$comptes_avec_employeeNumber_mis_a_jour comptes existants sans employeeNumber auraient été récupérés/corrigés (<i>leur employeeNumber serait maintenant renseigné</i>): ");
3365              my_echo("$tab_comptes_avec_employeeNumber_mis_a_jour[0]");
3366              for($i=1;$i<count($tab_comptes_avec_employeeNumber_mis_a_jour);$i++) {my_echo(", $tab_comptes_avec_employeeNumber_mis_a_jour[$i]");}
3367              my_echo("</p>\n");
3368              */
3369              $chaine.="<p>$comptes_avec_employeeNumber_mis_a_jour comptes existants sans employeeNumber auraient été récupérés/corrigés (<i>leur employeeNumber serait maintenant renseigné</i>): ";
3370              $chaine.="$tab_comptes_avec_employeeNumber_mis_a_jour[0]";
3371              for($i=1;$i<count($tab_comptes_avec_employeeNumber_mis_a_jour);$i++) {$chaine.=", $tab_comptes_avec_employeeNumber_mis_a_jour[$i]";}
3372              $chaine.="</p>\n";
3373          }
3374  
3375  
3376          $chaine.="<p>On ne simule pas la création des groupes... pour le moment.</p>\n";
3377  
3378  
3379          my_echo($chaine);
3380  
3381  
3382          // Envoi par mail de $chaine et $echo_http_file
3383          if ( $servertype=="SE3") {
3384            // Récupérer les adresses,... dans le /etc/ssmtp/ssmtp.conf
3385            unset($tabssmtp);
3386            $tabssmtp=lireSSMTP();
3387            // Contrôler les champs affectés...
3388            if(isset($tabssmtp["root"])) {
3389              $adressedestination=$tabssmtp["root"];
3390              $sujet="[$domain] Rapport de ";
3391              if($simulation=="y") {$sujet.="simulation de ";}
3392              $sujet.="création de comptes";
3393              $message="Import du $debut_import\n";
3394              $message.="$chaine\n";
3395              $message.="\n";
3396              $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n";
3397              $entete="From: ".$tabssmtp["root"];
3398              mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n");
3399            } else {
3400              my_echo("<p style='color:red;'><b>MAIL:</b> La configuration mail ne permet pas d'expédier le rapport.<br />Consultez/renseignez le menu Informations système/Actions sur le serveur/Configurer l'expédition des mails.</p>\n");
3401            }
3402          } else {
3403                      // Cas du LCS
3404              $adressedestination="admin@$domain";
3405              $sujet="[$domain] Rapport de ";
3406              if($simulation=="y") {$sujet.="simulation de ";}
3407              $sujet.="création de comptes";
3408              $message="Import du $debut_import\n";
3409              $message.="$chaine\n";
3410              $message.="\n";
3411              $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n";
3412              $entete="From: root@$domain";
3413              mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n");
3414          }
3415  
3416  
3417  
3418          if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
3419  
3420          my_echo("<p><a href='".$www_import."'>Retour</a>.</p>\n");
3421          my_echo("<script type='text/javascript'>
3422      compte_a_rebours='n';
3423  </script>\n");
3424          my_echo("</blockquote>\n");
3425  
3426          my_echo("</body>\n</html>\n");
3427  
3428          // Renseignement du témoin de mise à jour terminée.
3429          $sql="SELECT value FROM params WHERE name='imprt_cmpts_en_cours'";
3430          $res1=mysql_query($sql);
3431          if(mysql_num_rows($res1)==0) {
3432              $sql="INSERT INTO params SET name='imprt_cmpts_en_cours',value='n'";
3433              $res0=mysql_query($sql);
3434          }
3435          else{
3436              $sql="UPDATE params SET value='n' WHERE name='imprt_cmpts_en_cours'";
3437              $res0=mysql_query($sql);
3438          }
3439  
3440          exit();
3441      }
3442  
3443  
3444  
3445      // Création des groupes
3446      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
3447  
3448      my_echo("<a name='creer_classes'></a>\n");
3449      my_echo("<a name='classes_se3'></a>\n");
3450      //my_echo("<h2>Création des groupes Classes et Equipes</h2>\n");
3451      //my_echo("<h3>Création des groupes Classes et Equipes</h3>\n");
3452      my_echo("<h3>Création des groupes Classes et Equipes");
3453      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
3454      my_echo("</h3>\n");
3455      my_echo("<script type='text/javascript'>
3456      document.getElementById('id_creer_classes').style.display='';
3457  </script>");
3458      my_echo("<blockquote>\n");
3459      // Les groupes classes pour commencer:
3460      for($i=0;$i<count($tab_classe);$i++) {
3461          $div=$tab_classe[$i]["nom"];
3462          $temoin_classe="";
3463          my_echo("<p>");
3464          if($tab_classe[$i]["creer_classe"]=="y") {
3465              $attributs=array();
3466              $attributs["cn"]="Classe_".$prefix."$div";
3467              //$attributs["objectClass"]="top";
3468              // MODIF: boireaus 20070728
3469              $attributs["objectClass"][0]="top";
3470              $attributs["objectClass"][1]="posixGroup";
3471  
3472              //$attributs["objectClass"][2]="sambaGroupMapping";
3473  
3474              //$attributs["objectClass"]="posixGroup";
3475              $gidNumber=get_first_free_gidNumber();
3476              if($gidNumber!=false) {
3477                  $attributs["gidNumber"]="$gidNumber";
3478                  // Ou récupérer un nom long du fichier de STS...
3479                  $attributs["description"]="$div";
3480  
3481                  //my_echo("<p>Création du groupe classe Classe_".$prefix."$div: ");
3482                  my_echo("Création du groupe classe Classe_".$prefix."$div: ");
3483                  if(add_entry ("cn=Classe_".$prefix."$div", "groups", $attributs)) {
3484                      /*
3485                      unset($attributs);
3486                      $attributs=array();
3487                      $attributs["objectClass"]="posixGroup";
3488                      if(modify_attribut("cn=Classe_".$prefix."$div","groups", $attributs, "add")) {
3489                      */
3490                          my_echo("<font color='green'>SUCCES</font>");
3491  
3492                          //"cn=Classe_".$prefix."$div"
3493                          if ($servertype=="SE3") {
3494                              //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Classe_".$prefix."$div Classe_".$prefix."$div \"$div\"");
3495                              $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Classe_".$prefix."$div Classe_".$prefix."$div \"$div\"", $retour);
3496                              //for($s=0;$s<count($retour);$s++) {
3497                              //    my_echo(" \$retour[$s]=$retour[$s]<br />\n");
3498                              //}
3499                          }
3500  
3501                      /*
3502                      }
3503                      else{
3504                          my_echo("<font color='red'>ECHEC</font>");
3505                          $temoin_classe="PROBLEME";
3506                          $nb_echecs++;
3507                      }
3508                      */
3509                  }
3510                  else{
3511                      my_echo("<font color='red'>ECHEC</font>");
3512                      $temoin_classe="PROBLEME";
3513                      $nb_echecs++;
3514                  }
3515                  my_echo("<br />\n");
3516              }
3517              else{
3518                  my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
3519                  $temoin_classe="PROBLEME";
3520                  $nb_echecs++;
3521              }
3522              if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
3523          }
3524  
3525          if("$temoin_classe"=="") {
3526              my_echo("Ajout de membres au groupe Classe_".$prefix."$div: ");
3527              /*
3528              $attribut=array("memberUid");
3529              $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut);
3530              */
3531              for($j=0;$j<count($tab_classe[$i]["eleves"]);$j++) {
3532                  $uid=$tab_classe[$i]["eleves"][$j];
3533                  $attribut=array("cn");
3534                  $tabtmp=get_tab_attribut("groups", "(&(cn=Classe_".$prefix."$div)(memberuid=$uid))", $attribut);
3535                  if(count($tabtmp)==0) {
3536                      unset($attribut);
3537                      $attribut=array();
3538                      $attribut["memberUid"]=$uid;
3539                      if(modify_attribut("cn=Classe_".$prefix."$div","groups",$attribut,"add")) {
3540                          my_echo("<b>$uid</b> ");
3541                      }
3542                      else{
3543                          my_echo("<font color='red'>$uid</font> ");
3544                          $nb_echecs++;
3545                      }
3546                  }
3547                  else{
3548                      my_echo("$uid ");
3549                  }
3550              }
3551              my_echo(" (<i>".count($tab_classe[$i]["eleves"])."</i>)\n");
3552              if($chrono=='y') {my_echo("<br />Fin: ".date_et_heure()."<br />\n");}
3553          }
3554          my_echo("</p>\n");
3555  
3556          // Création de l'Equipe?
3557          //for($i=0;$i<count($tab_classe);$i++) {
3558          //$div=$tab_classe[$i]["nom"];
3559          $ind=-1;
3560          $temoin_equipe="";
3561  
3562          // L'équipe existe-t-elle?
3563          my_echo("<p>");
3564          $attribut=array("cn");
3565          $tabtmp=get_tab_attribut("groups", "cn=Equipe_".$prefix."$div", $attribut);
3566          if(count($tabtmp)==0) {
3567              $attributs=array();
3568              $attributs["cn"]="Equipe_".$prefix."$div";
3569  
3570              // MODIF: boireaus 20070728
3571              //$attributs["objectClass"]="top";
3572              $attributs["objectClass"][0]="top";
3573  
3574              //$attributs["objectClass"]="posixGroup";
3575              //$attributs["objectClass"]="groupOfNames";
3576              // On ne peut pas avoir un tableau associatif avec plusieurs fois objectClass
3577  
3578              if($type_Equipe_Matiere=="groupOfNames") {
3579                  // Ou récupérer un nom long du fichier de STS...
3580                  $attributs["description"]="$div";
3581  
3582                  // MODIF: boireaus 20070728
3583                  $attributs["objectClass"][1]="groupOfNames";
3584  
3585                  my_echo("Création de l'équipe Equipe_".$prefix."$div: ");
3586                  if(add_entry ("cn=Equipe_".$prefix."$div", "groups", $attributs)) {
3587                      /*
3588                      unset($attributs);
3589                      $attributs=array();
3590                      $attributs["objectClass"]="groupOfNames";
3591                      //$attributs["objectClass"]="posixGroup";
3592                      if(modify_attribut("cn=Equipe_".$prefix."$div","groups", $attributs, "add")) {
3593                      */
3594                          my_echo("<font color='green'>SUCCES</font>");
3595                      /*
3596                      }
3597                      else{
3598                          my_echo("<font color='red'>ECHEC</font>");
3599                          $temoin_equipe="PROBLEME";
3600                          $nb_echecs++;
3601                      }
3602                      */
3603                      //my_echo("<font color='green'>SUCCES</font>");
3604                  }
3605                  else{
3606                      my_echo("<font color='red'>ECHEC</font>");
3607                      $temoin_equipe="PROBLEME";
3608                      $nb_echecs++;
3609                  }
3610              }
3611              else{
3612                  // Les Equipes sont posix
3613                  $gidNumber=get_first_free_gidNumber();
3614                  if($gidNumber!=false) {
3615                      $attributs["gidNumber"]="$gidNumber";
3616  
3617                      // Ou récupérer un nom long du fichier de STS...
3618                      $attributs["description"]="$div";
3619  
3620                      // MODIF: boireaus 20070728
3621                      $attributs["objectClass"][1]="posixGroup";
3622                      //$attributs["objectClass"][2]="sambaGroupMapping";
3623  
3624                      my_echo("Création de l'équipe Equipe_".$prefix."$div: ");
3625                      if(add_entry ("cn=Equipe_".$prefix."$div", "groups", $attributs)) {
3626                          /*
3627                          unset($attributs);
3628                          $attributs=array();
3629                          //$attributs["objectClass"]="groupOfNames";
3630                          $attributs["objectClass"]="posixGroup";
3631                          if(modify_attribut("cn=Equipe_".$prefix."$div","groups", $attributs, "add")) {
3632                          */
3633                              my_echo("<font color='green'>SUCCES</font>");
3634  
3635                              if ($servertype=="SE3") {
3636                                  //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Equipe_".$prefix."$div Equipe_".$prefix."$div \"$div\"");
3637                                  $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Equipe_".$prefix."$div Equipe_".$prefix."$div \"$div\"", $retour);
3638                              }
3639  
3640                          /*
3641                          }
3642                          else{
3643                              my_echo("<font color='red'>ECHEC</font>");
3644                              $temoin_equipe="PROBLEME";
3645                              $nb_echecs++;
3646                          }
3647                          */
3648                          //my_echo("<font color='green'>SUCCES</font>");
3649                      }
3650                      else{
3651                          my_echo("<font color='red'>ECHEC</font>");
3652                          $temoin_equipe="PROBLEME";
3653                          $nb_echecs++;
3654                      }
3655                  }
3656                  else{
3657                      my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
3658                      $temoin_equipe="PROBLEME";
3659                      $nb_echecs++;
3660                  }
3661              }
3662              my_echo("<br />\n");
3663              if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
3664          }
3665  
3666          if($creer_equipes_vides=="y") {
3667              $temoin_equipe="Remplissage des Equipes non demandé.";
3668          }
3669  
3670          //my_echo("<p>\$temoin_equipe=$temoin_equipe</p>");
3671  
3672          if(!isset($divisions)) {
3673              my_echo("<p>Le tableau \$division n'est pas rempli, ni même initialisé.</p>");
3674          }
3675          else {
3676              if($temoin_equipe=="") {
3677                  // Recherche de l'indice de la classe dans $divisions
3678                  //my_echo("<font color='yellow'>$div</font> ");
3679                  for($m=0;$m<count($divisions);$m++) {
3680                      //$tmp_classe=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($divisions[$m]["code"])));
3681                      $tmp_classe=apostrophes_espaces_2_underscore(remplace_accents($divisions[$m]["code"]));
3682                      //my_echo("<font color='lime'>$tmp_classe</font> ");
3683                      if($tmp_classe==$div) {
3684                          $ind=$m;
3685                      }
3686                  }
3687                  //my_echo("ind=$ind<br />");
3688      
3689      
3690                  if($type_Equipe_Matiere=="groupOfNames") {
3691                      // Les profs principaux ne sont plus gérés comme attribut owner qu'en mode groupOfNames
3692      
3693                      // Prof principal
3694                      unset($tab_pp);
3695                      $tab_pp=array();
3696                      for($m=0;$m<count($prof);$m++) {
3697                          if(isset($prof[$m]["prof_princ"])) {
3698                              for($n=0;$n<count($prof[$m]["prof_princ"]);$n++) {
3699                                  $tmp_div=$prof[$m]["prof_princ"][$n]["code_structure"];
3700                                  //$tmp_div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($tmp_div)));
3701                                  $tmp_div=apostrophes_espaces_2_underscore(remplace_accents($tmp_div));
3702                                  if($tmp_div==$div) {
3703                                      $employeeNumber="P".$prof[$m]["id"];
3704                                      $attribut=array("uid");
3705                                      $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
3706                                      if(count($tabtmp)!=0) {
3707                                          $uid=$tabtmp[0];
3708                                          if(!in_array($uid,$tab_pp)) {
3709                                              $tab_pp[]=$uid;
3710                                          }
3711                                      }
3712                                  }
3713                              }
3714                          }
3715                      }
3716                      sort($tab_pp);
3717      
3718                      if(count($tab_pp)>0) {
3719                          if(count($tab_pp)==1) {
3720                              my_echo("Ajout du professeur principal à l'équipe Equipe_".$prefix."$div: ");
3721                          }
3722                          else{
3723                              my_echo("Ajout des professeurs principaux à l'équipe Equipe_".$prefix."$div: ");
3724                          }
3725                          for($m=0;$m<count($tab_pp);$m++) {
3726                              $uid=$tab_pp[$m];
3727                              // Est-il déjà PP de la classe?
3728                              $attribut=array("owner");
3729                              //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut);
3730                              $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(owner=uid=$uid,".$dn["people"]."))", $attribut);
3731                              //$tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(owner=$uid))", $attribut);
3732                              if(count($tabtmp)==0) {
3733                                  $attributs=array();
3734                                  $attributs["owner"]="uid=$uid,".$dn["people"];
3735                                  //$attributs["owner"]="$uid";
3736                                  if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) {
3737                                      my_echo("<b>$uid</b> ");
3738                                  }
3739                                  else{
3740                                      my_echo("<font color='red'>$uid</font> ");
3741                                      $nb_echecs++;
3742                                  }
3743                              }
3744                              else{
3745                                  my_echo("$uid ");
3746                              }
3747                          }
3748                          my_echo("<br />\n");
3749                          if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
3750                      }
3751                  }
3752      
3753                  // Membres de l'équipe
3754                  unset($tab_equipe);
3755                  $tab_equipe=array();
3756                  my_echo("Ajout de membres à l'équipe Equipe_".$prefix."$div: ");
3757                  for($j=0;$j<count($divisions[$ind]["services"]);$j++) {
3758                      for($k=0;$k<count($divisions[$ind]["services"][$j]["enseignants"]);$k++) {
3759                          // Récupérer le login correspondant au NUMIND
3760                          $employeeNumber="P".$divisions[$ind]["services"][$j]["enseignants"][$k]["id"];
3761                          if(!in_array($employeeNumber,$tab_equipe)) {
3762                              $tab_equipe[]=$employeeNumber;
3763                              //my_echo("\$employeeNumber=$employeeNumber<br />");
3764      
3765                              /*
3766                              $attribut=array("uid");
3767                              $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
3768                              if(count($tabtmp)!=0) {
3769                                  $uid=$tabtmp[0];
3770                                  //my_echo("\$uid=$uid<br />");
3771                                  // Le prof est-il déjà membre de l'équipe?
3772                                  $attribut=array("member");
3773                                  //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut);
3774                                  $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(member=uid=$uid,".$dn["people"]."))", $attribut);
3775                                  if(count($tabtmp)==0) {
3776                                      $attributs=array();
3777                                      $attributs["member"]="uid=$uid,".$dn["people"];
3778                                      if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) {
3779                                          my_echo("<b>$uid</b> ");
3780                                      }
3781                                      else{
3782                                          my_echo("<font color='red'>$uid</font> ");
3783                                      }
3784                                  }
3785                                  else{
3786                                      my_echo("$uid ");
3787                                  }
3788                              }
3789                              */
3790                          }
3791                      }
3792                  }
3793      
3794      
3795                  if(isset($groupes)) {
3796                      // Rechercher les groupes associés à la classe pour affecter les collègues dans l'équipe
3797                      //$groupes[$i]["divisions"][$j]["code"]    -> 3 A1
3798                      //$groupes[$i]["code_matiere"]            -> 070800
3799                      //$groupes[$i]["enseignant"][$m]["id"]    -> 38101
3800                      for($n=0;$n<count($groupes);$n++) {
3801                          for($j=0;$j<count($groupes[$n]["divisions"]);$j++) {
3802                              $grp_div=$groupes[$n]["divisions"][$j]["code"];
3803                              //$grp_div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($grp_div)));
3804                              $grp_div=apostrophes_espaces_2_underscore(remplace_accents($grp_div));
3805                              if($grp_div==$div) {
3806                                  /*
3807                                  if(isset($groupes[$n]["enseignant"])) {
3808                                      for($m=0;$m<count($groupes[$n]["enseignant"]);$m++) {
3809                                          $employeeNumber="P".$groupes[$n]["enseignant"][$m]["id"];
3810                                          if(!in_array($employeeNumber,$tab_equipe)) {
3811                                              $tab_equipe[]=$employeeNumber;
3812                                          }
3813                                      }
3814                                  }
3815                                  */
3816          
3817                                  if(isset($groupes[$n]["service"][0]["enseignant"])) {
3818                                      for($p=0;$p<count($groupes[$n]["service"]);$p++) {
3819                                          for($m=0;$m<count($groupes[$n]["service"][$p]["enseignant"]);$m++) {
3820                                              $employeeNumber="P".$groupes[$n]["service"][$p]["enseignant"][$m]["id"];
3821                                              if(!in_array($employeeNumber,$tab_equipe)) {
3822                                                  $tab_equipe[]=$employeeNumber;
3823                                              }
3824                                          }
3825                                      }
3826                                  }
3827                              }
3828                          }
3829                      }
3830                  }
3831      
3832                  /*
3833                  // On dédoublonne le tableau $tab_equipe
3834                  // On fait un tri sur l'employeeNumber... ce n'est pas très utile.
3835                  sort($tab_equipe);
3836                  $tmp_tab_equipe=$tab_equipe;
3837                  unset($tab_equipe);
3838                  $tab_equipe=array();
3839                  for($n=0;$n<count($tmp_tab_equipe);$n++) {
3840                      if(!in_array($tmp_tab_equipe[$n],$tab_equipe)) {$tab_equipe[]=$tmp_tab_equipe[$n];}
3841                  }
3842                  */
3843      
3844                  for($n=0;$n<count($tab_equipe);$n++) {
3845                      $employeeNumber=$tab_equipe[$n];
3846      
3847                      $attribut=array("uid");
3848                      $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
3849                      if(count($tabtmp)!=0) {
3850                          $uid=$tabtmp[0];
3851                          //my_echo("\$uid=$uid<br />");
3852                          // Le prof est-il déjà membre de l'équipe?
3853                          //$attribut=array("member");
3854                          //$attribut=array("memberuid");
3855                          //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut);
3856      
3857                          if($type_Equipe_Matiere=="groupOfNames") {
3858                              // Les groupes Equipes sont groupOfNames
3859                              $attribut=array("member");
3860                              $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(member=uid=$uid,".$dn["people"]."))", $attribut);
3861                              //$tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(memberuid=$uid))", $attribut);
3862                              if(count($tabtmp)==0) {
3863                                  $attributs=array();
3864                                  $attributs["member"]="uid=$uid,".$dn["people"];
3865                                  //$attributs["memberuid"]="$uid";
3866                                  if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) {
3867                                      my_echo("<b>$uid</b> ");
3868                                  }
3869                                  else{
3870                                      my_echo("<font color='red'>$uid</font> ");
3871                                      $nb_echecs++;
3872                                  }
3873                              }
3874                              else{
3875                                  my_echo("$uid ");
3876                              }
3877                          }
3878                          else{
3879                              // Les groupes Equipes sont posix
3880                              //$tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(member=uid=$uid,".$dn["people"]."))", $attribut);
3881                              $attribut=array("memberuid");
3882                              $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(memberuid=$uid))", $attribut);
3883                              if(count($tabtmp)==0) {
3884                                  $attributs=array();
3885                                  //$attributs["member"]="uid=$uid,".$dn["people"];
3886                                  $attributs["memberuid"]="$uid";
3887                                  if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) {
3888                                      my_echo("<b>$uid</b> ");
3889                                  }
3890                                  else{
3891                                      my_echo("<font color='red'>$uid</font> ");
3892                                      $nb_echecs++;
3893                                  }
3894                              }
3895                              else{
3896                                  my_echo("$uid ");
3897                              }
3898                          }
3899                      }
3900                  }
3901                  my_echo("<br />\n");
3902                  if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
3903              }
3904              my_echo("</p>\n");
3905          }
3906          //}
3907      }
3908  
3909      if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
3910      my_echo("</blockquote>\n");
3911  
3912  
3913  
3914      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
3915  
3916      my_echo("<a name='creer_matieres'></a>\n");
3917      //my_echo("<h2>Création des groupes Matières</h2>\n");
3918      //my_echo("<h3>Création des groupes Matières</h3>\n");
3919      my_echo("<h3>Création des groupes Matières");
3920      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
3921  
3922      // ===========================================================
3923      if($creer_matieres=='y') {
3924          my_echo("</h3>\n");
3925          my_echo("<script type='text/javascript'>
3926          document.getElementById('id_creer_matieres').style.display='';
3927  </script>");
3928          my_echo("<blockquote>\n");
3929  
3930          if(!isset($matiere)) {
3931              my_echo("<p>Le tableau \$matiere n'est pas rempli, ni même initialisé.</p>\n");
3932          }
3933          else {
3934              for($i=0;$i<count($matiere);$i++) {
3935                  my_echo("<p>\n");
3936                  $temoin_matiere="";
3937                  //$matiere[$i]["code_gestion"]
3938                  $id_mat=$matiere[$i]["code"];
3939                  //$code_gestion=$matiere[$i]["code_gestion"];
3940                  // En principe les caractères spéciaux ont-été filtrés:
3941                  //$matiere[$i]["code_gestion"]=trim(ereg_replace("[^a-zA-Z0-9&_. -]","",html_entity_decode($tabtmp[2])));
3942                  $mat=$matiere[$i]["code_gestion"];
3943                  $description=remplace_accents($matiere[$i]["libelle_long"]);
3944                  // Faudrait-il enlever d'autres caractères?
3945      
3946                  // Le groupe Matiere existe-t-il?
3947                  $attribut=array("cn");
3948                  $tabtmp=get_tab_attribut("groups", "cn=Matiere_".$prefix."$mat", $attribut);
3949                  if(count($tabtmp)==0) {
3950                      $attributs=array();
3951                      $attributs["cn"]="Matiere_".$prefix."$mat";
3952      
3953                      // MODIF: boireaus 20070728
3954                      //$attributs["objectClass"]="top";
3955                      $attributs["objectClass"][0]="top";
3956      
3957                      //$attributs["objectClass"]="posixGroup";
3958                      //$attributs["objectClass"]="groupOfNames";
3959      
3960                      // Ou récupérer un nom long du fichier de STS...
3961                      $attributs["description"]="$description";
3962      
3963                      if($type_Equipe_Matiere=="groupOfNames") {
3964                          // Les groupes Matieres sont groupOfNames
3965      
3966                          // MODIF: boireaus 20070728
3967                          $attributs["objectClass"][1]="groupOfNames";
3968      
3969                          //my_echo("<p>Création de la matière Matiere_".$prefix."$mat: ");
3970                          my_echo("Création de la matière Matiere_".$prefix."$mat: ");
3971                          if(add_entry ("cn=Matiere_".$prefix."$mat", "groups", $attributs)) {
3972                              /*
3973                              unset($attributs);
3974                              $attributs=array();
3975                              $attributs["objectClass"]="groupOfNames";
3976                              //$attributs["objectClass"]="posixGroup";
3977                              if(modify_attribut("cn=Matiere_".$prefix."$mat","groups", $attributs, "add")) {
3978                              */
3979                                  my_echo("<font color='green'>SUCCES</font>");
3980                              /*
3981                              }
3982                              else{
3983                                  my_echo("<font color='red'>ECHEC</font>");
3984                                  $temoin_matiere="PROBLEME";
3985                                  $nb_echecs++;
3986                              }
3987                              */
3988                              //my_echo("<font color='green'>SUCCES</font>");
3989                          }
3990                          else{
3991                              my_echo("<font color='red'>ECHEC</font>");
3992                              $temoin_matiere="PROBLEME";
3993                              $nb_echecs++;
3994                          }
3995                      }
3996                      else{
3997                          // Les groupes Matieres sont posix
3998                          $gidNumber=get_first_free_gidNumber();
3999                          if($gidNumber!=false) {
4000                              $attributs["gidNumber"]="$gidNumber";
4001      
4002                              // MODIF: boireaus 20070728
4003                              $attributs["objectClass"][1]="posixGroup";
4004                              //$attributs["objectClass"][2]="sambaGroupMapping";
4005      
4006                              //my_echo("<p>Création de la matière Matiere_".$prefix."$mat: ");
4007                              my_echo("Création de la matière Matiere_".$prefix."$mat: ");
4008                              if(add_entry ("cn=Matiere_".$prefix."$mat", "groups", $attributs)) {
4009                                  /*
4010                                  unset($attributs);
4011                                  $attributs=array();
4012                                  //$attributs["objectClass"]="groupOfNames";
4013                                  $attributs["objectClass"]="posixGroup";
4014                                  if(modify_attribut("cn=Matiere_".$prefix."$mat","groups", $attributs, "add")) {
4015                                  */
4016                                      my_echo("<font color='green'>SUCCES</font>");
4017      
4018                                      if ($servertype=="SE3") {
4019                                          //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Matiere_".$prefix."$mat Matiere_".$prefix."$mat \"$description\"");
4020                                          $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Matiere_".$prefix."$mat Matiere_".$prefix."$mat \"$description\"", $retour);
4021                                      }
4022                                  /*
4023                                  }
4024                                  else{
4025                                      my_echo("<font color='red'>ECHEC</font>");
4026                                      $temoin_matiere="PROBLEME";
4027                                      $nb_echecs++;
4028                                  }
4029                                  */
4030                                  //my_echo("<font color='green'>SUCCES</font>");
4031                              }
4032                              else{
4033                                  my_echo("<font color='red'>ECHEC</font>");
4034                                  $temoin_matiere="PROBLEME";
4035                                  $nb_echecs++;
4036                              }
4037                          }
4038                          else{
4039                              my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
4040                              $temoin_matiere="PROBLEME";
4041                              $nb_echecs++;
4042                          }
4043                      }
4044                      my_echo("<br />\n");
4045                      if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
4046                  }
4047      
4048                  unset($tab_matiere);
4049                  $tab_matiere=array();
4050                  if($temoin_matiere=="") {
4051                      my_echo("Ajout de membres à la matière Matiere_".$prefix."$mat: ");
4052                      for($n=0;$n<count($divisions);$n++) {
4053                          for($j=0;$j<count($divisions[$n]["services"]);$j++) {
4054                              if($divisions[$n]["services"][$j]["code_matiere"]==$id_mat) {
4055                                  for($k=0;$k<count($divisions[$n]["services"][$j]["enseignants"]);$k++) {
4056                                      // Récupérer le login correspondant au NUMIND
4057                                      $employeeNumber="P".$divisions[$n]["services"][$j]["enseignants"][$k]["id"];
4058                                      //my_echo("\$employeeNumber=$employeeNumber<br />");
4059                                      if(!in_array($employeeNumber,$tab_matiere)) {
4060                                          $tab_matiere[]=$employeeNumber;
4061                                          /*
4062                                          $attribut=array("uid");
4063                                          $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
4064                                          if(count($tabtmp)!=0) {
4065                                              $uid=$tabtmp[0];
4066                                              //my_echo("\$uid=$uid<br />");
4067                                              // Le prof est-il déjà membre de l'équipe?
4068                                              $attribut=array("member");
4069                                              //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut);
4070                                              $tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(member=uid=$uid,".$dn["people"]."))", $attribut);
4071                                              if(count($tabtmp)==0) {
4072                                                  $attributs=array();
4073                                                  $attributs["member"]="uid=$uid,".$dn["people"];
4074                                                  if(modify_attribut("cn=Matiere_".$prefix."$mat", "groups", $attributs, "add")) {
4075                                                      my_echo("<b>$uid</b> ");
4076                                                  }
4077                                                  else{
4078                                                      my_echo("<font color='red'>$uid</font> ");
4079                                                  }
4080                                              }
4081                                              else{
4082                                                  my_echo("$uid ");
4083                                              }
4084                                          }
4085                                          */
4086                                      }
4087                                  }
4088                              }
4089                          }
4090                      }
4091      
4092      
4093      
4094                      // Rechercher les groupes associés à la matière pour affecter les collègues dans l'équipe
4095                      //$groupes[$i]["divisions"][$j]["code"]    -> 3 A1
4096                      //$groupes[$i]["code_matiere"]            -> 070800
4097                      //$groupes[$i]["enseignant"][$m]["id"]    -> 38101
4098                      for($n=0;$n<count($groupes);$n++) {
4099                          /*
4100                          if(isset($groupes[$n]["code_matiere"])) {
4101                              $grp_id_mat=$groupes[$n]["code_matiere"];
4102                              if($grp_id_mat==$id_mat) {
4103                                  for($j=0;$j<count($groupes[$n]["divisions"]);$j++) {
4104                                      if(isset($groupes[$n]["enseignant"])) {
4105                                          for($m=0;$m<count($groupes[$n]["enseignant"]);$m++) {
4106                                              $employeeNumber="P".$groupes[$n]["enseignant"][$m]["id"];
4107                                              if(!in_array($employeeNumber,$tab_matiere)) {
4108                                                  $tab_matiere[]=$employeeNumber;
4109                                              }
4110                                          }
4111                                      }
4112                                  }
4113                              }
4114                          }
4115                          */
4116      
4117                          if(isset($groupes[$n]["service"][0]["code_matiere"])) {
4118                              for($p=0;$p<count($groupes[$n]["service"]);$p++) {
4119                                  $grp_id_mat=$groupes[$n]["service"][$p]["code_matiere"];
4120                                  if($grp_id_mat==$id_mat) {
4121                                      for($j=0;$j<count($groupes[$n]["divisions"]);$j++) {
4122                                          if(isset($groupes[$n]["service"][$p]["enseignant"])) {
4123                                              for($m=0;$m<count($groupes[$n]["service"][$p]["enseignant"]);$m++) {
4124                                                  $employeeNumber="P".$groupes[$n]["service"][$p]["enseignant"][$m]["id"];
4125                                                  if(!in_array($employeeNumber,$tab_matiere)) {
4126                                                      $tab_matiere[]=$employeeNumber;
4127                                                  }
4128                                              }
4129                                          }
4130                                      }
4131                                  }
4132                              }
4133                          }
4134                      }
4135      
4136      
4137      
4138                      for($n=0;$n<count($tab_matiere);$n++) {
4139                          $employeeNumber=$tab_matiere[$n];
4140                          $attribut=array("uid");
4141                          $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
4142                          if(count($tabtmp)!=0) {
4143                              $uid=$tabtmp[0];
4144                              //my_echo("\$uid=$uid<br />");
4145                              // Le prof est-il déjà membre de la matière?
4146                              if($type_Equipe_Matiere=="groupOfNames") {
4147                                  // Les groupes Matieres sont groupOfNames
4148                                  $attribut=array("member");
4149                                  //$attribut=array("memberuid");
4150                                  //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut);
4151                                  $tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(member=uid=$uid,".$dn["people"]."))", $attribut);
4152                                  //$tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(memberuid=$uid))", $attribut);
4153                                  if(count($tabtmp)==0) {
4154                                      $attributs=array();
4155                                      $attributs["member"]="uid=$uid,".$dn["people"];
4156                                      //$attributs["memberuid"]="$uid";
4157                                      if(modify_attribut("cn=Matiere_".$prefix."$mat", "groups", $attributs, "add")) {
4158                                          my_echo("<b>$uid</b> ");
4159                                      }
4160                                      else{
4161                                          my_echo("<font color='red'>$uid</font> ");
4162                                          $nb_echecs++;
4163                                      }
4164                                  }
4165                                  else{
4166                                      my_echo("$uid ");
4167                                  }
4168                              }
4169                              else{
4170                                  // Les groupes Matieres sont posix
4171                                  //$attribut=array("member");
4172                                  $attribut=array("memberuid");
4173                                  //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut);
4174                                  //$tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(member=uid=$uid,".$dn["people"]."))", $attribut);
4175                                  $tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(memberuid=$uid))", $attribut);
4176                                  if(count($tabtmp)==0) {
4177                                      $attributs=array();
4178                                      //$attributs["member"]="uid=$uid,".$dn["people"];
4179                                      $attributs["memberuid"]="$uid";
4180                                      if(modify_attribut("cn=Matiere_".$prefix."$mat", "groups", $attributs, "add")) {
4181                                          my_echo("<b>$uid</b> ");
4182                                      }
4183                                      else{
4184                                          my_echo("<font color='red'>$uid</font> ");
4185                                          $nb_echecs++;
4186                                      }
4187                                  }
4188                                  else{
4189                                      my_echo("$uid ");
4190                                  }
4191                              }
4192                          }
4193                      }
4194                      my_echo("<br />\n");
4195                      if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
4196                  }
4197                  my_echo("</p>\n");
4198              }
4199              if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
4200          }
4201      }
4202      else{
4203          my_echo("</h3>\n");
4204          my_echo("<blockquote>\n");
4205          my_echo("<p>Création des Matières non demandée.</p>\n");
4206      }
4207  
4208      my_echo("</blockquote>\n");
4209  
4210  
4211  
4212      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
4213  
4214      my_echo("<a name='creer_cours'></a>\n");
4215      //my_echo("<h2>Création des groupes Cours</h2>\n");
4216      //my_echo("<h3>Création des groupes Cours</h3>\n");
4217      my_echo("<h3>Création des groupes Cours");
4218      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
4219  
4220      // ===========================================================
4221      // AJOUTS: 20070914 boireaus
4222      if($creer_cours=='y') {
4223  
4224          my_echo("</h3>\n");
4225          my_echo("<script type='text/javascript'>
4226          document.getElementById('id_creer_cours').style.display='';
4227  </script>");
4228          my_echo("<blockquote>\n");
4229          // Là, il faudrait faire un traitement différent selon que l'import élève se fait par CSV ou XML
4230  
4231  
4232          //$divisions[$i]["code"]                                    3 A2
4233          //$divisions[$i]["services"][$j]["code_matiere"]            020700
4234          //$divisions[$i]["services"][$j]["enseignants"][$k]["id"]    38764
4235  
4236          for($i=0;$i<count($divisions);$i++) {
4237              $div=$divisions[$i]["code"];
4238              //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div)));
4239              $div=apostrophes_espaces_2_underscore(remplace_accents($div));
4240  
4241              // Dans le cas de l'import XML, on récupère la liste des options suivies par les élèves
4242              $ind_div="";
4243              if($type_fichier_eleves=="xml") {
4244                  // Identifier $k tel que $tab_division[$k]["nom"]==$div
4245                  for($k=0;$k<count($tab_division);$k++) {
4246                      if(apostrophes_espaces_2_underscore(remplace_accents($tab_division[$k]["nom"]))==$div) {
4247                          $ind_div=$k;
4248                          break;
4249                      }
4250                  }
4251              }
4252  
4253              $temoin_cours="";
4254              // On parcours toutes les matières...
4255              for($j=0;$j<count($divisions[$i]["services"]);$j++) {
4256                  $id_mat=$divisions[$i]["services"][$j]["code_matiere"];
4257  
4258  
4259                  // Recherche du nom court de la matière:
4260                  for($n=0;$n<count($matiere);$n++) {
4261                      if($matiere[$n]["code"]==$id_mat) {
4262                          $mat=$matiere[$n]["code_gestion"];
4263                      }
4264                  }
4265  
4266                  // La matière est-elle optionnelle dans la classe?
4267                  $temoin_matiere_optionnelle="non";
4268                  $ind_mat="";
4269                  if(($type_fichier_eleves=="xml")&&($ind_div!="")) {
4270                      for($k=0;$k<count($tab_division[$ind_div]["option"]);$k++) {
4271                          // $tab_division[$k]["option"][$n]["code_matiere"]
4272                          if($tab_division[$ind_div]["option"][$k]["code_matiere"]==$id_mat) {
4273                              $temoin_matiere_optionnelle="oui";
4274                              $ind_mat=$k;
4275                              break;
4276                          }
4277                      }
4278                  }
4279  
4280                  // Récupérer tous les profs de la matière dans la classe
4281                  // ... les trier
4282                  unset($tab_prof_uid);
4283                  $tab_prof_uid=array();
4284                  // On pourrait aussi parcourir l'annuaire... avec le filtre cn=Equipe_".$prefix."$div... peut-être serait-ce plus rapide...
4285                  for($k=0;$k<count($divisions[$i]["services"][$j]["enseignants"]);$k++) {
4286                      // Récupération de l'uid correspondant à l'employeeNumber
4287                      $employeeNumber="P".$divisions[$i]["services"][$j]["enseignants"][$k]["id"];
4288                      $attribut=array("uid");
4289                      $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
4290                      if(count($tabtmp)!=0) {
4291                          $uid=$tabtmp[0];
4292                          if(!in_array($uid,$tab_prof_uid)) {
4293                              $tab_prof_uid[]=$uid;
4294                          }
4295                      }
4296                  }
4297                  sort($tab_prof_uid);
4298  
4299  
4300                  // Récupérer tous les membres de la classe si la matière n'a pas été détectée comme optionnelle dans la classe
4301                  // ... les trier
4302                  unset($tab_eleve_uid);
4303                  $tab_eleve_uid=array();
4304                  if($temoin_matiere_optionnelle!="oui") {
4305                      //$attribut=array("memberUid");
4306                      $attribut=array("memberuid");
4307                      //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />");
4308                      $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut);
4309                      if(count($tabtmp)!=0) {
4310                          //my_echo("count(\$tabtmp)=".count($tabtmp)."<br />");
4311                          for($k=0;$k<count($tabtmp);$k++) {
4312                              //my_echo("\$tabtmp[$k]=".$tabtmp[$k]."<br />");
4313                              // Normalement, chaque élève n'est inscrit qu'une fois dans la classe, mais bon...
4314                              if(!in_array($tabtmp[$k],$tab_eleve_uid)) {
4315                                  //my_echo("Ajout à \$tab_eleve_uid<br />");
4316                                  $tab_eleve_uid[]=$tabtmp[$k];
4317                              }
4318                          }
4319                      }
4320                  }
4321                  else{
4322                      // Faire une boucle sur $eleve[$numero]["options"][$j]["code_matiere"] après avoir identifié le numéro... en faisant une recherche sur  les memberUid de "cn=Classe_".$prefix."$div"
4323                      // Ou: remplir un étage de plus de $tab_division[$k]["option"]
4324                      //$tab_division[$ind_div]["option"][$ind_mat]["eleve"][]
4325                      //my_echo("<p>Matière optionnelle pour $mat en $div:<br />");
4326                      for($k=0;$k<count($tab_division[$ind_div]["option"][$ind_mat]["eleve"]);$k++) {
4327                          $attribut=array("uid");
4328                          //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />");
4329                          //$tabtmp=get_tab_attribut("people", "employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k], $attribut);
4330                          $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k].")(employeenumber=".sprintf("%05d",$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k])."))", $attribut);
4331  
4332                          if(count($tabtmp)!=0) {
4333                              if(!in_array($tabtmp[0],$tab_eleve_uid)) {
4334                                  //my_echo("Ajout à \$tab_eleve_uid<br />");
4335                                  $tab_eleve_uid[]=$tabtmp[0];
4336                              }
4337                          }
4338                      }
4339                  }
4340  
4341                  // Création du groupe
4342                  // Le groupe Cours existe-t-il?
4343                  my_echo("<p>\n");
4344                  $attribut=array("cn");
4345                  //my_echo("Recherche de: get_tab_attribut(\"groups\", \"cn=Cours_".$prefix."\".$mat.\"_\".$div, $attribut)<br />");
4346                  $tabtmp=get_tab_attribut("groups", "cn=Cours_".$prefix.$mat."_".$div, $attribut);
4347                  if(count($tabtmp)==0) {
4348                      $attributs=array();
4349                      $attributs["cn"]="Cours_".$prefix.$mat."_".$div;
4350  
4351                      // MODIF: boireaus 20070728
4352                      //$attributs["objectClass"]="top";
4353                      $attributs["objectClass"][0]="top";
4354                      $attributs["objectClass"][1]="posixGroup";
4355                      //$attributs["objectClass"][2]="sambaGroupMapping";
4356  
4357                      //$attributs["objectClass"]="posixGroup";
4358                      //$attributs["objectClass"]="groupOfNames";
4359                      // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo...
4360                      //$gidNumber=get_first_free_gidNumber();
4361                      $gidNumber=get_first_free_gidNumber(10000);
4362                      if($gidNumber!=false) {
4363                          $attributs["gidNumber"]="$gidNumber";
4364                          // Ou récupérer un nom long du fichier de STS...
4365                          $attributs["description"]="$mat / $div";
4366  
4367                          //my_echo("<p>Création du groupe Cours_".$prefix.$mat."_".$div.": ");
4368                          my_echo("Création du groupe Cours_".$prefix.$mat."_".$div.": ");
4369                          if(add_entry ("cn=Cours_".$prefix.$mat."_".$div, "groups", $attributs)) {
4370                              /*
4371                              unset($attributs);
4372                              $attributs=array();
4373                              $attributs["objectClass"]="posixGroup";
4374                              if(modify_attribut("cn=Cours_".$prefix.$mat."_".$div,"groups", $attributs, "add")) {
4375                              */
4376                                  my_echo("<font color='green'>SUCCES</font>");
4377  
4378                                  if ($servertype=="SE3") {
4379                                      //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$mat Cours_".$prefix."$mat \"$mat / $div\"");
4380                                      $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$mat Cours_".$prefix."$mat \"$mat / $div\"", $retour);
4381                                  }
4382                              /*
4383                              }
4384                              else{
4385                                  my_echo("<font color='red'>ECHEC</font>");
4386                                  $temoin_cours="PROBLEME";
4387                                  $nb_echecs++;
4388                              }
4389                              */
4390                              //my_echo("<font color='green'>SUCCES</font>");
4391                          }
4392                          else{
4393                              my_echo("<font color='red'>ECHEC</font>");
4394                              $temoin_cours="PROBLEME";
4395                              $nb_echecs++;
4396                          }
4397                          my_echo("<br />\n");
4398                          if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
4399                      }
4400                      else{
4401                          my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
4402                          $temoin_cours="PROBLEME";
4403                          $nb_echecs++;
4404                      }
4405                  }
4406  
4407  
4408                  if($temoin_cours=="") {
4409                      // Ajout des membres
4410                      my_echo("Ajout de membres au groupe Cours_".$prefix.$mat."_".$div.": ");
4411                      // Ajout des profs
4412                      for($n=0;$n<count($tab_prof_uid);$n++) {
4413                          $uid=$tab_prof_uid[$n];
4414                          $attribut=array("cn");
4415                          //my_echo("Recherche de get_tab_attribut(\"groups\", \"(&(cn=Cours_".$prefix.$mat.\"_\".$div.\")(memberuid=$uid))\", $attribut)<br />");
4416                          $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix.$mat."_".$div.")(memberuid=$uid))", $attribut);
4417                          if(count($tabtmp)==0) {
4418                              unset($attribut);
4419                              $attribut=array();
4420                              $attribut["memberUid"]=$uid;
4421                              if(modify_attribut("cn=Cours_".$prefix.$mat."_".$div,"groups",$attribut,"add")) {
4422                                  my_echo("<b>$uid</b> ");
4423                              }
4424                              else{
4425                                  my_echo("<font color='red'>$uid</font> ");
4426                                  $nb_echecs++;
4427                              }
4428                          }
4429                          else{
4430                              my_echo("$uid ");
4431                          }
4432                      }
4433  
4434                      // Ajout des élèves
4435                      for($n=0;$n<count($tab_eleve_uid);$n++) {
4436                          $uid=$tab_eleve_uid[$n];
4437                          $attribut=array("cn");
4438                          $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix.$mat."_".$div.")(memberuid=$uid))", $attribut);
4439                          if(count($tabtmp)==0) {
4440                              unset($attribut);
4441                              $attribut=array();
4442                              $attribut["memberUid"]=$uid;
4443                              if(modify_attribut("cn=Cours_".$prefix.$mat."_".$div,"groups",$attribut,"add")) {
4444                                  my_echo("<b>$uid</b> ");
4445                              }
4446                              else{
4447                                  my_echo("<font color='red'>$uid</font> ");
4448                                  $nb_echecs++;
4449                              }
4450                          }
4451                          else{
4452                              my_echo("$uid ");
4453                          }
4454                      }
4455                      my_echo(" (<i>".count($tab_prof_uid)."+".count($tab_eleve_uid)."</i>)\n");
4456                      my_echo("<br />\n");
4457                      if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
4458                  }
4459                  my_echo("</p>\n");
4460              }
4461          }
4462  
4463          if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
4464  
4465  
4466  
4467  
4468  
4469  
4470          // Dans le cas de l'import XML élèves, on a $eleve[$numero]["options"][$j]["code_matiere"]
4471  
4472          // Rechercher les groupes
4473          //$groupes[$i]["code"]    -> 3 A1TEC1 ou 3AGL1-1
4474          //$groupes[$i]["divisions"][$j]["code"]    -> 3 A1
4475          //$groupes[$i]["code_matiere"]            -> 070800
4476          //$groupes[$i]["enseignant"][$m]["id"]    -> 38101
4477  
4478          $nom_groupe_a_debugger="3 ALL2";
4479  		function my_echo_double_sortie($chaine, $balise="p") {
4480              $debug="n";
4481              if($debug=="y") {
4482                  $retour="<$balise style='color:red'>".$chaine."</$balise>\n";
4483                  echo $retour;
4484                  my_echo($retour);
4485              }
4486          }
4487  
4488          my_echo_double_sortie("count(\$groupes)=".count($groupes));
4489  
4490          for($i=0;$i<count($groupes);$i++) {
4491              if(isset($groupes[$i]["service"])) {
4492                  for($p=0;$p<count($groupes[$i]["service"]);$p++) {
4493                      $temoin_grp="";
4494                      $grp_mat="";
4495  
4496                      //my_echo("<p>\$grp=\$groupes[$i][\"code\"]=".$grp."<br />");
4497  
4498                      if(isset($groupes[$i]["service"][$p]["code_matiere"])) {
4499                          $grp_id_mat=$groupes[$i]["service"][$p]["code_matiere"];
4500                          //my_echo("\$grp_id_mat=\$groupes[$i][\"code_matiere\"]=".$grp_id_mat."<br />");
4501                          // Recherche du nom court de matière
4502                          for($n=0;$n<count($matiere);$n++) {
4503                              if($matiere[$n]["code"]==$grp_id_mat) {
4504                                  $grp_mat=$matiere[$n]["code_gestion"];
4505                              }
4506                          }
4507                      }
4508  
4509                      $grp=$groupes[$i]["code"];
4510                      if(count($groupes[$i]["service"])>1) {
4511                          if($grp_mat!="") {
4512                              $grp=$grp."_".$grp_mat;
4513                          }
4514                          else{
4515                              $grp=$grp."_".$p;
4516                          }
4517                      }
4518                      $grp=apostrophes_espaces_2_underscore(remplace_accents($grp));
4519  
4520                      //my_echo("\$grp_mat=".$grp_mat."<br />");
4521  
4522  
4523                      // Récupération des profs associés à ce groupe
4524                      unset($tab_prof_uid);
4525                      $tab_prof_uid=array();
4526                      if(isset($groupes[$i]["service"][$p]["enseignant"])) {
4527                          for($m=0;$m<count($groupes[$i]["service"][$p]["enseignant"]);$m++) {
4528                              $employeeNumber="P".$groupes[$i]["service"][$p]["enseignant"][$m]["id"];
4529                              $attribut=array("uid");
4530                              $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
4531                              if(count($tabtmp)!=0) {
4532                                  $uid=$tabtmp[0];
4533                                  if(!in_array($uid,$tab_prof_uid)) {
4534                                      $tab_prof_uid[]=$uid;
4535                                  }
4536                              }
4537                          }
4538                      }
4539  
4540  
4541                      if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4542                          my_echo_double_sortie("\$groupes[$i][\"code\"]=".$groupes[$i]["code"]);
4543                      }
4544  
4545                      // Récupération des élèves associés aux classes de ce groupe
4546                      unset($tab_eleve_uid);
4547                      $tab_eleve_uid=array();
4548                      $chaine_div="";
4549                      for($j=0;$j<count($groupes[$i]["divisions"]);$j++) {
4550                          $div=$groupes[$i]["divisions"][$j]["code"];
4551                          //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div)));
4552                          $div=apostrophes_espaces_2_underscore(remplace_accents($div));
4553  
4554  
4555                              if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4556                                  my_echo_double_sortie("Classe associee ".$div);
4557                              }
4558  
4559                          //my_echo("\$div=".$div."<br />");
4560  
4561                          //$tab_division[$ind_div]["option"][$k]["code_matiere"]
4562  
4563                          // Dans le cas de l'import XML, on récupère la liste des options suivies par les élèves
4564                          $ind_div="";
4565                          if($type_fichier_eleves=="xml") {
4566                              // Identifier $k tel que $tab_division[$k]["nom"]==$div
4567                              for($k=0;$k<count($tab_division);$k++) {
4568                                  //my_echo("\$tab_division[$k][\"nom\"]=".$tab_division[$k]["nom"]."<br />");
4569                                  //if(ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($tab_division[$k]["nom"])))==$div) {
4570                                  if(apostrophes_espaces_2_underscore(remplace_accents($tab_division[$k]["nom"]))==$div) {
4571                                      $ind_div=$k;
4572  
4573                                      if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4574                                          my_echo_double_sortie("\$ind_div=".$ind_div);
4575                                      }
4576  
4577                                      break;
4578                                  }
4579                              }
4580                          }
4581                          //my_echo("\$ind_div=".$ind_div."<br />");
4582  
4583  
4584  
4585                          // La matière est-elle optionnelle dans la classe?
4586                          $temoin_groupe_apparaissant_dans_Eleves_xml="non";
4587                          $temoin_matiere_optionnelle="non";
4588                          $ind_mat="";
4589                          if(($type_fichier_eleves=="xml")&&($ind_div!="")) {
4590                              for($k=0;$k<count($tab_division[$ind_div]["option"]);$k++) {
4591  
4592                                  if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4593                                      my_echo_double_sortie("\$tab_division[$ind_div][\"option\"][$k][\"code_matiere\"]=".$tab_division[$ind_div]["option"][$k]["code_matiere"]." et \$grp_id_mat=$grp_id_mat");
4594                                  }
4595  
4596                                  //if(in_array($groupes[$i]["code"], $tab_groups)) {
4597                                  if((in_array($groupes[$i]["code"], $tab_groups))||(in_array(apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"])), $tab_groups))) {
4598                                      // Les inscriptions des eleves ont ete inscrites dans le ElevesSansAdresses.xml
4599                                      $temoin_groupe_apparaissant_dans_Eleves_xml="oui";
4600                                      $temoin_matiere_optionnelle="oui";
4601                                      $ind_mat=$k;
4602  
4603                                      if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4604                                          my_echo_double_sortie("Matiere optionnelle apparaissant dans ElevesSansAdresses avec \$ind_mat=$ind_mat");
4605                                      }
4606  
4607                                      break;
4608                                  }
4609                                  elseif($tab_division[$ind_div]["option"][$k]["code_matiere"]==$grp_id_mat) {
4610                                      $temoin_matiere_optionnelle="oui";
4611                                      $ind_mat=$k;
4612  
4613                                      if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4614                                          my_echo_double_sortie("Matiere optionnelle avec \$ind_mat=$ind_mat");
4615                                      }
4616  
4617                                      break;
4618                                  }
4619  
4620                              }
4621                          }
4622                          //my_echo("\$ind_mat=".$ind_mat."<br />");
4623  
4624  
4625  
4626                          if($chaine_div=="") {
4627                              $chaine_div=$div;
4628                          }
4629                          else{
4630                              $chaine_div.=" / ".$div;
4631                          }
4632  
4633                              if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4634                                  my_echo_double_sortie("\$temoin_matiere_optionnelle=".$temoin_matiere_optionnelle);
4635                              }
4636  
4637                          if($temoin_matiere_optionnelle!="oui") {
4638                              //$attribut=array("memberUid");
4639                              $attribut=array("memberuid");
4640                              $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut);
4641                              if(count($tabtmp)!=0) {
4642                                  for($k=0;$k<count($tabtmp);$k++) {
4643                                      // Normalement, chaque élève n'est inscrit qu'une fois dans la classe, mais bon...
4644                                      if(!in_array($tabtmp[$k],$tab_eleve_uid)) {
4645                                          $tab_eleve_uid[]=$tabtmp[$k];
4646                                      }
4647                                  }
4648                              }
4649                          }
4650                          else{
4651  
4652                              if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4653                                  my_echo_double_sortie("\$temoin_groupe_apparaissant_dans_Eleves_xml=".$temoin_groupe_apparaissant_dans_Eleves_xml);
4654                              }
4655  
4656                              //my_echo("<p>Matière optionnelle pour $grp:<br />");
4657                              if($temoin_groupe_apparaissant_dans_Eleves_xml!="oui") {
4658                                  for($k=0;$k<count($tab_division[$ind_div]["option"][$ind_mat]["eleve"]);$k++) {
4659                                      $attribut=array("uid");
4660                                      //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />");
4661  
4662                                      $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k].")(employeenumber=".sprintf("%05d",$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k])."))", $attribut);
4663  
4664                                      if(count($tabtmp)!=0) {
4665                                          if(!in_array($tabtmp[0],$tab_eleve_uid)) {
4666                                              //my_echo("Ajout à \$tab_eleve_uid<br />");
4667                                              $tab_eleve_uid[]=$tabtmp[0];
4668                                          }
4669                                      }
4670                                  }
4671                              }
4672                              else {
4673  
4674                                  for($k=0;$k<count($tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))]);$k++) {
4675                                      // Recuperer l'uid correspondant a l'elenoet/employeeNumber stocke
4676                                      $attribut=array("uid");
4677  
4678                                      $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k].")(employeenumber=".sprintf("%05d",$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k])."))", $attribut);
4679  
4680                                      if((isset($tabtmp[0]))&&(!in_array($tabtmp[0],$tab_eleve_uid))) {
4681                                          $tab_eleve_uid[]=$tabtmp[0];
4682                                      }
4683                                  }
4684                              }
4685  
4686                              if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4687                                  my_echo_double_sortie(print_r($tab_eleve_uid),"pre");
4688                              }
4689  
4690                          }
4691                      }
4692  
4693  
4694                      // Création du groupe
4695                      // Le groupe Cours existe-t-il?
4696                      my_echo("<p>\n");
4697                      $attribut=array("cn");
4698                      $tabtmp=get_tab_attribut("groups", "cn=Cours_".$prefix."$grp", $attribut);
4699                      if(count($tabtmp)==0) {
4700                          $attributs=array();
4701                          $attributs["cn"]="Cours_".$prefix."$grp";
4702  
4703                          // MODIF: boireaus 20070728
4704                          //$attributs["objectClass"]="top";
4705                          $attributs["objectClass"][0]="top";
4706                          $attributs["objectClass"][1]="posixGroup";
4707                          //$attributs["objectClass"][2]="sambaGroupMapping";
4708  
4709                          //$attributs["objectClass"]="posixGroup";
4710                          //$attributs["objectClass"]="groupOfNames";
4711                          // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo...
4712                          //$gidNumber=get_first_free_gidNumber();
4713                          $gidNumber=get_first_free_gidNumber(10000);
4714                          if($gidNumber!=false) {
4715                              $attributs["gidNumber"]="$gidNumber";
4716                              // Ou récupérer un nom long du fichier de STS...
4717                              $attributs["description"]="$grp_mat / $chaine_div";
4718  
4719                              //my_echo("<p>Création du groupe Cours_".$prefix."$grp: ");
4720                              my_echo("Création du groupe Cours_".$prefix."$grp: ");
4721                              //my_echo(" grp_mat=$grp_mat ");
4722                              if(add_entry ("cn=Cours_".$prefix."$grp", "groups", $attributs)) {
4723                                  /*
4724                                  unset($attributs);
4725                                  $attributs=array();
4726                                  $attributs["objectClass"]="posixGroup";
4727                                  if(modify_attribut("cn=Cours_".$prefix."$grp","groups", $attributs, "add")) {
4728                                  */
4729                                      my_echo("<font color='green'>SUCCES</font>");
4730  
4731                                      if ($servertype=="SE3") {
4732                                          //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\"");
4733                                          $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\"", $retour);
4734                                      }
4735                                  /*
4736                                  }
4737                                  else{
4738                                      my_echo("<font color='red'>ECHEC</font>");
4739                                      $temoin_cours="PROBLEME";
4740                                      $nb_echecs++;
4741                                  }
4742                                  */
4743                                  //my_echo("<font color='green'>SUCCES</font>");
4744                              }
4745                              else{
4746                                  my_echo("<font color='red'>ECHEC</font>");
4747                                  $temoin_cours="PROBLEME";
4748                                  $nb_echecs++;
4749                              }
4750                              my_echo("<br />\n");
4751                              if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
4752                          }
4753                          else{
4754                              my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
4755                              $temoin_cours="PROBLEME";
4756                              $nb_echecs++;
4757                          }
4758                      }
4759  
4760  
4761                      if($temoin_cours=="") {
4762                          // Ajout de membres au groupe
4763                          my_echo("Ajout de membres au groupe Cours_".$prefix."$grp: ");
4764                          // Ajout des profs
4765                          for($n=0;$n<count($tab_prof_uid);$n++) {
4766                              $uid=$tab_prof_uid[$n];
4767                              $attribut=array("cn");
4768                              $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut);
4769                              if(count($tabtmp)==0) {
4770                                  unset($attribut);
4771                                  $attribut=array();
4772                                  $attribut["memberUid"]=$uid;
4773                                  if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) {
4774                                      my_echo("<b>$uid</b> ");
4775                                  }
4776                                  else{
4777                                      my_echo("<font color='red'>$uid</font> ");
4778                                      $nb_echecs++;
4779                                  }
4780                              }
4781                              else{
4782                                  my_echo("$uid ");
4783                              }
4784                          }
4785  
4786                          // Ajout des élèves
4787                          for($n=0;$n<count($tab_eleve_uid);$n++) {
4788                              $uid=$tab_eleve_uid[$n];
4789                              $attribut=array("cn");
4790                              $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut);
4791                              if(count($tabtmp)==0) {
4792                                  unset($attribut);
4793                                  $attribut=array();
4794                                  $attribut["memberUid"]=$uid;
4795                                  if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) {
4796                                      my_echo("<b>$uid</b> ");
4797                                  }
4798                                  else{
4799                                      my_echo("<font color='red'>$uid</font> ");
4800                                      $nb_echecs++;
4801                                  }
4802                              }
4803                              else{
4804                                  my_echo("$uid ");
4805                              }
4806                          }
4807                          my_echo(" (<i>".count($tab_prof_uid)."+".count($tab_eleve_uid)."</i>)\n");
4808                          my_echo("<br />\n");
4809                          if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
4810                      }
4811                      my_echo("</p>\n");
4812                  }
4813              }
4814              else {
4815                  //=============================================================================================
4816                  // Pas de section "<SERVICE " dans ce groupe
4817                  $grp=$groupes[$i]["code"];
4818                  $grp=apostrophes_espaces_2_underscore(remplace_accents($grp));
4819                  $temoin_grp="";
4820                  $grp_mat="";
4821  
4822                  // Faute de section SERVICE, on ne récupère pas le grp_id_mat
4823                  // On n'a pas de $grp_id_mat faute de section SERVICE donc pas moyen d'identifier la matière associée au groupe et de chercher si cette matière a été repérée comme optionnelle
4824  
4825                  if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4826                      my_echo_double_sortie("\$groupes[$i][\"code\"]=".$groupes[$i]["code"]);
4827                  }
4828  
4829                  //my_echo("<p>\$grp=\$groupes[$i][\"code\"]=".$grp."<br />");
4830  
4831                  // Récupération des profs associés à ce groupe
4832                  // Impossible faute de section SERVICE
4833                  unset($tab_prof_uid);
4834                  $tab_prof_uid=array();
4835  
4836                  // Récupération des élèves associés aux classes de ce groupe
4837                  unset($tab_eleve_uid);
4838                  $tab_eleve_uid=array();
4839                  $chaine_div="";
4840                  for($j=0;$j<count($groupes[$i]["divisions"]);$j++) {
4841                      $div=$groupes[$i]["divisions"][$j]["code"];
4842                      //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div)));
4843                      $div=apostrophes_espaces_2_underscore(remplace_accents($div));
4844  
4845                      //my_echo("\$div=".$div."<br />");
4846  
4847                      //$tab_division[$ind_div]["option"][$k]["code_matiere"]
4848  
4849                      if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4850                          my_echo_double_sortie("Classe associee ".$div);
4851                      }
4852  
4853                      // Dans le cas de l'import XML, on récupère la liste des options suivies par les élèves
4854                      $ind_div="";
4855                      if($type_fichier_eleves=="xml") {
4856                          // Identifier $k tel que $tab_division[$k]["nom"]==$div
4857                          for($k=0;$k<count($tab_division);$k++) {
4858                              //my_echo("\$tab_division[$k][\"nom\"]=".$tab_division[$k]["nom"]."<br />");
4859                              //if(ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($tab_division[$k]["nom"])))==$div) {
4860                              if(apostrophes_espaces_2_underscore(remplace_accents($tab_division[$k]["nom"]))==$div) {
4861                                  $ind_div=$k;
4862  
4863                                  if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4864                                      my_echo_double_sortie("\$ind_div=".$ind_div);
4865                                  }
4866  
4867                                  break;
4868                              }
4869                          }
4870                      }
4871                      //my_echo("\$ind_div=".$ind_div."<br />");
4872  
4873  
4874  
4875                      // La matière est-elle optionnelle dans la classe?
4876                      $temoin_groupe_apparaissant_dans_Eleves_xml="non";
4877                      $temoin_matiere_optionnelle="non";
4878                      $ind_mat="";
4879  
4880                      //if(in_array($groupes[$i]["code"], $tab_groups)) {
4881                      if(is_array($tab_groups)) {
4882                          if((in_array($groupes[$i]["code"], $tab_groups))||(in_array(apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"])), $tab_groups))) {
4883                              // Les inscriptions des eleves ont ete inscrites dans le ElevesSansAdresses.xml
4884                              $temoin_groupe_apparaissant_dans_Eleves_xml="oui";
4885                              $temoin_matiere_optionnelle="oui";
4886                              $ind_mat=$k;
4887  
4888                              if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4889                                  my_echo_double_sortie("Matiere optionnelle apparaissant dans ElevesSansAdresses avec \$ind_mat=$ind_mat");
4890                              }
4891                          }
4892                      }
4893  
4894                      //my_echo("\$ind_mat=".$ind_mat."<br />");
4895  
4896                      if($chaine_div=="") {
4897                          $chaine_div=$div;
4898                      }
4899                      else{
4900                          $chaine_div.=" / ".$div;
4901                      }
4902  
4903                      if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4904                          my_echo_double_sortie("\$temoin_matiere_optionnelle=".$temoin_matiere_optionnelle);
4905                      }
4906  
4907                      if($temoin_matiere_optionnelle!="oui") {
4908                          //$attribut=array("memberUid");
4909                          $attribut=array("memberuid");
4910                          $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut);
4911                          if(count($tabtmp)!=0) {
4912                              for($k=0;$k<count($tabtmp);$k++) {
4913                                  // Normalement, chaque élève n'est inscrit qu'une fois dans la classe, mais bon...
4914                                  if(!in_array($tabtmp[$k],$tab_eleve_uid)) {
4915                                      $tab_eleve_uid[]=$tabtmp[$k];
4916                                  }
4917                              }
4918                          }
4919                      }
4920                      else{
4921  
4922                          if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4923                              my_echo_double_sortie("\$temoin_groupe_apparaissant_dans_Eleves_xml=".$temoin_groupe_apparaissant_dans_Eleves_xml);
4924                          }
4925  
4926                          //my_echo("<p>Matière optionnelle pour $grp:<br />");
4927                          if($temoin_groupe_apparaissant_dans_Eleves_xml!="oui") {
4928                              for($k=0;$k<count($tab_division[$ind_div]["option"][$ind_mat]["eleve"]);$k++) {
4929                                  $attribut=array("uid");
4930                                  //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />");
4931                                  $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k].")(employeenumber=".sprintf("%05d",$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k])."))", $attribut);
4932  
4933                                  if(count($tabtmp)!=0) {
4934                                      if(!in_array($tabtmp[0],$tab_eleve_uid)) {
4935                                          //my_echo("Ajout à \$tab_eleve_uid<br />");
4936                                          $tab_eleve_uid[]=$tabtmp[0];
4937                                      }
4938                                  }
4939                              }
4940                          }
4941                          else {
4942  
4943                              if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4944                                  my_echo_double_sortie("count(\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(\$groupes[$i]['code']))])=count(\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(".$groupes[$i]['code']."))])=count(\$tab_groups_member[".apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))."])=".count($tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))]));
4945                              }
4946  
4947                              for($k=0;$k<count($tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))]);$k++) {
4948                                  // Recuperer l'uid correspondant a l'elenoet/employeeNumber stocke
4949                                  //$tabtmp=search_people("employeeNumber=".$tab_groups_member[$groupes[$i]["code"]][$k]);
4950  
4951                                  if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4952                                      my_echo_double_sortie("\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(\$groupes[$i]['code']))][$k]=\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(".$groupes[$i]['code']."))][$k]=\$tab_groups_member[".apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]['code']))."][$k]=".$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]['code']))][$k]);
4953                                  }
4954  
4955                                  $attribut=array("uid");
4956                                  $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k].")(employeenumber=".sprintf("%05d",$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k])."))", $attribut);
4957  
4958                                  if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4959                                      my_echo_double_sortie(print_r($tabtmp),"pre");
4960                                  }
4961  
4962                                  if((isset($tabtmp[0]))&&(!in_array($tabtmp[0],$tab_eleve_uid))) {
4963                                      $tab_eleve_uid[]=$tabtmp[0];
4964                                  }
4965                              }
4966                          }
4967  
4968                          if($groupes[$i]["code"]==$nom_groupe_a_debugger) {
4969                              my_echo_double_sortie(print_r($tab_eleve_uid),"pre");
4970                          }
4971  
4972                      }
4973                  }
4974  
4975  
4976                  // Création du groupe
4977                  // Le groupe Cours existe-t-il?
4978                  my_echo("<p>\n");
4979                  $attribut=array("cn");
4980                  $tabtmp=get_tab_attribut("groups", "cn=Cours_".$prefix."$grp", $attribut);
4981                  if(count($tabtmp)==0) {
4982                      $attributs=array();
4983                      $attributs["cn"]="Cours_".$prefix."$grp";
4984  
4985                      // MODIF: boireaus 20070728
4986                      //$attributs["objectClass"]="top";
4987                      $attributs["objectClass"][0]="top";
4988                      $attributs["objectClass"][1]="posixGroup";
4989                      //$attributs["objectClass"][2]="sambaGroupMapping";
4990  
4991                      //$attributs["objectClass"]="posixGroup";
4992                      //$attributs["objectClass"]="groupOfNames";
4993                      // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo...
4994                      //$gidNumber=get_first_free_gidNumber();
4995                      $gidNumber=get_first_free_gidNumber(10000);
4996                      if($gidNumber!=false) {
4997                          $attributs["gidNumber"]="$gidNumber";
4998                          // Ou récupérer un nom long du fichier de STS...
4999                          $attributs["description"]="$grp_mat / $chaine_div";
5000  
5001                          //my_echo("<p>Création du groupe Cours_".$prefix."$grp: ");
5002                          my_echo("Création du groupe Cours_".$prefix."$grp: ");
5003                          //my_echo(" grp_mat=$grp_mat ");
5004                          if(add_entry ("cn=Cours_".$prefix."$grp", "groups", $attributs)) {
5005                              /*
5006                              unset($attributs);
5007                              $attributs=array();
5008                              $attributs["objectClass"]="posixGroup";
5009                              if(modify_attribut("cn=Cours_".$prefix."$grp","groups", $attributs, "add")) {
5010                              */
5011                                  my_echo("<font color='green'>SUCCES</font>");
5012  
5013                                  if ($servertype=="SE3") {
5014                                      //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\"");
5015                                      $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\"", $retour);
5016                                  }
5017                              /*
5018                              }
5019                              else{
5020                                  my_echo("<font color='red'>ECHEC</font>");
5021                                  $temoin_cours="PROBLEME";
5022                                  $nb_echecs++;
5023                              }
5024                              */
5025                              //my_echo("<font color='green'>SUCCES</font>");
5026                          }
5027                          else{
5028                              my_echo("<font color='red'>ECHEC</font>");
5029                              $temoin_cours="PROBLEME";
5030                              $nb_echecs++;
5031                          }
5032                          my_echo("<br />\n");
5033                          if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
5034                      }
5035                      else{
5036                          my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
5037                          $temoin_cours="PROBLEME";
5038                          $nb_echecs++;
5039                      }
5040                  }
5041  
5042  
5043                  if($temoin_cours=="") {
5044                      // Ajout de membres au groupe
5045                      my_echo("Ajout de membres au groupe Cours_".$prefix."$grp: ");
5046                      // Ajout des profs
5047                      for($n=0;$n<count($tab_prof_uid);$n++) {
5048                          $uid=$tab_prof_uid[$n];
5049                          $attribut=array("cn");
5050                          $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut);
5051                          if(count($tabtmp)==0) {
5052                              unset($attribut);
5053                              $attribut=array();
5054                              $attribut["memberUid"]=$uid;
5055                              if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) {
5056                                  my_echo("<b>$uid</b> ");
5057                              }
5058                              else{
5059                                  my_echo("<font color='red'>$uid</font> ");
5060                                  $nb_echecs++;
5061                              }
5062                          }
5063                          else{
5064                              my_echo("$uid ");
5065                          }
5066                      }
5067  
5068                      // Ajout des élèves
5069                      for($n=0;$n<count($tab_eleve_uid);$n++) {
5070                          $uid=$tab_eleve_uid[$n];
5071                          $attribut=array("cn");
5072                          $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut);
5073                          if(count($tabtmp)==0) {
5074                              unset($attribut);
5075                              $attribut=array();
5076                              $attribut["memberUid"]=$uid;
5077                              if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) {
5078                                  my_echo("<b>$uid</b> ");
5079                              }
5080                              else{
5081                                  my_echo("<font color='red'>$uid</font> ");
5082                                  $nb_echecs++;
5083                              }
5084                          }
5085                          else{
5086                              my_echo("$uid ");
5087                          }
5088                      }
5089                      my_echo(" (<i>".count($tab_prof_uid)."+".count($tab_eleve_uid)."</i>)\n");
5090                      my_echo("<br />\n");
5091                      if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
5092                  }
5093                  my_echo("</p>\n");
5094              }
5095          }
5096          if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
5097      }
5098      else{
5099          my_echo("</h3>\n");
5100          my_echo("<blockquote>\n");
5101          my_echo("<p>Création des Cours non demandée.</p>\n");
5102      }
5103  
5104      my_echo("</blockquote>\n");
5105  
5106      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
5107  
5108  
5109  
5110  
5111      my_echo("<a name='creer_groupe_pp'></a>\n");
5112      //my_echo("<h2>Création des groupes Cours</h2>\n");
5113      //my_echo("<h3>Création des groupes Cours</h3>\n");
5114      my_echo("<h3>Création d'un groupe Professeurs Principaux");
5115      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
5116  
5117      if($alimenter_groupe_pp=='y') {
5118          my_echo("</h3>\n");
5119  
5120          // Prof principal
5121          unset($tab_pp);
5122          $tab_pp=array();
5123          for($m=0;$m<count($prof);$m++) {
5124              if(isset($prof[$m]["prof_princ"])) {
5125                  $employeeNumber="P".$prof[$m]["id"];
5126                  $attribut=array("uid");
5127                  $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut);
5128                  if(count($tabtmp)!=0) {
5129                      $uid=$tabtmp[0];
5130                      if(!in_array($uid,$tab_pp)) {
5131                          $tab_pp[]=$uid;
5132                      }
5133                  }
5134              }
5135          }
5136          sort($tab_pp);
5137  
5138          // Vider et ré-alimenter le groupe
5139          // Initialisation des membres du groupe Professeurs_Principaux
5140          $tab_mem_pp=array();
5141  
5142          $attribut=array("cn");
5143          $tabtmp=get_tab_attribut("groups", "cn=$nom_groupe_pp", $attribut);
5144          if(count($tabtmp)==0) {
5145              // On crée le groupe
5146              $attributs=array();
5147              $attributs["cn"]="$nom_groupe_pp";
5148              $attributs["objectClass"][0]="top";
5149              $attributs["objectClass"][1]="posixGroup";
5150              //$attributs["objectClass"][2]="sambaGroupMapping";
5151  
5152              //$attributs["objectClass"]="posixGroup";
5153              //$attributs["objectClass"]="groupOfNames";
5154              // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo...
5155              //$gidNumber=get_first_free_gidNumber();
5156              $gidNumber=get_first_free_gidNumber(10000);
5157              if($gidNumber!=false) {
5158                  $attributs["gidNumber"]="$gidNumber";
5159                  // Ou récupérer un nom long du fichier de STS...
5160                  $attributs["description"]="Professeurs Principaux";
5161  
5162                  my_echo("<p>Création du groupe $nom_groupe_pp: ");
5163                  if(add_entry ("cn=$nom_groupe_pp", "groups", $attributs)) {
5164                      my_echo("<font color='green'>SUCCES</font>");
5165  
5166                      if ($servertype=="SE3") {
5167                          //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh $nom_groupe_pp $nom_groupe_pp \"Professeurs Principaux\"");
5168                          $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh $nom_groupe_pp $nom_groupe_pp \"Professeurs Principaux\"", $retour);
5169                      }
5170                  }
5171                  else{
5172                      my_echo("<font color='red'>ECHEC</font>");
5173                      //$temoin_cours="PROBLEME";
5174                      $nb_echecs++;
5175                  }
5176                  my_echo("<br />\n");
5177                  if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
5178              }
5179              else{
5180                  my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n");
5181                  //$temoin_cours="PROBLEME";
5182                  $nb_echecs++;
5183              }
5184          }
5185          else {
5186              // Liste des comptes présents dans le Groupe_Professeurs_Principaux.
5187              unset($attribut);
5188              $attribut=array("memberuid");
5189              $tab_mem_pp=get_tab_attribut("groups","cn=$nom_groupe_pp",$attribut);
5190  
5191              /*
5192              if(count($tab_mem_pp)>0) {
5193                  my_echo("<p>On vide le groupe $nom_groupe_pp<br />\n");
5194      
5195                  my_echo("Suppression de l'appartenance au groupe de: \n");
5196                  for($i=0;$i<count($tab_mem_pp);$i++) {
5197                      if($i==0) {
5198                          $sep="";
5199                      }
5200                      else{
5201                          $sep=", ";
5202                      }
5203                      my_echo($sep);
5204      
5205                      unset($attr);
5206                      $attr=array();
5207                      $attr["memberuid"]=$tab_mem_pp[$i];
5208                      if(modify_attribut("cn=$nom_groupe_pp","groups",$attr, "del")) {
5209                          my_echo($tab_mem_pp[$i]);
5210                      }
5211                      else{
5212                          my_echo("<font color='red'>".$tab_mem_pp[$i]."</font>");
5213                      }
5214                  }
5215                  my_echo("</p>\n");
5216              }
5217              else {
5218                  my_echo("<p>Le groupe $nom_groupe_pp est vide.</p>\n");
5219              }
5220              */
5221          }
5222  
5223          if(count($tab_pp)==0) {
5224              my_echo("Aucun professeur principal n'a été trouvé<br />\n");
5225          }
5226          else {
5227              // Ajout de membres au groupe d'après $tab_pp
5228              my_echo("Ajout de membres au groupe $nom_groupe_pp: ");
5229      
5230              for($n=0;$n<count($tab_pp);$n++) {
5231                  $uid=$tab_pp[$n];
5232                  if(in_array($uid,$tab_mem_pp)) {
5233                      // Rien à faire, déjà présent
5234                      my_echo("$uid ");
5235                  }
5236                  else {
5237          
5238                      $attribut=array("cn");
5239                      $tabtmp=get_tab_attribut("groups", "(&(cn=$nom_groupe_pp)(memberuid=$uid))", $attribut);
5240                      if(count($tabtmp)==0) {
5241                          unset($attribut);
5242                          $attribut=array();
5243                          $attribut["memberUid"]=$uid;
5244                          if(modify_attribut("cn=$nom_groupe_pp","groups",$attribut,"add")) {
5245                              my_echo("<b>$uid</b> ");
5246                          }
5247                          else{
5248                              my_echo("<font color='red'>$uid</font> ");
5249                              $nb_echecs++;
5250                          }
5251                      }
5252                      else{
5253                          my_echo("$uid ");
5254                      }
5255                  }
5256              }
5257              my_echo(" (<i>".count($tab_pp)."</i>)\n");
5258  
5259  
5260              $temoin_membres_pp_a_virer="n";
5261              for($n=0;$n<count($tab_mem_pp);$n++) {
5262                  $uid=$tab_mem_pp[$n];
5263                  if(!in_array($uid,$tab_pp)) {
5264                      if($temoin_membres_pp_a_virer=="n") {
5265                          my_echo("<br />\n");
5266                          my_echo("Sortie du groupe $nom_groupe_pp de: ");
5267                      }
5268  
5269                      unset($attribut);
5270                      $attribut=array();
5271                      $attribut["memberUid"]=$uid;
5272                      if(modify_attribut("cn=$nom_groupe_pp","groups",$attribut,"del")) {
5273                          my_echo("$uid ");
5274                      }
5275                      else{
5276                          my_echo("<font color='red'>$uid</font> ");
5277                          $nb_echecs++;
5278                      }
5279  
5280                  }
5281              }
5282              my_echo("<br />\n");
5283          }
5284          if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");}
5285  
5286      }
5287      else {
5288          my_echo("</h3>\n");
5289          my_echo("<blockquote>\n");
5290          my_echo("<p>Création/alimentation du groupe Profs Principaux non demandée.</p>\n");
5291      }
5292      my_echo("</blockquote>\n");
5293  
5294  
5295  
5296      my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n");
5297  
5298      my_echo("<a name='fin'></a>\n");
5299      //my_echo("<h3>Rapport final de création</h3>");
5300      my_echo("<h3>Rapport final de création");
5301      if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");}
5302      my_echo("</h3>\n");
5303      my_echo("<blockquote>\n");
5304      my_echo("<p>Terminé!</p>\n");
5305      my_echo("<script type='text/javascript'>
5306      document.getElementById('id_fin').style.display='';
5307  </script>");
5308  
5309      $chaine="";
5310      if($nouveaux_comptes==0) {
5311          $chaine.="<p>Aucun nouveau compte n'a été créé.</p>\n";
5312          //my_echo("<p>Aucun nouveau compte n'a été créé.</p>\n");
5313      }
5314      elseif($nouveaux_comptes==1) {
5315          //my_echo("<p>$nouveaux_comptes nouveau compte a été créé: $tab_nouveaux_comptes[0]</p>\n");
5316          $chaine.="<p>$nouveaux_comptes nouveau compte a été créé: $tab_nouveaux_comptes[0]</p>\n";
5317      }
5318      else{
5319          /*
5320          my_echo("<p>$nouveaux_comptes nouveaux comptes ont été créés: \n");
5321          my_echo($tab_nouveaux_comptes[0]);
5322          for($i=1;$i<count($tab_nouveaux_comptes);$i++) {
5323              my_echo(", $tab_nouveaux_comptes[$i]");
5324          }
5325          my_echo("</p>\n");
5326          */
5327          $chaine.="<p>$nouveaux_comptes nouveaux comptes ont été créés: \n";
5328          $chaine.=$tab_nouveaux_comptes[0];
5329          for($i=1;$i<count($tab_nouveaux_comptes);$i++) {
5330              $chaine.=", $tab_nouveaux_comptes[$i]";
5331          }
5332          $chaine.="</p>\n";
5333      }
5334  
5335      if($comptes_avec_employeeNumber_mis_a_jour==0) {
5336          //my_echo("<p>Aucun compte existant sans employeeNumber n'a été récupéré/corrigé.</p>\n");
5337          $chaine.="<p>Aucun compte existant sans employeeNumber n'a été récupéré/corrigé.</p>\n";
5338      }
5339      elseif($comptes_avec_employeeNumber_mis_a_jour==1) {
5340          //my_echo("<p>$comptes_avec_employeeNumber_mis_a_jour compte existant sans employeeNumber a été récupéré/corrigé (<i>son employeeNumber est maintenant renseigné</i>): $tab_comptes_avec_employeeNumber_mis_a_jour[0]</p>\n");
5341          $chaine.="<p>$comptes_avec_employeeNumber_mis_a_jour compte existant sans employeeNumber a été récupéré/corrigé (<i>son employeeNumber est maintenant renseigné</i>): $tab_comptes_avec_employeeNumber_mis_a_jour[0]</p>\n";
5342      }
5343      else{
5344          /*
5345          my_echo("<p>$comptes_avec_employeeNumber_mis_a_jour comptes existants sans employeeNumber ont été récupérés/corrigés (<i>leur employeeNumber est maintenant renseigné</i>): \n");
5346          my_echo("$tab_comptes_avec_employeeNumber_mis_a_jour[0]");
5347          for($i=1;$i<count($tab_comptes_avec_employeeNumber_mis_a_jour);$i++) {my_echo(", $tab_comptes_avec_employeeNumber_mis_a_jour[$i]");}
5348          my_echo("</p>\n");
5349          */
5350          $chaine.="<p>$comptes_avec_employeeNumber_mis_a_jour comptes existants sans employeeNumber ont été récupérés/corrigés (<i>leur employeeNumber est maintenant renseigné</i>): \n";
5351          $chaine.="$tab_comptes_avec_employeeNumber_mis_a_jour[0]";
5352          for($i=1;$i<count($tab_comptes_avec_employeeNumber_mis_a_jour);$i++) {$chaine.=", $tab_comptes_avec_employeeNumber_mis_a_jour[$i]";}
5353          $chaine.="</p>\n";
5354      }
5355  
5356      my_echo($infos_corrections_gecos);
5357  
5358      $chaine.=$infos_corrections_gecos;
5359  
5360      if(count($tab_eleve_autre_etab)>0) {
5361          $tmp_txt="Un ou des élèves n'ont pas été enregistrés dans l'annuaire parce qu'importés d'un autre établissement avec un identifiant non encore mis à jour.\n";
5362          //my_echo("<p>".$tmp_txt."</p><ul>");
5363          //$chaine.=$tmp_txt;
5364          $chaine.="<p style='color:red'>".$tmp_txt."</p><ul>";
5365          for($loop=0;$loop<count($tab_eleve_autre_etab);$loop++) {
5366              $tmp_tab=explode("|", $tab_eleve_autre_etab[$loop]);
5367              if($servertype=="SE3") {
5368                  $tmp_txt="<a href='../annu/add_user.php?nom=".remplace_accents($tmp_tab[0])."&amp;prenom=".remplace_accents($tmp_tab[1])."&amp;sexe=".($tmp_tab[2]!="1" ? "F" : "M")."&amp;naissance=".formate_date_aaaammjj($tmp_tab[3])."' target='_blank'>".$tmp_tab[0]." ".$tmp_tab[1]." (".($tmp_tab[2]!="1" ? "fille" : "garçon") .") né".($tmp_tab[2]!="1" ? "e" : "")." le ".$tmp_tab[3]."</a>";
5369              }
5370              else {
5371                  $tmp_txt=$tmp_tab[0]." ".$tmp_tab[1]." (".($tmp_tab[2]!="1" ? "fille" : "garçon") .") né".($tmp_tab[2]!="1" ? "e" : "")." le ".$tmp_tab[3];
5372              }
5373              //my_echo("<li>".$tmp_txt."</li>");
5374              //$chaine.=$tmp_txt."\n";
5375              $chaine.="<li>".$tmp_txt."</li>";
5376          }
5377          $tmp_txt="Vous devrez les créer à la main en attendant que Sconet/Sts soit à jour (<em>généralement fin septembre</em>).";
5378          //my_echo("</ul><p>$tmp_txt</p>");
5379          //$chaine.=$tmp_txt;
5380          $chaine.="</ul><p>$tmp_txt</p>";
5381      }
5382  
5383      if($nb_echecs==0) {
5384          //my_echo("<p>Aucune opération tentée n'a échoué.</p>\n");
5385          $chaine.="<p>Aucune opération tentée n'a échoué.</p>\n";
5386      }
5387      elseif($nb_echecs==1) {
5388          //my_echo("<p style='color:red;'>$nb_echecs opération tentée a échoué.</p>\n");
5389          $chaine.="<p style='color:red;'>$nb_echecs opération tentée a échoué.</p>\n";
5390      }
5391      else{
5392          //my_echo("<p style='color:red;'>$nb_echecs opérations tentées ont échoué.</p>\n");
5393          $chaine.="<p style='color:red;'>$nb_echecs opérations tentées ont échoué.</p>\n";
5394      }
5395      my_echo($chaine);
5396  
5397  
5398  
5399  
5400  /*
5401      // Envoi par mail de $chaine et $echo_http_file
5402  
5403      // Récupérer les adresses,... dans le /etc/ssmtp/ssmtp.conf
5404      unset($tabssmtp);
5405      my_echo("<p>Avant lireSSMTP();</p>");
5406      $tabssmtp=lireSSMTP();
5407      my_echo("<p>Après lireSSMTP();</p>");
5408      my_echo("<p>\$tabssmtp[\"root\"]=".$tabssmtp["root"]."</p>");
5409      // Contrôler les champs affectés...
5410      if(isset($tabssmtp["root"])) {
5411          $adressedestination=$tabssmtp["root"];
5412          $sujet="[$domain] Rapport de ";
5413          if($simulation=="y") {$sujet.="simulation de ";}
5414          $sujet.="création de comptes";
5415          $message="Import du $debut_import\n";
5416          $message.="$chaine\n";
5417          $message.="\n";
5418          $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n";
5419          $entete="From: ".$tabssmtp["root"];
5420          my_echo("<p>Avant mail.</p>");
5421          mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n");
5422          my_echo("<p>Après mail.</p>");
5423      }
5424      else{
5425          my_echo("<p>\$tabssmtp[\"root\"] doit être vide.</p>");
5426          my_echo("<p style='color:red;'><b>MAIL:</b> La configuration mail ne permet pas d'expédier le rapport.<br />Consultez/renseignez le menu Informations système/Actions sur le serveur/Configurer l'expédition des mails.</p>\n");
5427      }
5428  */
5429  
5430      //my_echo("<p>Avant màj params.</p>");
5431  
5432      // Renseignement du témoin de mise à jour terminée.
5433      $sql="SELECT value FROM params WHERE name='imprt_cmpts_en_cours'";
5434      $res1=mysql_query($sql);
5435      if(mysql_num_rows($res1)==0) {
5436          $sql="INSERT INTO params SET name='imprt_cmpts_en_cours',value='n'";
5437          $res0=mysql_query($sql);
5438      }
5439      else{
5440          $sql="UPDATE params SET value='n' WHERE name='imprt_cmpts_en_cours'";
5441          $res0=mysql_query($sql);
5442      }
5443  
5444      //my_echo("<p>Après màj params.</p>");
5445  
5446      if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");}
5447  
5448      my_echo("<p><a href='".$www_import."'>Retour</a>.</p>\n");
5449  
5450      my_echo("</blockquote>\n");
5451      my_echo("<script type='text/javascript'>
5452      compte_a_rebours='n';
5453  </script>\n");
5454      //my_echo("</body>\n</html>\n");
5455  
5456  //        }
5457  
5458          // Dans la version PHP4-CLI, envoyer le rapport par mail.
5459          // Envoyer le contenu de la page aussi?
5460  
5461          // Peut-être forcer une sauvegarde de l'annuaire avant de procéder à une opération qui n'est pas une simulation.
5462          // Où placer le fichier de sauvegarde?
5463          // Problème de l'encombrement à terme.
5464  //    }
5465  
5466  // SUPPRIMER LES FICHIERS CSV/XML en fin d'import.
5467  
5468      if(file_exists($eleves_file)) {
5469          unlink($eleves_file);
5470      }
5471  
5472      if(file_exists($sts_xml_file)) {
5473          unlink($sts_xml_file);
5474      }
5475  
5476      if(file_exists("$dossier_tmp_import_comptes/import_comptes.sh")) {
5477          unlink("$dossier_tmp_import_comptes/import_comptes.sh");
5478      }
5479  
5480  
5481      if(file_exists("/tmp/debug_se3lcs.txt")) {
5482          // Il faut pouvoir écrire dans le fichier depuis /var/www/se3/annu/import_sconet.php sans sudo... donc www-se3 doit être proprio ou avoir les droits...
5483          exec("chown $user_web /tmp/debug_se3lcs.txt");
5484      }
5485  
5486  // Lien pour la récupération du mailing
5487      if (count($listing, COUNT_RECURSIVE) > 1) {
5488          $serial_listing=rawurlencode(serialize($listing));
5489      
5490          my_echo("<form id='postlisting' action='../annu/listing.php' method='post' style='display:none;'>");
5491          my_echo("<input type='hidden' name='hiddeninput' value='$serial_listing' />");
5492          my_echo("</form><p>");
5493  
5494          $lien="<a href=\"#\" onclick=\"document.getElementById('postlisting').submit(); return false;\">T&#233;l&#233;charger le listing des utilisateurs import&#233;s...</a>";
5495  
5496          my_echo("<table><tr><td><img src='../elements/images/pdffile.png'></td><td>");
5497          my_echo($lien);
5498          my_echo("<br /><span style='color:red;'>Attention, les donn&#233;es ne seront pas conserv&#233;es en quittant cette page ! Enregistrez le fichier PDF...</span></td></tr></table></p>");
5499  
5500      }
5501  
5502  
5503      // Envoi par mail de $chaine et $echo_http_file
5504      if ( $servertype=="SE3" ) {
5505          // Récupérer les adresses,... dans le /etc/ssmtp/ssmtp.conf
5506          unset($tabssmtp);
5507          $tabssmtp=lireSSMTP();
5508          // Contrôler les champs affectés...
5509          if (isset($tabssmtp["root"])) {
5510          $adressedestination=$tabssmtp["root"];
5511          $sujet="[$domain] Rapport de ";
5512          if($simulation=="y") {$sujet.="simulation de ";}
5513          $sujet.="création de comptes";
5514          $message="Import du $debut_import\n";
5515          $message.="$chaine\n";
5516          $message.="\n";
5517          $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n";
5518          $entete="From: ".$tabssmtp["root"];
5519          mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n");
5520          } else  my_echo("<p style='color:red;'><b>MAIL:</b> La configuration mail ne permet pas d'expédier le rapport.<br />Consultez/renseignez le menu Informations système/Actions sur le serveur/Configurer l'expédition des mails.</p>\n");
5521          } elseif ( $servertype=="LCS") {
5522          $adressedestination="admin@$domain";
5523          $sujet="[$domain] Rapport de ";
5524          if($simulation=="y") {$sujet.="simulation de ";}
5525          $sujet.="création de comptes";
5526          $message="Import du $debut_import\n";
5527          $message.="$chaine\n";
5528          $message.="\n";
5529          $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n";
5530          $entete="From: root@$domain";
5531          mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n");
5532      }
5533  
5534      my_echo("</body>\n</html>\n");
5535  
5536  ?>


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