[ 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(); 3590 $attributs["objectClass"]="groupOfNames"; 3591 //$attributs["objectClass"]="posixGroup"; 3592 if(modify_attribut("cn=Equipe_".$prefix."$div","groups", $attributs, "add")) { 3593 */ 3594 my_echo("<font color='green'>SUCCES</font>"); 3595 /* 3596 } 3597 else{ 3598 my_echo("<font color='red'>ECHEC</font>"); 3599 $temoin_equipe="PROBLEME"; 3600 $nb_echecs++; 3601 } 3602 */ 3603 //my_echo("<font color='green'>SUCCES</font>"); 3604 } 3605 else{ 3606 my_echo("<font color='red'>ECHEC</font>"); 3607 $temoin_equipe="PROBLEME"; 3608 $nb_echecs++; 3609 } 3610 } 3611 else{ 3612 // Les Equipes sont posix 3613 $gidNumber=get_first_free_gidNumber(); 3614 if($gidNumber!=false) { 3615 $attributs["gidNumber"]="$gidNumber"; 3616 3617 // Ou récupérer un nom long du fichier de STS... 3618 $attributs["description"]="$div"; 3619 3620 // MODIF: boireaus 20070728 3621 $attributs["objectClass"][1]="posixGroup"; 3622 //$attributs["objectClass"][2]="sambaGroupMapping"; 3623 3624 my_echo("Création de l'équipe Equipe_".$prefix."$div: "); 3625 if(add_entry ("cn=Equipe_".$prefix."$div", "groups", $attributs)) { 3626 /* 3627 unset($attributs); 3628 $attributs=array(); 3629 //$attributs["objectClass"]="groupOfNames"; 3630 $attributs["objectClass"]="posixGroup"; 3631 if(modify_attribut("cn=Equipe_".$prefix."$div","groups", $attributs, "add")) { 3632 */ 3633 my_echo("<font color='green'>SUCCES</font>"); 3634 3635 if ($servertype=="SE3") { 3636 //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Equipe_".$prefix."$div Equipe_".$prefix."$div \"$div\""); 3637 $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Equipe_".$prefix."$div Equipe_".$prefix."$div \"$div\"", $retour); 3638 } 3639 3640 /* 3641 } 3642 else{ 3643 my_echo("<font color='red'>ECHEC</font>"); 3644 $temoin_equipe="PROBLEME"; 3645 $nb_echecs++; 3646 } 3647 */ 3648 //my_echo("<font color='green'>SUCCES</font>"); 3649 } 3650 else{ 3651 my_echo("<font color='red'>ECHEC</font>"); 3652 $temoin_equipe="PROBLEME"; 3653 $nb_echecs++; 3654 } 3655 } 3656 else{ 3657 my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n"); 3658 $temoin_equipe="PROBLEME"; 3659 $nb_echecs++; 3660 } 3661 } 3662 my_echo("<br />\n"); 3663 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 3664 } 3665 3666 if($creer_equipes_vides=="y") { 3667 $temoin_equipe="Remplissage des Equipes non demandé."; 3668 } 3669 3670 //my_echo("<p>\$temoin_equipe=$temoin_equipe</p>"); 3671 3672 if(!isset($divisions)) { 3673 my_echo("<p>Le tableau \$division n'est pas rempli, ni même initialisé.</p>"); 3674 } 3675 else { 3676 if($temoin_equipe=="") { 3677 // Recherche de l'indice de la classe dans $divisions 3678 //my_echo("<font color='yellow'>$div</font> "); 3679 for($m=0;$m<count($divisions);$m++) { 3680 //$tmp_classe=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($divisions[$m]["code"]))); 3681 $tmp_classe=apostrophes_espaces_2_underscore(remplace_accents($divisions[$m]["code"])); 3682 //my_echo("<font color='lime'>$tmp_classe</font> "); 3683 if($tmp_classe==$div) { 3684 $ind=$m; 3685 } 3686 } 3687 //my_echo("ind=$ind<br />"); 3688 3689 3690 if($type_Equipe_Matiere=="groupOfNames") { 3691 // Les profs principaux ne sont plus gérés comme attribut owner qu'en mode groupOfNames 3692 3693 // Prof principal 3694 unset($tab_pp); 3695 $tab_pp=array(); 3696 for($m=0;$m<count($prof);$m++) { 3697 if(isset($prof[$m]["prof_princ"])) { 3698 for($n=0;$n<count($prof[$m]["prof_princ"]);$n++) { 3699 $tmp_div=$prof[$m]["prof_princ"][$n]["code_structure"]; 3700 //$tmp_div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($tmp_div))); 3701 $tmp_div=apostrophes_espaces_2_underscore(remplace_accents($tmp_div)); 3702 if($tmp_div==$div) { 3703 $employeeNumber="P".$prof[$m]["id"]; 3704 $attribut=array("uid"); 3705 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 3706 if(count($tabtmp)!=0) { 3707 $uid=$tabtmp[0]; 3708 if(!in_array($uid,$tab_pp)) { 3709 $tab_pp[]=$uid; 3710 } 3711 } 3712 } 3713 } 3714 } 3715 } 3716 sort($tab_pp); 3717 3718 if(count($tab_pp)>0) { 3719 if(count($tab_pp)==1) { 3720 my_echo("Ajout du professeur principal à l'équipe Equipe_".$prefix."$div: "); 3721 } 3722 else{ 3723 my_echo("Ajout des professeurs principaux à l'équipe Equipe_".$prefix."$div: "); 3724 } 3725 for($m=0;$m<count($tab_pp);$m++) { 3726 $uid=$tab_pp[$m]; 3727 // Est-il déjà PP de la classe? 3728 $attribut=array("owner"); 3729 //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut); 3730 $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(owner=uid=$uid,".$dn["people"]."))", $attribut); 3731 //$tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(owner=$uid))", $attribut); 3732 if(count($tabtmp)==0) { 3733 $attributs=array(); 3734 $attributs["owner"]="uid=$uid,".$dn["people"]; 3735 //$attributs["owner"]="$uid"; 3736 if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) { 3737 my_echo("<b>$uid</b> "); 3738 } 3739 else{ 3740 my_echo("<font color='red'>$uid</font> "); 3741 $nb_echecs++; 3742 } 3743 } 3744 else{ 3745 my_echo("$uid "); 3746 } 3747 } 3748 my_echo("<br />\n"); 3749 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 3750 } 3751 } 3752 3753 // Membres de l'équipe 3754 unset($tab_equipe); 3755 $tab_equipe=array(); 3756 my_echo("Ajout de membres à l'équipe Equipe_".$prefix."$div: "); 3757 for($j=0;$j<count($divisions[$ind]["services"]);$j++) { 3758 for($k=0;$k<count($divisions[$ind]["services"][$j]["enseignants"]);$k++) { 3759 // Récupérer le login correspondant au NUMIND 3760 $employeeNumber="P".$divisions[$ind]["services"][$j]["enseignants"][$k]["id"]; 3761 if(!in_array($employeeNumber,$tab_equipe)) { 3762 $tab_equipe[]=$employeeNumber; 3763 //my_echo("\$employeeNumber=$employeeNumber<br />"); 3764 3765 /* 3766 $attribut=array("uid"); 3767 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 3768 if(count($tabtmp)!=0) { 3769 $uid=$tabtmp[0]; 3770 //my_echo("\$uid=$uid<br />"); 3771 // Le prof est-il déjà membre de l'équipe? 3772 $attribut=array("member"); 3773 //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut); 3774 $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(member=uid=$uid,".$dn["people"]."))", $attribut); 3775 if(count($tabtmp)==0) { 3776 $attributs=array(); 3777 $attributs["member"]="uid=$uid,".$dn["people"]; 3778 if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) { 3779 my_echo("<b>$uid</b> "); 3780 } 3781 else{ 3782 my_echo("<font color='red'>$uid</font> "); 3783 } 3784 } 3785 else{ 3786 my_echo("$uid "); 3787 } 3788 } 3789 */ 3790 } 3791 } 3792 } 3793 3794 3795 if(isset($groupes)) { 3796 // Rechercher les groupes associés à la classe pour affecter les collègues dans l'équipe 3797 //$groupes[$i]["divisions"][$j]["code"] -> 3 A1 3798 //$groupes[$i]["code_matiere"] -> 070800 3799 //$groupes[$i]["enseignant"][$m]["id"] -> 38101 3800 for($n=0;$n<count($groupes);$n++) { 3801 for($j=0;$j<count($groupes[$n]["divisions"]);$j++) { 3802 $grp_div=$groupes[$n]["divisions"][$j]["code"]; 3803 //$grp_div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($grp_div))); 3804 $grp_div=apostrophes_espaces_2_underscore(remplace_accents($grp_div)); 3805 if($grp_div==$div) { 3806 /* 3807 if(isset($groupes[$n]["enseignant"])) { 3808 for($m=0;$m<count($groupes[$n]["enseignant"]);$m++) { 3809 $employeeNumber="P".$groupes[$n]["enseignant"][$m]["id"]; 3810 if(!in_array($employeeNumber,$tab_equipe)) { 3811 $tab_equipe[]=$employeeNumber; 3812 } 3813 } 3814 } 3815 */ 3816 3817 if(isset($groupes[$n]["service"][0]["enseignant"])) { 3818 for($p=0;$p<count($groupes[$n]["service"]);$p++) { 3819 for($m=0;$m<count($groupes[$n]["service"][$p]["enseignant"]);$m++) { 3820 $employeeNumber="P".$groupes[$n]["service"][$p]["enseignant"][$m]["id"]; 3821 if(!in_array($employeeNumber,$tab_equipe)) { 3822 $tab_equipe[]=$employeeNumber; 3823 } 3824 } 3825 } 3826 } 3827 } 3828 } 3829 } 3830 } 3831 3832 /* 3833 // On dédoublonne le tableau $tab_equipe 3834 // On fait un tri sur l'employeeNumber... ce n'est pas très utile. 3835 sort($tab_equipe); 3836 $tmp_tab_equipe=$tab_equipe; 3837 unset($tab_equipe); 3838 $tab_equipe=array(); 3839 for($n=0;$n<count($tmp_tab_equipe);$n++) { 3840 if(!in_array($tmp_tab_equipe[$n],$tab_equipe)) {$tab_equipe[]=$tmp_tab_equipe[$n];} 3841 } 3842 */ 3843 3844 for($n=0;$n<count($tab_equipe);$n++) { 3845 $employeeNumber=$tab_equipe[$n]; 3846 3847 $attribut=array("uid"); 3848 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 3849 if(count($tabtmp)!=0) { 3850 $uid=$tabtmp[0]; 3851 //my_echo("\$uid=$uid<br />"); 3852 // Le prof est-il déjà membre de l'équipe? 3853 //$attribut=array("member"); 3854 //$attribut=array("memberuid"); 3855 //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut); 3856 3857 if($type_Equipe_Matiere=="groupOfNames") { 3858 // Les groupes Equipes sont groupOfNames 3859 $attribut=array("member"); 3860 $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(member=uid=$uid,".$dn["people"]."))", $attribut); 3861 //$tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(memberuid=$uid))", $attribut); 3862 if(count($tabtmp)==0) { 3863 $attributs=array(); 3864 $attributs["member"]="uid=$uid,".$dn["people"]; 3865 //$attributs["memberuid"]="$uid"; 3866 if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) { 3867 my_echo("<b>$uid</b> "); 3868 } 3869 else{ 3870 my_echo("<font color='red'>$uid</font> "); 3871 $nb_echecs++; 3872 } 3873 } 3874 else{ 3875 my_echo("$uid "); 3876 } 3877 } 3878 else{ 3879 // Les groupes Equipes sont posix 3880 //$tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(member=uid=$uid,".$dn["people"]."))", $attribut); 3881 $attribut=array("memberuid"); 3882 $tabtmp=get_tab_attribut("groups", "(&(cn=Equipe_".$prefix."$div)(memberuid=$uid))", $attribut); 3883 if(count($tabtmp)==0) { 3884 $attributs=array(); 3885 //$attributs["member"]="uid=$uid,".$dn["people"]; 3886 $attributs["memberuid"]="$uid"; 3887 if(modify_attribut("cn=Equipe_".$prefix."$div", "groups", $attributs, "add")) { 3888 my_echo("<b>$uid</b> "); 3889 } 3890 else{ 3891 my_echo("<font color='red'>$uid</font> "); 3892 $nb_echecs++; 3893 } 3894 } 3895 else{ 3896 my_echo("$uid "); 3897 } 3898 } 3899 } 3900 } 3901 my_echo("<br />\n"); 3902 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 3903 } 3904 my_echo("</p>\n"); 3905 } 3906 //} 3907 } 3908 3909 if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");} 3910 my_echo("</blockquote>\n"); 3911 3912 3913 3914 my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n"); 3915 3916 my_echo("<a name='creer_matieres'></a>\n"); 3917 //my_echo("<h2>Création des groupes Matières</h2>\n"); 3918 //my_echo("<h3>Création des groupes Matières</h3>\n"); 3919 my_echo("<h3>Création des groupes Matières"); 3920 if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");} 3921 3922 // =========================================================== 3923 if($creer_matieres=='y') { 3924 my_echo("</h3>\n"); 3925 my_echo("<script type='text/javascript'> 3926 document.getElementById('id_creer_matieres').style.display=''; 3927 </script>"); 3928 my_echo("<blockquote>\n"); 3929 3930 if(!isset($matiere)) { 3931 my_echo("<p>Le tableau \$matiere n'est pas rempli, ni même initialisé.</p>\n"); 3932 } 3933 else { 3934 for($i=0;$i<count($matiere);$i++) { 3935 my_echo("<p>\n"); 3936 $temoin_matiere=""; 3937 //$matiere[$i]["code_gestion"] 3938 $id_mat=$matiere[$i]["code"]; 3939 //$code_gestion=$matiere[$i]["code_gestion"]; 3940 // En principe les caractères spéciaux ont-été filtrés: 3941 //$matiere[$i]["code_gestion"]=trim(ereg_replace("[^a-zA-Z0-9&_. -]","",html_entity_decode($tabtmp[2]))); 3942 $mat=$matiere[$i]["code_gestion"]; 3943 $description=remplace_accents($matiere[$i]["libelle_long"]); 3944 // Faudrait-il enlever d'autres caractères? 3945 3946 // Le groupe Matiere existe-t-il? 3947 $attribut=array("cn"); 3948 $tabtmp=get_tab_attribut("groups", "cn=Matiere_".$prefix."$mat", $attribut); 3949 if(count($tabtmp)==0) { 3950 $attributs=array(); 3951 $attributs["cn"]="Matiere_".$prefix."$mat"; 3952 3953 // MODIF: boireaus 20070728 3954 //$attributs["objectClass"]="top"; 3955 $attributs["objectClass"][0]="top"; 3956 3957 //$attributs["objectClass"]="posixGroup"; 3958 //$attributs["objectClass"]="groupOfNames"; 3959 3960 // Ou récupérer un nom long du fichier de STS... 3961 $attributs["description"]="$description"; 3962 3963 if($type_Equipe_Matiere=="groupOfNames") { 3964 // Les groupes Matieres sont groupOfNames 3965 3966 // MODIF: boireaus 20070728 3967 $attributs["objectClass"][1]="groupOfNames"; 3968 3969 //my_echo("<p>Création de la matière Matiere_".$prefix."$mat: "); 3970 my_echo("Création de la matière Matiere_".$prefix."$mat: "); 3971 if(add_entry ("cn=Matiere_".$prefix."$mat", "groups", $attributs)) { 3972 /* 3973 unset($attributs); 3974 $attributs=array(); 3975 $attributs["objectClass"]="groupOfNames"; 3976 //$attributs["objectClass"]="posixGroup"; 3977 if(modify_attribut("cn=Matiere_".$prefix."$mat","groups", $attributs, "add")) { 3978 */ 3979 my_echo("<font color='green'>SUCCES</font>"); 3980 /* 3981 } 3982 else{ 3983 my_echo("<font color='red'>ECHEC</font>"); 3984 $temoin_matiere="PROBLEME"; 3985 $nb_echecs++; 3986 } 3987 */ 3988 //my_echo("<font color='green'>SUCCES</font>"); 3989 } 3990 else{ 3991 my_echo("<font color='red'>ECHEC</font>"); 3992 $temoin_matiere="PROBLEME"; 3993 $nb_echecs++; 3994 } 3995 } 3996 else{ 3997 // Les groupes Matieres sont posix 3998 $gidNumber=get_first_free_gidNumber(); 3999 if($gidNumber!=false) { 4000 $attributs["gidNumber"]="$gidNumber"; 4001 4002 // MODIF: boireaus 20070728 4003 $attributs["objectClass"][1]="posixGroup"; 4004 //$attributs["objectClass"][2]="sambaGroupMapping"; 4005 4006 //my_echo("<p>Création de la matière Matiere_".$prefix."$mat: "); 4007 my_echo("Création de la matière Matiere_".$prefix."$mat: "); 4008 if(add_entry ("cn=Matiere_".$prefix."$mat", "groups", $attributs)) { 4009 /* 4010 unset($attributs); 4011 $attributs=array(); 4012 //$attributs["objectClass"]="groupOfNames"; 4013 $attributs["objectClass"]="posixGroup"; 4014 if(modify_attribut("cn=Matiere_".$prefix."$mat","groups", $attributs, "add")) { 4015 */ 4016 my_echo("<font color='green'>SUCCES</font>"); 4017 4018 if ($servertype=="SE3") { 4019 //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Matiere_".$prefix."$mat Matiere_".$prefix."$mat \"$description\""); 4020 $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Matiere_".$prefix."$mat Matiere_".$prefix."$mat \"$description\"", $retour); 4021 } 4022 /* 4023 } 4024 else{ 4025 my_echo("<font color='red'>ECHEC</font>"); 4026 $temoin_matiere="PROBLEME"; 4027 $nb_echecs++; 4028 } 4029 */ 4030 //my_echo("<font color='green'>SUCCES</font>"); 4031 } 4032 else{ 4033 my_echo("<font color='red'>ECHEC</font>"); 4034 $temoin_matiere="PROBLEME"; 4035 $nb_echecs++; 4036 } 4037 } 4038 else{ 4039 my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n"); 4040 $temoin_matiere="PROBLEME"; 4041 $nb_echecs++; 4042 } 4043 } 4044 my_echo("<br />\n"); 4045 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 4046 } 4047 4048 unset($tab_matiere); 4049 $tab_matiere=array(); 4050 if($temoin_matiere=="") { 4051 my_echo("Ajout de membres à la matière Matiere_".$prefix."$mat: "); 4052 for($n=0;$n<count($divisions);$n++) { 4053 for($j=0;$j<count($divisions[$n]["services"]);$j++) { 4054 if($divisions[$n]["services"][$j]["code_matiere"]==$id_mat) { 4055 for($k=0;$k<count($divisions[$n]["services"][$j]["enseignants"]);$k++) { 4056 // Récupérer le login correspondant au NUMIND 4057 $employeeNumber="P".$divisions[$n]["services"][$j]["enseignants"][$k]["id"]; 4058 //my_echo("\$employeeNumber=$employeeNumber<br />"); 4059 if(!in_array($employeeNumber,$tab_matiere)) { 4060 $tab_matiere[]=$employeeNumber; 4061 /* 4062 $attribut=array("uid"); 4063 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 4064 if(count($tabtmp)!=0) { 4065 $uid=$tabtmp[0]; 4066 //my_echo("\$uid=$uid<br />"); 4067 // Le prof est-il déjà membre de l'équipe? 4068 $attribut=array("member"); 4069 //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut); 4070 $tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(member=uid=$uid,".$dn["people"]."))", $attribut); 4071 if(count($tabtmp)==0) { 4072 $attributs=array(); 4073 $attributs["member"]="uid=$uid,".$dn["people"]; 4074 if(modify_attribut("cn=Matiere_".$prefix."$mat", "groups", $attributs, "add")) { 4075 my_echo("<b>$uid</b> "); 4076 } 4077 else{ 4078 my_echo("<font color='red'>$uid</font> "); 4079 } 4080 } 4081 else{ 4082 my_echo("$uid "); 4083 } 4084 } 4085 */ 4086 } 4087 } 4088 } 4089 } 4090 } 4091 4092 4093 4094 // Rechercher les groupes associés à la matière pour affecter les collègues dans l'équipe 4095 //$groupes[$i]["divisions"][$j]["code"] -> 3 A1 4096 //$groupes[$i]["code_matiere"] -> 070800 4097 //$groupes[$i]["enseignant"][$m]["id"] -> 38101 4098 for($n=0;$n<count($groupes);$n++) { 4099 /* 4100 if(isset($groupes[$n]["code_matiere"])) { 4101 $grp_id_mat=$groupes[$n]["code_matiere"]; 4102 if($grp_id_mat==$id_mat) { 4103 for($j=0;$j<count($groupes[$n]["divisions"]);$j++) { 4104 if(isset($groupes[$n]["enseignant"])) { 4105 for($m=0;$m<count($groupes[$n]["enseignant"]);$m++) { 4106 $employeeNumber="P".$groupes[$n]["enseignant"][$m]["id"]; 4107 if(!in_array($employeeNumber,$tab_matiere)) { 4108 $tab_matiere[]=$employeeNumber; 4109 } 4110 } 4111 } 4112 } 4113 } 4114 } 4115 */ 4116 4117 if(isset($groupes[$n]["service"][0]["code_matiere"])) { 4118 for($p=0;$p<count($groupes[$n]["service"]);$p++) { 4119 $grp_id_mat=$groupes[$n]["service"][$p]["code_matiere"]; 4120 if($grp_id_mat==$id_mat) { 4121 for($j=0;$j<count($groupes[$n]["divisions"]);$j++) { 4122 if(isset($groupes[$n]["service"][$p]["enseignant"])) { 4123 for($m=0;$m<count($groupes[$n]["service"][$p]["enseignant"]);$m++) { 4124 $employeeNumber="P".$groupes[$n]["service"][$p]["enseignant"][$m]["id"]; 4125 if(!in_array($employeeNumber,$tab_matiere)) { 4126 $tab_matiere[]=$employeeNumber; 4127 } 4128 } 4129 } 4130 } 4131 } 4132 } 4133 } 4134 } 4135 4136 4137 4138 for($n=0;$n<count($tab_matiere);$n++) { 4139 $employeeNumber=$tab_matiere[$n]; 4140 $attribut=array("uid"); 4141 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 4142 if(count($tabtmp)!=0) { 4143 $uid=$tabtmp[0]; 4144 //my_echo("\$uid=$uid<br />"); 4145 // Le prof est-il déjà membre de la matière? 4146 if($type_Equipe_Matiere=="groupOfNames") { 4147 // Les groupes Matieres sont groupOfNames 4148 $attribut=array("member"); 4149 //$attribut=array("memberuid"); 4150 //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut); 4151 $tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(member=uid=$uid,".$dn["people"]."))", $attribut); 4152 //$tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(memberuid=$uid))", $attribut); 4153 if(count($tabtmp)==0) { 4154 $attributs=array(); 4155 $attributs["member"]="uid=$uid,".$dn["people"]; 4156 //$attributs["memberuid"]="$uid"; 4157 if(modify_attribut("cn=Matiere_".$prefix."$mat", "groups", $attributs, "add")) { 4158 my_echo("<b>$uid</b> "); 4159 } 4160 else{ 4161 my_echo("<font color='red'>$uid</font> "); 4162 $nb_echecs++; 4163 } 4164 } 4165 else{ 4166 my_echo("$uid "); 4167 } 4168 } 4169 else{ 4170 // Les groupes Matieres sont posix 4171 //$attribut=array("member"); 4172 $attribut=array("memberuid"); 4173 //$tabtmp=get_tab_attribut("people", "member=uid=$uid,".$dn["people"], $attribut); 4174 //$tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(member=uid=$uid,".$dn["people"]."))", $attribut); 4175 $tabtmp=get_tab_attribut("groups", "(&(cn=Matiere_".$prefix."$mat)(memberuid=$uid))", $attribut); 4176 if(count($tabtmp)==0) { 4177 $attributs=array(); 4178 //$attributs["member"]="uid=$uid,".$dn["people"]; 4179 $attributs["memberuid"]="$uid"; 4180 if(modify_attribut("cn=Matiere_".$prefix."$mat", "groups", $attributs, "add")) { 4181 my_echo("<b>$uid</b> "); 4182 } 4183 else{ 4184 my_echo("<font color='red'>$uid</font> "); 4185 $nb_echecs++; 4186 } 4187 } 4188 else{ 4189 my_echo("$uid "); 4190 } 4191 } 4192 } 4193 } 4194 my_echo("<br />\n"); 4195 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 4196 } 4197 my_echo("</p>\n"); 4198 } 4199 if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");} 4200 } 4201 } 4202 else{ 4203 my_echo("</h3>\n"); 4204 my_echo("<blockquote>\n"); 4205 my_echo("<p>Création des Matières non demandée.</p>\n"); 4206 } 4207 4208 my_echo("</blockquote>\n"); 4209 4210 4211 4212 my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n"); 4213 4214 my_echo("<a name='creer_cours'></a>\n"); 4215 //my_echo("<h2>Création des groupes Cours</h2>\n"); 4216 //my_echo("<h3>Création des groupes Cours</h3>\n"); 4217 my_echo("<h3>Création des groupes Cours"); 4218 if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");} 4219 4220 // =========================================================== 4221 // AJOUTS: 20070914 boireaus 4222 if($creer_cours=='y') { 4223 4224 my_echo("</h3>\n"); 4225 my_echo("<script type='text/javascript'> 4226 document.getElementById('id_creer_cours').style.display=''; 4227 </script>"); 4228 my_echo("<blockquote>\n"); 4229 // Là, il faudrait faire un traitement différent selon que l'import élève se fait par CSV ou XML 4230 4231 4232 //$divisions[$i]["code"] 3 A2 4233 //$divisions[$i]["services"][$j]["code_matiere"] 020700 4234 //$divisions[$i]["services"][$j]["enseignants"][$k]["id"] 38764 4235 4236 for($i=0;$i<count($divisions);$i++) { 4237 $div=$divisions[$i]["code"]; 4238 //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div))); 4239 $div=apostrophes_espaces_2_underscore(remplace_accents($div)); 4240 4241 // Dans le cas de l'import XML, on récupère la liste des options suivies par les élèves 4242 $ind_div=""; 4243 if($type_fichier_eleves=="xml") { 4244 // Identifier $k tel que $tab_division[$k]["nom"]==$div 4245 for($k=0;$k<count($tab_division);$k++) { 4246 if(apostrophes_espaces_2_underscore(remplace_accents($tab_division[$k]["nom"]))==$div) { 4247 $ind_div=$k; 4248 break; 4249 } 4250 } 4251 } 4252 4253 $temoin_cours=""; 4254 // On parcours toutes les matières... 4255 for($j=0;$j<count($divisions[$i]["services"]);$j++) { 4256 $id_mat=$divisions[$i]["services"][$j]["code_matiere"]; 4257 4258 4259 // Recherche du nom court de la matière: 4260 for($n=0;$n<count($matiere);$n++) { 4261 if($matiere[$n]["code"]==$id_mat) { 4262 $mat=$matiere[$n]["code_gestion"]; 4263 } 4264 } 4265 4266 // La matière est-elle optionnelle dans la classe? 4267 $temoin_matiere_optionnelle="non"; 4268 $ind_mat=""; 4269 if(($type_fichier_eleves=="xml")&&($ind_div!="")) { 4270 for($k=0;$k<count($tab_division[$ind_div]["option"]);$k++) { 4271 // $tab_division[$k]["option"][$n]["code_matiere"] 4272 if($tab_division[$ind_div]["option"][$k]["code_matiere"]==$id_mat) { 4273 $temoin_matiere_optionnelle="oui"; 4274 $ind_mat=$k; 4275 break; 4276 } 4277 } 4278 } 4279 4280 // Récupérer tous les profs de la matière dans la classe 4281 // ... les trier 4282 unset($tab_prof_uid); 4283 $tab_prof_uid=array(); 4284 // On pourrait aussi parcourir l'annuaire... avec le filtre cn=Equipe_".$prefix."$div... peut-être serait-ce plus rapide... 4285 for($k=0;$k<count($divisions[$i]["services"][$j]["enseignants"]);$k++) { 4286 // Récupération de l'uid correspondant à l'employeeNumber 4287 $employeeNumber="P".$divisions[$i]["services"][$j]["enseignants"][$k]["id"]; 4288 $attribut=array("uid"); 4289 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 4290 if(count($tabtmp)!=0) { 4291 $uid=$tabtmp[0]; 4292 if(!in_array($uid,$tab_prof_uid)) { 4293 $tab_prof_uid[]=$uid; 4294 } 4295 } 4296 } 4297 sort($tab_prof_uid); 4298 4299 4300 // Récupérer tous les membres de la classe si la matière n'a pas été détectée comme optionnelle dans la classe 4301 // ... les trier 4302 unset($tab_eleve_uid); 4303 $tab_eleve_uid=array(); 4304 if($temoin_matiere_optionnelle!="oui") { 4305 //$attribut=array("memberUid"); 4306 $attribut=array("memberuid"); 4307 //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />"); 4308 $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut); 4309 if(count($tabtmp)!=0) { 4310 //my_echo("count(\$tabtmp)=".count($tabtmp)."<br />"); 4311 for($k=0;$k<count($tabtmp);$k++) { 4312 //my_echo("\$tabtmp[$k]=".$tabtmp[$k]."<br />"); 4313 // Normalement, chaque élève n'est inscrit qu'une fois dans la classe, mais bon... 4314 if(!in_array($tabtmp[$k],$tab_eleve_uid)) { 4315 //my_echo("Ajout à \$tab_eleve_uid<br />"); 4316 $tab_eleve_uid[]=$tabtmp[$k]; 4317 } 4318 } 4319 } 4320 } 4321 else{ 4322 // Faire une boucle sur $eleve[$numero]["options"][$j]["code_matiere"] après avoir identifié le numéro... en faisant une recherche sur les memberUid de "cn=Classe_".$prefix."$div" 4323 // Ou: remplir un étage de plus de $tab_division[$k]["option"] 4324 //$tab_division[$ind_div]["option"][$ind_mat]["eleve"][] 4325 //my_echo("<p>Matière optionnelle pour $mat en $div:<br />"); 4326 for($k=0;$k<count($tab_division[$ind_div]["option"][$ind_mat]["eleve"]);$k++) { 4327 $attribut=array("uid"); 4328 //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />"); 4329 //$tabtmp=get_tab_attribut("people", "employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k], $attribut); 4330 $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k].")(employeenumber=".sprintf("%05d",$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k])."))", $attribut); 4331 4332 if(count($tabtmp)!=0) { 4333 if(!in_array($tabtmp[0],$tab_eleve_uid)) { 4334 //my_echo("Ajout à \$tab_eleve_uid<br />"); 4335 $tab_eleve_uid[]=$tabtmp[0]; 4336 } 4337 } 4338 } 4339 } 4340 4341 // Création du groupe 4342 // Le groupe Cours existe-t-il? 4343 my_echo("<p>\n"); 4344 $attribut=array("cn"); 4345 //my_echo("Recherche de: get_tab_attribut(\"groups\", \"cn=Cours_".$prefix."\".$mat.\"_\".$div, $attribut)<br />"); 4346 $tabtmp=get_tab_attribut("groups", "cn=Cours_".$prefix.$mat."_".$div, $attribut); 4347 if(count($tabtmp)==0) { 4348 $attributs=array(); 4349 $attributs["cn"]="Cours_".$prefix.$mat."_".$div; 4350 4351 // MODIF: boireaus 20070728 4352 //$attributs["objectClass"]="top"; 4353 $attributs["objectClass"][0]="top"; 4354 $attributs["objectClass"][1]="posixGroup"; 4355 //$attributs["objectClass"][2]="sambaGroupMapping"; 4356 4357 //$attributs["objectClass"]="posixGroup"; 4358 //$attributs["objectClass"]="groupOfNames"; 4359 // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo... 4360 //$gidNumber=get_first_free_gidNumber(); 4361 $gidNumber=get_first_free_gidNumber(10000); 4362 if($gidNumber!=false) { 4363 $attributs["gidNumber"]="$gidNumber"; 4364 // Ou récupérer un nom long du fichier de STS... 4365 $attributs["description"]="$mat / $div"; 4366 4367 //my_echo("<p>Création du groupe Cours_".$prefix.$mat."_".$div.": "); 4368 my_echo("Création du groupe Cours_".$prefix.$mat."_".$div.": "); 4369 if(add_entry ("cn=Cours_".$prefix.$mat."_".$div, "groups", $attributs)) { 4370 /* 4371 unset($attributs); 4372 $attributs=array(); 4373 $attributs["objectClass"]="posixGroup"; 4374 if(modify_attribut("cn=Cours_".$prefix.$mat."_".$div,"groups", $attributs, "add")) { 4375 */ 4376 my_echo("<font color='green'>SUCCES</font>"); 4377 4378 if ($servertype=="SE3") { 4379 //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$mat Cours_".$prefix."$mat \"$mat / $div\""); 4380 $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$mat Cours_".$prefix."$mat \"$mat / $div\"", $retour); 4381 } 4382 /* 4383 } 4384 else{ 4385 my_echo("<font color='red'>ECHEC</font>"); 4386 $temoin_cours="PROBLEME"; 4387 $nb_echecs++; 4388 } 4389 */ 4390 //my_echo("<font color='green'>SUCCES</font>"); 4391 } 4392 else{ 4393 my_echo("<font color='red'>ECHEC</font>"); 4394 $temoin_cours="PROBLEME"; 4395 $nb_echecs++; 4396 } 4397 my_echo("<br />\n"); 4398 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 4399 } 4400 else{ 4401 my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n"); 4402 $temoin_cours="PROBLEME"; 4403 $nb_echecs++; 4404 } 4405 } 4406 4407 4408 if($temoin_cours=="") { 4409 // Ajout des membres 4410 my_echo("Ajout de membres au groupe Cours_".$prefix.$mat."_".$div.": "); 4411 // Ajout des profs 4412 for($n=0;$n<count($tab_prof_uid);$n++) { 4413 $uid=$tab_prof_uid[$n]; 4414 $attribut=array("cn"); 4415 //my_echo("Recherche de get_tab_attribut(\"groups\", \"(&(cn=Cours_".$prefix.$mat.\"_\".$div.\")(memberuid=$uid))\", $attribut)<br />"); 4416 $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix.$mat."_".$div.")(memberuid=$uid))", $attribut); 4417 if(count($tabtmp)==0) { 4418 unset($attribut); 4419 $attribut=array(); 4420 $attribut["memberUid"]=$uid; 4421 if(modify_attribut("cn=Cours_".$prefix.$mat."_".$div,"groups",$attribut,"add")) { 4422 my_echo("<b>$uid</b> "); 4423 } 4424 else{ 4425 my_echo("<font color='red'>$uid</font> "); 4426 $nb_echecs++; 4427 } 4428 } 4429 else{ 4430 my_echo("$uid "); 4431 } 4432 } 4433 4434 // Ajout des élèves 4435 for($n=0;$n<count($tab_eleve_uid);$n++) { 4436 $uid=$tab_eleve_uid[$n]; 4437 $attribut=array("cn"); 4438 $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix.$mat."_".$div.")(memberuid=$uid))", $attribut); 4439 if(count($tabtmp)==0) { 4440 unset($attribut); 4441 $attribut=array(); 4442 $attribut["memberUid"]=$uid; 4443 if(modify_attribut("cn=Cours_".$prefix.$mat."_".$div,"groups",$attribut,"add")) { 4444 my_echo("<b>$uid</b> "); 4445 } 4446 else{ 4447 my_echo("<font color='red'>$uid</font> "); 4448 $nb_echecs++; 4449 } 4450 } 4451 else{ 4452 my_echo("$uid "); 4453 } 4454 } 4455 my_echo(" (<i>".count($tab_prof_uid)."+".count($tab_eleve_uid)."</i>)\n"); 4456 my_echo("<br />\n"); 4457 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 4458 } 4459 my_echo("</p>\n"); 4460 } 4461 } 4462 4463 if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");} 4464 4465 4466 4467 4468 4469 4470 // Dans le cas de l'import XML élèves, on a $eleve[$numero]["options"][$j]["code_matiere"] 4471 4472 // Rechercher les groupes 4473 //$groupes[$i]["code"] -> 3 A1TEC1 ou 3AGL1-1 4474 //$groupes[$i]["divisions"][$j]["code"] -> 3 A1 4475 //$groupes[$i]["code_matiere"] -> 070800 4476 //$groupes[$i]["enseignant"][$m]["id"] -> 38101 4477 4478 $nom_groupe_a_debugger="3 ALL2"; 4479 function my_echo_double_sortie($chaine, $balise="p") { 4480 $debug="n"; 4481 if($debug=="y") { 4482 $retour="<$balise style='color:red'>".$chaine."</$balise>\n"; 4483 echo $retour; 4484 my_echo($retour); 4485 } 4486 } 4487 4488 my_echo_double_sortie("count(\$groupes)=".count($groupes)); 4489 4490 for($i=0;$i<count($groupes);$i++) { 4491 if(isset($groupes[$i]["service"])) { 4492 for($p=0;$p<count($groupes[$i]["service"]);$p++) { 4493 $temoin_grp=""; 4494 $grp_mat=""; 4495 4496 //my_echo("<p>\$grp=\$groupes[$i][\"code\"]=".$grp."<br />"); 4497 4498 if(isset($groupes[$i]["service"][$p]["code_matiere"])) { 4499 $grp_id_mat=$groupes[$i]["service"][$p]["code_matiere"]; 4500 //my_echo("\$grp_id_mat=\$groupes[$i][\"code_matiere\"]=".$grp_id_mat."<br />"); 4501 // Recherche du nom court de matière 4502 for($n=0;$n<count($matiere);$n++) { 4503 if($matiere[$n]["code"]==$grp_id_mat) { 4504 $grp_mat=$matiere[$n]["code_gestion"]; 4505 } 4506 } 4507 } 4508 4509 $grp=$groupes[$i]["code"]; 4510 if(count($groupes[$i]["service"])>1) { 4511 if($grp_mat!="") { 4512 $grp=$grp."_".$grp_mat; 4513 } 4514 else{ 4515 $grp=$grp."_".$p; 4516 } 4517 } 4518 $grp=apostrophes_espaces_2_underscore(remplace_accents($grp)); 4519 4520 //my_echo("\$grp_mat=".$grp_mat."<br />"); 4521 4522 4523 // Récupération des profs associés à ce groupe 4524 unset($tab_prof_uid); 4525 $tab_prof_uid=array(); 4526 if(isset($groupes[$i]["service"][$p]["enseignant"])) { 4527 for($m=0;$m<count($groupes[$i]["service"][$p]["enseignant"]);$m++) { 4528 $employeeNumber="P".$groupes[$i]["service"][$p]["enseignant"][$m]["id"]; 4529 $attribut=array("uid"); 4530 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 4531 if(count($tabtmp)!=0) { 4532 $uid=$tabtmp[0]; 4533 if(!in_array($uid,$tab_prof_uid)) { 4534 $tab_prof_uid[]=$uid; 4535 } 4536 } 4537 } 4538 } 4539 4540 4541 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4542 my_echo_double_sortie("\$groupes[$i][\"code\"]=".$groupes[$i]["code"]); 4543 } 4544 4545 // Récupération des élèves associés aux classes de ce groupe 4546 unset($tab_eleve_uid); 4547 $tab_eleve_uid=array(); 4548 $chaine_div=""; 4549 for($j=0;$j<count($groupes[$i]["divisions"]);$j++) { 4550 $div=$groupes[$i]["divisions"][$j]["code"]; 4551 //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div))); 4552 $div=apostrophes_espaces_2_underscore(remplace_accents($div)); 4553 4554 4555 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4556 my_echo_double_sortie("Classe associee ".$div); 4557 } 4558 4559 //my_echo("\$div=".$div."<br />"); 4560 4561 //$tab_division[$ind_div]["option"][$k]["code_matiere"] 4562 4563 // Dans le cas de l'import XML, on récupère la liste des options suivies par les élèves 4564 $ind_div=""; 4565 if($type_fichier_eleves=="xml") { 4566 // Identifier $k tel que $tab_division[$k]["nom"]==$div 4567 for($k=0;$k<count($tab_division);$k++) { 4568 //my_echo("\$tab_division[$k][\"nom\"]=".$tab_division[$k]["nom"]."<br />"); 4569 //if(ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($tab_division[$k]["nom"])))==$div) { 4570 if(apostrophes_espaces_2_underscore(remplace_accents($tab_division[$k]["nom"]))==$div) { 4571 $ind_div=$k; 4572 4573 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4574 my_echo_double_sortie("\$ind_div=".$ind_div); 4575 } 4576 4577 break; 4578 } 4579 } 4580 } 4581 //my_echo("\$ind_div=".$ind_div."<br />"); 4582 4583 4584 4585 // La matière est-elle optionnelle dans la classe? 4586 $temoin_groupe_apparaissant_dans_Eleves_xml="non"; 4587 $temoin_matiere_optionnelle="non"; 4588 $ind_mat=""; 4589 if(($type_fichier_eleves=="xml")&&($ind_div!="")) { 4590 for($k=0;$k<count($tab_division[$ind_div]["option"]);$k++) { 4591 4592 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4593 my_echo_double_sortie("\$tab_division[$ind_div][\"option\"][$k][\"code_matiere\"]=".$tab_division[$ind_div]["option"][$k]["code_matiere"]." et \$grp_id_mat=$grp_id_mat"); 4594 } 4595 4596 //if(in_array($groupes[$i]["code"], $tab_groups)) { 4597 if((in_array($groupes[$i]["code"], $tab_groups))||(in_array(apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"])), $tab_groups))) { 4598 // Les inscriptions des eleves ont ete inscrites dans le ElevesSansAdresses.xml 4599 $temoin_groupe_apparaissant_dans_Eleves_xml="oui"; 4600 $temoin_matiere_optionnelle="oui"; 4601 $ind_mat=$k; 4602 4603 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4604 my_echo_double_sortie("Matiere optionnelle apparaissant dans ElevesSansAdresses avec \$ind_mat=$ind_mat"); 4605 } 4606 4607 break; 4608 } 4609 elseif($tab_division[$ind_div]["option"][$k]["code_matiere"]==$grp_id_mat) { 4610 $temoin_matiere_optionnelle="oui"; 4611 $ind_mat=$k; 4612 4613 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4614 my_echo_double_sortie("Matiere optionnelle avec \$ind_mat=$ind_mat"); 4615 } 4616 4617 break; 4618 } 4619 4620 } 4621 } 4622 //my_echo("\$ind_mat=".$ind_mat."<br />"); 4623 4624 4625 4626 if($chaine_div=="") { 4627 $chaine_div=$div; 4628 } 4629 else{ 4630 $chaine_div.=" / ".$div; 4631 } 4632 4633 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4634 my_echo_double_sortie("\$temoin_matiere_optionnelle=".$temoin_matiere_optionnelle); 4635 } 4636 4637 if($temoin_matiere_optionnelle!="oui") { 4638 //$attribut=array("memberUid"); 4639 $attribut=array("memberuid"); 4640 $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut); 4641 if(count($tabtmp)!=0) { 4642 for($k=0;$k<count($tabtmp);$k++) { 4643 // Normalement, chaque élève n'est inscrit qu'une fois dans la classe, mais bon... 4644 if(!in_array($tabtmp[$k],$tab_eleve_uid)) { 4645 $tab_eleve_uid[]=$tabtmp[$k]; 4646 } 4647 } 4648 } 4649 } 4650 else{ 4651 4652 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4653 my_echo_double_sortie("\$temoin_groupe_apparaissant_dans_Eleves_xml=".$temoin_groupe_apparaissant_dans_Eleves_xml); 4654 } 4655 4656 //my_echo("<p>Matière optionnelle pour $grp:<br />"); 4657 if($temoin_groupe_apparaissant_dans_Eleves_xml!="oui") { 4658 for($k=0;$k<count($tab_division[$ind_div]["option"][$ind_mat]["eleve"]);$k++) { 4659 $attribut=array("uid"); 4660 //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />"); 4661 4662 $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k].")(employeenumber=".sprintf("%05d",$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k])."))", $attribut); 4663 4664 if(count($tabtmp)!=0) { 4665 if(!in_array($tabtmp[0],$tab_eleve_uid)) { 4666 //my_echo("Ajout à \$tab_eleve_uid<br />"); 4667 $tab_eleve_uid[]=$tabtmp[0]; 4668 } 4669 } 4670 } 4671 } 4672 else { 4673 4674 for($k=0;$k<count($tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))]);$k++) { 4675 // Recuperer l'uid correspondant a l'elenoet/employeeNumber stocke 4676 $attribut=array("uid"); 4677 4678 $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k].")(employeenumber=".sprintf("%05d",$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k])."))", $attribut); 4679 4680 if((isset($tabtmp[0]))&&(!in_array($tabtmp[0],$tab_eleve_uid))) { 4681 $tab_eleve_uid[]=$tabtmp[0]; 4682 } 4683 } 4684 } 4685 4686 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4687 my_echo_double_sortie(print_r($tab_eleve_uid),"pre"); 4688 } 4689 4690 } 4691 } 4692 4693 4694 // Création du groupe 4695 // Le groupe Cours existe-t-il? 4696 my_echo("<p>\n"); 4697 $attribut=array("cn"); 4698 $tabtmp=get_tab_attribut("groups", "cn=Cours_".$prefix."$grp", $attribut); 4699 if(count($tabtmp)==0) { 4700 $attributs=array(); 4701 $attributs["cn"]="Cours_".$prefix."$grp"; 4702 4703 // MODIF: boireaus 20070728 4704 //$attributs["objectClass"]="top"; 4705 $attributs["objectClass"][0]="top"; 4706 $attributs["objectClass"][1]="posixGroup"; 4707 //$attributs["objectClass"][2]="sambaGroupMapping"; 4708 4709 //$attributs["objectClass"]="posixGroup"; 4710 //$attributs["objectClass"]="groupOfNames"; 4711 // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo... 4712 //$gidNumber=get_first_free_gidNumber(); 4713 $gidNumber=get_first_free_gidNumber(10000); 4714 if($gidNumber!=false) { 4715 $attributs["gidNumber"]="$gidNumber"; 4716 // Ou récupérer un nom long du fichier de STS... 4717 $attributs["description"]="$grp_mat / $chaine_div"; 4718 4719 //my_echo("<p>Création du groupe Cours_".$prefix."$grp: "); 4720 my_echo("Création du groupe Cours_".$prefix."$grp: "); 4721 //my_echo(" grp_mat=$grp_mat "); 4722 if(add_entry ("cn=Cours_".$prefix."$grp", "groups", $attributs)) { 4723 /* 4724 unset($attributs); 4725 $attributs=array(); 4726 $attributs["objectClass"]="posixGroup"; 4727 if(modify_attribut("cn=Cours_".$prefix."$grp","groups", $attributs, "add")) { 4728 */ 4729 my_echo("<font color='green'>SUCCES</font>"); 4730 4731 if ($servertype=="SE3") { 4732 //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\""); 4733 $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\"", $retour); 4734 } 4735 /* 4736 } 4737 else{ 4738 my_echo("<font color='red'>ECHEC</font>"); 4739 $temoin_cours="PROBLEME"; 4740 $nb_echecs++; 4741 } 4742 */ 4743 //my_echo("<font color='green'>SUCCES</font>"); 4744 } 4745 else{ 4746 my_echo("<font color='red'>ECHEC</font>"); 4747 $temoin_cours="PROBLEME"; 4748 $nb_echecs++; 4749 } 4750 my_echo("<br />\n"); 4751 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 4752 } 4753 else{ 4754 my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n"); 4755 $temoin_cours="PROBLEME"; 4756 $nb_echecs++; 4757 } 4758 } 4759 4760 4761 if($temoin_cours=="") { 4762 // Ajout de membres au groupe 4763 my_echo("Ajout de membres au groupe Cours_".$prefix."$grp: "); 4764 // Ajout des profs 4765 for($n=0;$n<count($tab_prof_uid);$n++) { 4766 $uid=$tab_prof_uid[$n]; 4767 $attribut=array("cn"); 4768 $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut); 4769 if(count($tabtmp)==0) { 4770 unset($attribut); 4771 $attribut=array(); 4772 $attribut["memberUid"]=$uid; 4773 if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) { 4774 my_echo("<b>$uid</b> "); 4775 } 4776 else{ 4777 my_echo("<font color='red'>$uid</font> "); 4778 $nb_echecs++; 4779 } 4780 } 4781 else{ 4782 my_echo("$uid "); 4783 } 4784 } 4785 4786 // Ajout des élèves 4787 for($n=0;$n<count($tab_eleve_uid);$n++) { 4788 $uid=$tab_eleve_uid[$n]; 4789 $attribut=array("cn"); 4790 $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut); 4791 if(count($tabtmp)==0) { 4792 unset($attribut); 4793 $attribut=array(); 4794 $attribut["memberUid"]=$uid; 4795 if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) { 4796 my_echo("<b>$uid</b> "); 4797 } 4798 else{ 4799 my_echo("<font color='red'>$uid</font> "); 4800 $nb_echecs++; 4801 } 4802 } 4803 else{ 4804 my_echo("$uid "); 4805 } 4806 } 4807 my_echo(" (<i>".count($tab_prof_uid)."+".count($tab_eleve_uid)."</i>)\n"); 4808 my_echo("<br />\n"); 4809 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 4810 } 4811 my_echo("</p>\n"); 4812 } 4813 } 4814 else { 4815 //============================================================================================= 4816 // Pas de section "<SERVICE " dans ce groupe 4817 $grp=$groupes[$i]["code"]; 4818 $grp=apostrophes_espaces_2_underscore(remplace_accents($grp)); 4819 $temoin_grp=""; 4820 $grp_mat=""; 4821 4822 // Faute de section SERVICE, on ne récupère pas le grp_id_mat 4823 // On n'a pas de $grp_id_mat faute de section SERVICE donc pas moyen d'identifier la matière associée au groupe et de chercher si cette matière a été repérée comme optionnelle 4824 4825 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4826 my_echo_double_sortie("\$groupes[$i][\"code\"]=".$groupes[$i]["code"]); 4827 } 4828 4829 //my_echo("<p>\$grp=\$groupes[$i][\"code\"]=".$grp."<br />"); 4830 4831 // Récupération des profs associés à ce groupe 4832 // Impossible faute de section SERVICE 4833 unset($tab_prof_uid); 4834 $tab_prof_uid=array(); 4835 4836 // Récupération des élèves associés aux classes de ce groupe 4837 unset($tab_eleve_uid); 4838 $tab_eleve_uid=array(); 4839 $chaine_div=""; 4840 for($j=0;$j<count($groupes[$i]["divisions"]);$j++) { 4841 $div=$groupes[$i]["divisions"][$j]["code"]; 4842 //$div=ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($div))); 4843 $div=apostrophes_espaces_2_underscore(remplace_accents($div)); 4844 4845 //my_echo("\$div=".$div."<br />"); 4846 4847 //$tab_division[$ind_div]["option"][$k]["code_matiere"] 4848 4849 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4850 my_echo_double_sortie("Classe associee ".$div); 4851 } 4852 4853 // Dans le cas de l'import XML, on récupère la liste des options suivies par les élèves 4854 $ind_div=""; 4855 if($type_fichier_eleves=="xml") { 4856 // Identifier $k tel que $tab_division[$k]["nom"]==$div 4857 for($k=0;$k<count($tab_division);$k++) { 4858 //my_echo("\$tab_division[$k][\"nom\"]=".$tab_division[$k]["nom"]."<br />"); 4859 //if(ereg_replace("'","_",ereg_replace(" ","_",remplace_accents($tab_division[$k]["nom"])))==$div) { 4860 if(apostrophes_espaces_2_underscore(remplace_accents($tab_division[$k]["nom"]))==$div) { 4861 $ind_div=$k; 4862 4863 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4864 my_echo_double_sortie("\$ind_div=".$ind_div); 4865 } 4866 4867 break; 4868 } 4869 } 4870 } 4871 //my_echo("\$ind_div=".$ind_div."<br />"); 4872 4873 4874 4875 // La matière est-elle optionnelle dans la classe? 4876 $temoin_groupe_apparaissant_dans_Eleves_xml="non"; 4877 $temoin_matiere_optionnelle="non"; 4878 $ind_mat=""; 4879 4880 //if(in_array($groupes[$i]["code"], $tab_groups)) { 4881 if(is_array($tab_groups)) { 4882 if((in_array($groupes[$i]["code"], $tab_groups))||(in_array(apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"])), $tab_groups))) { 4883 // Les inscriptions des eleves ont ete inscrites dans le ElevesSansAdresses.xml 4884 $temoin_groupe_apparaissant_dans_Eleves_xml="oui"; 4885 $temoin_matiere_optionnelle="oui"; 4886 $ind_mat=$k; 4887 4888 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4889 my_echo_double_sortie("Matiere optionnelle apparaissant dans ElevesSansAdresses avec \$ind_mat=$ind_mat"); 4890 } 4891 } 4892 } 4893 4894 //my_echo("\$ind_mat=".$ind_mat."<br />"); 4895 4896 if($chaine_div=="") { 4897 $chaine_div=$div; 4898 } 4899 else{ 4900 $chaine_div.=" / ".$div; 4901 } 4902 4903 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4904 my_echo_double_sortie("\$temoin_matiere_optionnelle=".$temoin_matiere_optionnelle); 4905 } 4906 4907 if($temoin_matiere_optionnelle!="oui") { 4908 //$attribut=array("memberUid"); 4909 $attribut=array("memberuid"); 4910 $tabtmp=get_tab_attribut("groups", "cn=Classe_".$prefix."$div", $attribut); 4911 if(count($tabtmp)!=0) { 4912 for($k=0;$k<count($tabtmp);$k++) { 4913 // Normalement, chaque élève n'est inscrit qu'une fois dans la classe, mais bon... 4914 if(!in_array($tabtmp[$k],$tab_eleve_uid)) { 4915 $tab_eleve_uid[]=$tabtmp[$k]; 4916 } 4917 } 4918 } 4919 } 4920 else{ 4921 4922 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4923 my_echo_double_sortie("\$temoin_groupe_apparaissant_dans_Eleves_xml=".$temoin_groupe_apparaissant_dans_Eleves_xml); 4924 } 4925 4926 //my_echo("<p>Matière optionnelle pour $grp:<br />"); 4927 if($temoin_groupe_apparaissant_dans_Eleves_xml!="oui") { 4928 for($k=0;$k<count($tab_division[$ind_div]["option"][$ind_mat]["eleve"]);$k++) { 4929 $attribut=array("uid"); 4930 //my_echo("Recherche: get_tab_attribut(\"groups\", \"cn=Classe_".$prefix."$div\", $attribut)<br />"); 4931 $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k].")(employeenumber=".sprintf("%05d",$tab_division[$ind_div]["option"][$ind_mat]["eleve"][$k])."))", $attribut); 4932 4933 if(count($tabtmp)!=0) { 4934 if(!in_array($tabtmp[0],$tab_eleve_uid)) { 4935 //my_echo("Ajout à \$tab_eleve_uid<br />"); 4936 $tab_eleve_uid[]=$tabtmp[0]; 4937 } 4938 } 4939 } 4940 } 4941 else { 4942 4943 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4944 my_echo_double_sortie("count(\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(\$groupes[$i]['code']))])=count(\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(".$groupes[$i]['code']."))])=count(\$tab_groups_member[".apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))."])=".count($tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))])); 4945 } 4946 4947 for($k=0;$k<count($tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))]);$k++) { 4948 // Recuperer l'uid correspondant a l'elenoet/employeeNumber stocke 4949 //$tabtmp=search_people("employeeNumber=".$tab_groups_member[$groupes[$i]["code"]][$k]); 4950 4951 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4952 my_echo_double_sortie("\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(\$groupes[$i]['code']))][$k]=\$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents(".$groupes[$i]['code']."))][$k]=\$tab_groups_member[".apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]['code']))."][$k]=".$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]['code']))][$k]); 4953 } 4954 4955 $attribut=array("uid"); 4956 $tabtmp=get_tab_attribut("people", "(|(employeenumber=".$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k].")(employeenumber=".sprintf("%05d",$tab_groups_member[apostrophes_espaces_2_underscore(remplace_accents($groupes[$i]["code"]))][$k])."))", $attribut); 4957 4958 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4959 my_echo_double_sortie(print_r($tabtmp),"pre"); 4960 } 4961 4962 if((isset($tabtmp[0]))&&(!in_array($tabtmp[0],$tab_eleve_uid))) { 4963 $tab_eleve_uid[]=$tabtmp[0]; 4964 } 4965 } 4966 } 4967 4968 if($groupes[$i]["code"]==$nom_groupe_a_debugger) { 4969 my_echo_double_sortie(print_r($tab_eleve_uid),"pre"); 4970 } 4971 4972 } 4973 } 4974 4975 4976 // Création du groupe 4977 // Le groupe Cours existe-t-il? 4978 my_echo("<p>\n"); 4979 $attribut=array("cn"); 4980 $tabtmp=get_tab_attribut("groups", "cn=Cours_".$prefix."$grp", $attribut); 4981 if(count($tabtmp)==0) { 4982 $attributs=array(); 4983 $attributs["cn"]="Cours_".$prefix."$grp"; 4984 4985 // MODIF: boireaus 20070728 4986 //$attributs["objectClass"]="top"; 4987 $attributs["objectClass"][0]="top"; 4988 $attributs["objectClass"][1]="posixGroup"; 4989 //$attributs["objectClass"][2]="sambaGroupMapping"; 4990 4991 //$attributs["objectClass"]="posixGroup"; 4992 //$attributs["objectClass"]="groupOfNames"; 4993 // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo... 4994 //$gidNumber=get_first_free_gidNumber(); 4995 $gidNumber=get_first_free_gidNumber(10000); 4996 if($gidNumber!=false) { 4997 $attributs["gidNumber"]="$gidNumber"; 4998 // Ou récupérer un nom long du fichier de STS... 4999 $attributs["description"]="$grp_mat / $chaine_div"; 5000 5001 //my_echo("<p>Création du groupe Cours_".$prefix."$grp: "); 5002 my_echo("Création du groupe Cours_".$prefix."$grp: "); 5003 //my_echo(" grp_mat=$grp_mat "); 5004 if(add_entry ("cn=Cours_".$prefix."$grp", "groups", $attributs)) { 5005 /* 5006 unset($attributs); 5007 $attributs=array(); 5008 $attributs["objectClass"]="posixGroup"; 5009 if(modify_attribut("cn=Cours_".$prefix."$grp","groups", $attributs, "add")) { 5010 */ 5011 my_echo("<font color='green'>SUCCES</font>"); 5012 5013 if ($servertype=="SE3") { 5014 //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\""); 5015 $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh Cours_".$prefix."$grp Cours_".$prefix."$grp \"$grp_mat / $chaine_div\"", $retour); 5016 } 5017 /* 5018 } 5019 else{ 5020 my_echo("<font color='red'>ECHEC</font>"); 5021 $temoin_cours="PROBLEME"; 5022 $nb_echecs++; 5023 } 5024 */ 5025 //my_echo("<font color='green'>SUCCES</font>"); 5026 } 5027 else{ 5028 my_echo("<font color='red'>ECHEC</font>"); 5029 $temoin_cours="PROBLEME"; 5030 $nb_echecs++; 5031 } 5032 my_echo("<br />\n"); 5033 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 5034 } 5035 else{ 5036 my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n"); 5037 $temoin_cours="PROBLEME"; 5038 $nb_echecs++; 5039 } 5040 } 5041 5042 5043 if($temoin_cours=="") { 5044 // Ajout de membres au groupe 5045 my_echo("Ajout de membres au groupe Cours_".$prefix."$grp: "); 5046 // Ajout des profs 5047 for($n=0;$n<count($tab_prof_uid);$n++) { 5048 $uid=$tab_prof_uid[$n]; 5049 $attribut=array("cn"); 5050 $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut); 5051 if(count($tabtmp)==0) { 5052 unset($attribut); 5053 $attribut=array(); 5054 $attribut["memberUid"]=$uid; 5055 if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) { 5056 my_echo("<b>$uid</b> "); 5057 } 5058 else{ 5059 my_echo("<font color='red'>$uid</font> "); 5060 $nb_echecs++; 5061 } 5062 } 5063 else{ 5064 my_echo("$uid "); 5065 } 5066 } 5067 5068 // Ajout des élèves 5069 for($n=0;$n<count($tab_eleve_uid);$n++) { 5070 $uid=$tab_eleve_uid[$n]; 5071 $attribut=array("cn"); 5072 $tabtmp=get_tab_attribut("groups", "(&(cn=Cours_".$prefix."$grp)(memberuid=$uid))", $attribut); 5073 if(count($tabtmp)==0) { 5074 unset($attribut); 5075 $attribut=array(); 5076 $attribut["memberUid"]=$uid; 5077 if(modify_attribut("cn=Cours_".$prefix."$grp","groups",$attribut,"add")) { 5078 my_echo("<b>$uid</b> "); 5079 } 5080 else{ 5081 my_echo("<font color='red'>$uid</font> "); 5082 $nb_echecs++; 5083 } 5084 } 5085 else{ 5086 my_echo("$uid "); 5087 } 5088 } 5089 my_echo(" (<i>".count($tab_prof_uid)."+".count($tab_eleve_uid)."</i>)\n"); 5090 my_echo("<br />\n"); 5091 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 5092 } 5093 my_echo("</p>\n"); 5094 } 5095 } 5096 if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");} 5097 } 5098 else{ 5099 my_echo("</h3>\n"); 5100 my_echo("<blockquote>\n"); 5101 my_echo("<p>Création des Cours non demandée.</p>\n"); 5102 } 5103 5104 my_echo("</blockquote>\n"); 5105 5106 my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n"); 5107 5108 5109 5110 5111 my_echo("<a name='creer_groupe_pp'></a>\n"); 5112 //my_echo("<h2>Création des groupes Cours</h2>\n"); 5113 //my_echo("<h3>Création des groupes Cours</h3>\n"); 5114 my_echo("<h3>Création d'un groupe Professeurs Principaux"); 5115 if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");} 5116 5117 if($alimenter_groupe_pp=='y') { 5118 my_echo("</h3>\n"); 5119 5120 // Prof principal 5121 unset($tab_pp); 5122 $tab_pp=array(); 5123 for($m=0;$m<count($prof);$m++) { 5124 if(isset($prof[$m]["prof_princ"])) { 5125 $employeeNumber="P".$prof[$m]["id"]; 5126 $attribut=array("uid"); 5127 $tabtmp=get_tab_attribut("people", "employeenumber=$employeeNumber", $attribut); 5128 if(count($tabtmp)!=0) { 5129 $uid=$tabtmp[0]; 5130 if(!in_array($uid,$tab_pp)) { 5131 $tab_pp[]=$uid; 5132 } 5133 } 5134 } 5135 } 5136 sort($tab_pp); 5137 5138 // Vider et ré-alimenter le groupe 5139 // Initialisation des membres du groupe Professeurs_Principaux 5140 $tab_mem_pp=array(); 5141 5142 $attribut=array("cn"); 5143 $tabtmp=get_tab_attribut("groups", "cn=$nom_groupe_pp", $attribut); 5144 if(count($tabtmp)==0) { 5145 // On crée le groupe 5146 $attributs=array(); 5147 $attributs["cn"]="$nom_groupe_pp"; 5148 $attributs["objectClass"][0]="top"; 5149 $attributs["objectClass"][1]="posixGroup"; 5150 //$attributs["objectClass"][2]="sambaGroupMapping"; 5151 5152 //$attributs["objectClass"]="posixGroup"; 5153 //$attributs["objectClass"]="groupOfNames"; 5154 // Il faudrait ajouter un test sur le fait qu'il reste un gidNumber dispo... 5155 //$gidNumber=get_first_free_gidNumber(); 5156 $gidNumber=get_first_free_gidNumber(10000); 5157 if($gidNumber!=false) { 5158 $attributs["gidNumber"]="$gidNumber"; 5159 // Ou récupérer un nom long du fichier de STS... 5160 $attributs["description"]="Professeurs Principaux"; 5161 5162 my_echo("<p>Création du groupe $nom_groupe_pp: "); 5163 if(add_entry ("cn=$nom_groupe_pp", "groups", $attributs)) { 5164 my_echo("<font color='green'>SUCCES</font>"); 5165 5166 if ($servertype=="SE3") { 5167 //my_echo("<br />/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh $nom_groupe_pp $nom_groupe_pp \"Professeurs Principaux\""); 5168 $resultat=exec("/usr/bin/sudo /usr/share/se3/scripts/group_mapping.sh $nom_groupe_pp $nom_groupe_pp \"Professeurs Principaux\"", $retour); 5169 } 5170 } 5171 else{ 5172 my_echo("<font color='red'>ECHEC</font>"); 5173 //$temoin_cours="PROBLEME"; 5174 $nb_echecs++; 5175 } 5176 my_echo("<br />\n"); 5177 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 5178 } 5179 else{ 5180 my_echo("<font color='red'>ECHEC</font> Il n'y a plus de gidNumber disponible.<br />\n"); 5181 //$temoin_cours="PROBLEME"; 5182 $nb_echecs++; 5183 } 5184 } 5185 else { 5186 // Liste des comptes présents dans le Groupe_Professeurs_Principaux. 5187 unset($attribut); 5188 $attribut=array("memberuid"); 5189 $tab_mem_pp=get_tab_attribut("groups","cn=$nom_groupe_pp",$attribut); 5190 5191 /* 5192 if(count($tab_mem_pp)>0) { 5193 my_echo("<p>On vide le groupe $nom_groupe_pp<br />\n"); 5194 5195 my_echo("Suppression de l'appartenance au groupe de: \n"); 5196 for($i=0;$i<count($tab_mem_pp);$i++) { 5197 if($i==0) { 5198 $sep=""; 5199 } 5200 else{ 5201 $sep=", "; 5202 } 5203 my_echo($sep); 5204 5205 unset($attr); 5206 $attr=array(); 5207 $attr["memberuid"]=$tab_mem_pp[$i]; 5208 if(modify_attribut("cn=$nom_groupe_pp","groups",$attr, "del")) { 5209 my_echo($tab_mem_pp[$i]); 5210 } 5211 else{ 5212 my_echo("<font color='red'>".$tab_mem_pp[$i]."</font>"); 5213 } 5214 } 5215 my_echo("</p>\n"); 5216 } 5217 else { 5218 my_echo("<p>Le groupe $nom_groupe_pp est vide.</p>\n"); 5219 } 5220 */ 5221 } 5222 5223 if(count($tab_pp)==0) { 5224 my_echo("Aucun professeur principal n'a été trouvé<br />\n"); 5225 } 5226 else { 5227 // Ajout de membres au groupe d'après $tab_pp 5228 my_echo("Ajout de membres au groupe $nom_groupe_pp: "); 5229 5230 for($n=0;$n<count($tab_pp);$n++) { 5231 $uid=$tab_pp[$n]; 5232 if(in_array($uid,$tab_mem_pp)) { 5233 // Rien à faire, déjà présent 5234 my_echo("$uid "); 5235 } 5236 else { 5237 5238 $attribut=array("cn"); 5239 $tabtmp=get_tab_attribut("groups", "(&(cn=$nom_groupe_pp)(memberuid=$uid))", $attribut); 5240 if(count($tabtmp)==0) { 5241 unset($attribut); 5242 $attribut=array(); 5243 $attribut["memberUid"]=$uid; 5244 if(modify_attribut("cn=$nom_groupe_pp","groups",$attribut,"add")) { 5245 my_echo("<b>$uid</b> "); 5246 } 5247 else{ 5248 my_echo("<font color='red'>$uid</font> "); 5249 $nb_echecs++; 5250 } 5251 } 5252 else{ 5253 my_echo("$uid "); 5254 } 5255 } 5256 } 5257 my_echo(" (<i>".count($tab_pp)."</i>)\n"); 5258 5259 5260 $temoin_membres_pp_a_virer="n"; 5261 for($n=0;$n<count($tab_mem_pp);$n++) { 5262 $uid=$tab_mem_pp[$n]; 5263 if(!in_array($uid,$tab_pp)) { 5264 if($temoin_membres_pp_a_virer=="n") { 5265 my_echo("<br />\n"); 5266 my_echo("Sortie du groupe $nom_groupe_pp de: "); 5267 } 5268 5269 unset($attribut); 5270 $attribut=array(); 5271 $attribut["memberUid"]=$uid; 5272 if(modify_attribut("cn=$nom_groupe_pp","groups",$attribut,"del")) { 5273 my_echo("$uid "); 5274 } 5275 else{ 5276 my_echo("<font color='red'>$uid</font> "); 5277 $nb_echecs++; 5278 } 5279 5280 } 5281 } 5282 my_echo("<br />\n"); 5283 } 5284 if($chrono=='y') {my_echo("Fin: ".date_et_heure()."<br />\n");} 5285 5286 } 5287 else { 5288 my_echo("</h3>\n"); 5289 my_echo("<blockquote>\n"); 5290 my_echo("<p>Création/alimentation du groupe Profs Principaux non demandée.</p>\n"); 5291 } 5292 my_echo("</blockquote>\n"); 5293 5294 5295 5296 my_echo("<p>Retour au <a href='#menu'>menu</a>.</p>\n"); 5297 5298 my_echo("<a name='fin'></a>\n"); 5299 //my_echo("<h3>Rapport final de création</h3>"); 5300 my_echo("<h3>Rapport final de création"); 5301 if($chrono=='y') {my_echo(" (<i>".date_et_heure()."</i>)");} 5302 my_echo("</h3>\n"); 5303 my_echo("<blockquote>\n"); 5304 my_echo("<p>Terminé!</p>\n"); 5305 my_echo("<script type='text/javascript'> 5306 document.getElementById('id_fin').style.display=''; 5307 </script>"); 5308 5309 $chaine=""; 5310 if($nouveaux_comptes==0) { 5311 $chaine.="<p>Aucun nouveau compte n'a été créé.</p>\n"; 5312 //my_echo("<p>Aucun nouveau compte n'a été créé.</p>\n"); 5313 } 5314 elseif($nouveaux_comptes==1) { 5315 //my_echo("<p>$nouveaux_comptes nouveau compte a été créé: $tab_nouveaux_comptes[0]</p>\n"); 5316 $chaine.="<p>$nouveaux_comptes nouveau compte a été créé: $tab_nouveaux_comptes[0]</p>\n"; 5317 } 5318 else{ 5319 /* 5320 my_echo("<p>$nouveaux_comptes nouveaux comptes ont été créés: \n"); 5321 my_echo($tab_nouveaux_comptes[0]); 5322 for($i=1;$i<count($tab_nouveaux_comptes);$i++) { 5323 my_echo(", $tab_nouveaux_comptes[$i]"); 5324 } 5325 my_echo("</p>\n"); 5326 */ 5327 $chaine.="<p>$nouveaux_comptes nouveaux comptes ont été créés: \n"; 5328 $chaine.=$tab_nouveaux_comptes[0]; 5329 for($i=1;$i<count($tab_nouveaux_comptes);$i++) { 5330 $chaine.=", $tab_nouveaux_comptes[$i]"; 5331 } 5332 $chaine.="</p>\n"; 5333 } 5334 5335 if($comptes_avec_employeeNumber_mis_a_jour==0) { 5336 //my_echo("<p>Aucun compte existant sans employeeNumber n'a été récupéré/corrigé.</p>\n"); 5337 $chaine.="<p>Aucun compte existant sans employeeNumber n'a été récupéré/corrigé.</p>\n"; 5338 } 5339 elseif($comptes_avec_employeeNumber_mis_a_jour==1) { 5340 //my_echo("<p>$comptes_avec_employeeNumber_mis_a_jour compte existant sans employeeNumber a été récupéré/corrigé (<i>son employeeNumber est maintenant renseigné</i>): $tab_comptes_avec_employeeNumber_mis_a_jour[0]</p>\n"); 5341 $chaine.="<p>$comptes_avec_employeeNumber_mis_a_jour compte existant sans employeeNumber a été récupéré/corrigé (<i>son employeeNumber est maintenant renseigné</i>): $tab_comptes_avec_employeeNumber_mis_a_jour[0]</p>\n"; 5342 } 5343 else{ 5344 /* 5345 my_echo("<p>$comptes_avec_employeeNumber_mis_a_jour comptes existants sans employeeNumber ont été récupérés/corrigés (<i>leur employeeNumber est maintenant renseigné</i>): \n"); 5346 my_echo("$tab_comptes_avec_employeeNumber_mis_a_jour[0]"); 5347 for($i=1;$i<count($tab_comptes_avec_employeeNumber_mis_a_jour);$i++) {my_echo(", $tab_comptes_avec_employeeNumber_mis_a_jour[$i]");} 5348 my_echo("</p>\n"); 5349 */ 5350 $chaine.="<p>$comptes_avec_employeeNumber_mis_a_jour comptes existants sans employeeNumber ont été récupérés/corrigés (<i>leur employeeNumber est maintenant renseigné</i>): \n"; 5351 $chaine.="$tab_comptes_avec_employeeNumber_mis_a_jour[0]"; 5352 for($i=1;$i<count($tab_comptes_avec_employeeNumber_mis_a_jour);$i++) {$chaine.=", $tab_comptes_avec_employeeNumber_mis_a_jour[$i]";} 5353 $chaine.="</p>\n"; 5354 } 5355 5356 my_echo($infos_corrections_gecos); 5357 5358 $chaine.=$infos_corrections_gecos; 5359 5360 if(count($tab_eleve_autre_etab)>0) { 5361 $tmp_txt="Un ou des élèves n'ont pas été enregistrés dans l'annuaire parce qu'importés d'un autre établissement avec un identifiant non encore mis à jour.\n"; 5362 //my_echo("<p>".$tmp_txt."</p><ul>"); 5363 //$chaine.=$tmp_txt; 5364 $chaine.="<p style='color:red'>".$tmp_txt."</p><ul>"; 5365 for($loop=0;$loop<count($tab_eleve_autre_etab);$loop++) { 5366 $tmp_tab=explode("|", $tab_eleve_autre_etab[$loop]); 5367 if($servertype=="SE3") { 5368 $tmp_txt="<a href='../annu/add_user.php?nom=".remplace_accents($tmp_tab[0])."&prenom=".remplace_accents($tmp_tab[1])."&sexe=".($tmp_tab[2]!="1" ? "F" : "M")."&naissance=".formate_date_aaaammjj($tmp_tab[3])."' target='_blank'>".$tmp_tab[0]." ".$tmp_tab[1]." (".($tmp_tab[2]!="1" ? "fille" : "garçon") .") né".($tmp_tab[2]!="1" ? "e" : "")." le ".$tmp_tab[3]."</a>"; 5369 } 5370 else { 5371 $tmp_txt=$tmp_tab[0]." ".$tmp_tab[1]." (".($tmp_tab[2]!="1" ? "fille" : "garçon") .") né".($tmp_tab[2]!="1" ? "e" : "")." le ".$tmp_tab[3]; 5372 } 5373 //my_echo("<li>".$tmp_txt."</li>"); 5374 //$chaine.=$tmp_txt."\n"; 5375 $chaine.="<li>".$tmp_txt."</li>"; 5376 } 5377 $tmp_txt="Vous devrez les créer à la main en attendant que Sconet/Sts soit à jour (<em>généralement fin septembre</em>)."; 5378 //my_echo("</ul><p>$tmp_txt</p>"); 5379 //$chaine.=$tmp_txt; 5380 $chaine.="</ul><p>$tmp_txt</p>"; 5381 } 5382 5383 if($nb_echecs==0) { 5384 //my_echo("<p>Aucune opération tentée n'a échoué.</p>\n"); 5385 $chaine.="<p>Aucune opération tentée n'a échoué.</p>\n"; 5386 } 5387 elseif($nb_echecs==1) { 5388 //my_echo("<p style='color:red;'>$nb_echecs opération tentée a échoué.</p>\n"); 5389 $chaine.="<p style='color:red;'>$nb_echecs opération tentée a échoué.</p>\n"; 5390 } 5391 else{ 5392 //my_echo("<p style='color:red;'>$nb_echecs opérations tentées ont échoué.</p>\n"); 5393 $chaine.="<p style='color:red;'>$nb_echecs opérations tentées ont échoué.</p>\n"; 5394 } 5395 my_echo($chaine); 5396 5397 5398 5399 5400 /* 5401 // Envoi par mail de $chaine et $echo_http_file 5402 5403 // Récupérer les adresses,... dans le /etc/ssmtp/ssmtp.conf 5404 unset($tabssmtp); 5405 my_echo("<p>Avant lireSSMTP();</p>"); 5406 $tabssmtp=lireSSMTP(); 5407 my_echo("<p>Après lireSSMTP();</p>"); 5408 my_echo("<p>\$tabssmtp[\"root\"]=".$tabssmtp["root"]."</p>"); 5409 // Contrôler les champs affectés... 5410 if(isset($tabssmtp["root"])) { 5411 $adressedestination=$tabssmtp["root"]; 5412 $sujet="[$domain] Rapport de "; 5413 if($simulation=="y") {$sujet.="simulation de ";} 5414 $sujet.="création de comptes"; 5415 $message="Import du $debut_import\n"; 5416 $message.="$chaine\n"; 5417 $message.="\n"; 5418 $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n"; 5419 $entete="From: ".$tabssmtp["root"]; 5420 my_echo("<p>Avant mail.</p>"); 5421 mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n"); 5422 my_echo("<p>Après mail.</p>"); 5423 } 5424 else{ 5425 my_echo("<p>\$tabssmtp[\"root\"] doit être vide.</p>"); 5426 my_echo("<p style='color:red;'><b>MAIL:</b> La configuration mail ne permet pas d'expédier le rapport.<br />Consultez/renseignez le menu Informations système/Actions sur le serveur/Configurer l'expédition des mails.</p>\n"); 5427 } 5428 */ 5429 5430 //my_echo("<p>Avant màj params.</p>"); 5431 5432 // Renseignement du témoin de mise à jour terminée. 5433 $sql="SELECT value FROM params WHERE name='imprt_cmpts_en_cours'"; 5434 $res1=mysql_query($sql); 5435 if(mysql_num_rows($res1)==0) { 5436 $sql="INSERT INTO params SET name='imprt_cmpts_en_cours',value='n'"; 5437 $res0=mysql_query($sql); 5438 } 5439 else{ 5440 $sql="UPDATE params SET value='n' WHERE name='imprt_cmpts_en_cours'"; 5441 $res0=mysql_query($sql); 5442 } 5443 5444 //my_echo("<p>Après màj params.</p>"); 5445 5446 if($chrono=='y') {my_echo("<p>Fin de l'opération: ".date_et_heure()."</p>\n");} 5447 5448 my_echo("<p><a href='".$www_import."'>Retour</a>.</p>\n"); 5449 5450 my_echo("</blockquote>\n"); 5451 my_echo("<script type='text/javascript'> 5452 compte_a_rebours='n'; 5453 </script>\n"); 5454 //my_echo("</body>\n</html>\n"); 5455 5456 // } 5457 5458 // Dans la version PHP4-CLI, envoyer le rapport par mail. 5459 // Envoyer le contenu de la page aussi? 5460 5461 // Peut-être forcer une sauvegarde de l'annuaire avant de procéder à une opération qui n'est pas une simulation. 5462 // Où placer le fichier de sauvegarde? 5463 // Problème de l'encombrement à terme. 5464 // } 5465 5466 // SUPPRIMER LES FICHIERS CSV/XML en fin d'import. 5467 5468 if(file_exists($eleves_file)) { 5469 unlink($eleves_file); 5470 } 5471 5472 if(file_exists($sts_xml_file)) { 5473 unlink($sts_xml_file); 5474 } 5475 5476 if(file_exists("$dossier_tmp_import_comptes/import_comptes.sh")) { 5477 unlink("$dossier_tmp_import_comptes/import_comptes.sh"); 5478 } 5479 5480 5481 if(file_exists("/tmp/debug_se3lcs.txt")) { 5482 // Il faut pouvoir écrire dans le fichier depuis /var/www/se3/annu/import_sconet.php sans sudo... donc www-se3 doit être proprio ou avoir les droits... 5483 exec("chown $user_web /tmp/debug_se3lcs.txt"); 5484 } 5485 5486 // Lien pour la récupération du mailing 5487 if (count($listing, COUNT_RECURSIVE) > 1) { 5488 $serial_listing=rawurlencode(serialize($listing)); 5489 5490 my_echo("<form id='postlisting' action='../annu/listing.php' method='post' style='display:none;'>"); 5491 my_echo("<input type='hidden' name='hiddeninput' value='$serial_listing' />"); 5492 my_echo("</form><p>"); 5493 5494 $lien="<a href=\"#\" onclick=\"document.getElementById('postlisting').submit(); return false;\">Télécharger le listing des utilisateurs importés...</a>"; 5495 5496 my_echo("<table><tr><td><img src='../elements/images/pdffile.png'></td><td>"); 5497 my_echo($lien); 5498 my_echo("<br /><span style='color:red;'>Attention, les données ne seront pas conservées en quittant cette page ! Enregistrez le fichier PDF...</span></td></tr></table></p>"); 5499 5500 } 5501 5502 5503 // Envoi par mail de $chaine et $echo_http_file 5504 if ( $servertype=="SE3" ) { 5505 // Récupérer les adresses,... dans le /etc/ssmtp/ssmtp.conf 5506 unset($tabssmtp); 5507 $tabssmtp=lireSSMTP(); 5508 // Contrôler les champs affectés... 5509 if (isset($tabssmtp["root"])) { 5510 $adressedestination=$tabssmtp["root"]; 5511 $sujet="[$domain] Rapport de "; 5512 if($simulation=="y") {$sujet.="simulation de ";} 5513 $sujet.="création de comptes"; 5514 $message="Import du $debut_import\n"; 5515 $message.="$chaine\n"; 5516 $message.="\n"; 5517 $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n"; 5518 $entete="From: ".$tabssmtp["root"]; 5519 mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n"); 5520 } else my_echo("<p style='color:red;'><b>MAIL:</b> La configuration mail ne permet pas d'expédier le rapport.<br />Consultez/renseignez le menu Informations système/Actions sur le serveur/Configurer l'expédition des mails.</p>\n"); 5521 } elseif ( $servertype=="LCS") { 5522 $adressedestination="admin@$domain"; 5523 $sujet="[$domain] Rapport de "; 5524 if($simulation=="y") {$sujet.="simulation de ";} 5525 $sujet.="création de comptes"; 5526 $message="Import du $debut_import\n"; 5527 $message.="$chaine\n"; 5528 $message.="\n"; 5529 $message.="Vous pouvez consulter le rapport détaillé à l'adresse $echo_http_file\n"; 5530 $entete="From: root@$domain"; 5531 mail("$adressedestination", "$sujet", "$message", "$entete") or my_echo("<p style='color:red;'><b>ERREUR</b> lors de l'envoi du rapport par mail.</p>\n"); 5532 } 5533 5534 my_echo("</body>\n</html>\n"); 5535 5536 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |