[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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&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&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>) :<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']."->".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] :</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 : Echec de l'association de l'option <$chaine_option> 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] :</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 : Echec de l'association de <$chaine_structures_eleve> 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] :</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;'> </th>\n"); 1019 my_echo("<th style='color: blue;'> </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;'> </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> </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 " "; 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> </td>\n"); 1095 } 1096 } 1097 else{ 1098 my_echo("<td> </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 : 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;'> </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;'> </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;'> </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;'> </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();