[ 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();