security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } include("../lib/initialisation_annee.inc.php"); $liste_tables_del = $liste_tables_del_etape_matieres; //**************** EN-TETE ***************** $titre_page = "Outil d'initialisation de l'année : Importation des matières"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** echo "
"; if (isset($_POST['is_posted'])) { check_token(false); // L'admin a validé la procédure, on procède donc... include "../lib/eole_sync_functions.inc.php"; // On commence par récupérer toutes les matières depuis le LDAP $ldap_server = new LDAPServer; $sr = ldap_search($ldap_server->ds,$ldap_server->base_dn,"(description=Matiere*)"); $info = ldap_get_entries($ldap_server->ds,$sr); if ($_POST['record'] == "yes") { // Suppression des données présentes dans les tables en lien avec les matières /* NON! On ne fait qu'une mise à jour de la liste, le cas échéant... $j=0; while ($j < count($liste_tables_del)) { if (old_mysql_result(mysql_query("SELECT count(*) FROM $liste_tables_del[$j]"),0)!=0) { $del = @mysql_query("DELETE FROM $liste_tables_del[$j]"); } $j++; } */ $new_matieres = array(); for ($i=0;$i<$info["count"];$i++) { $matiere = $info[$i]["cn"][0]; $matiere = traitement_magic_quotes(corriger_caracteres(trim($matiere))); $matiere = preg_replace("/[^A-Za-z0-9.\-]/","",strtoupper($matiere)); $get_matieres = mysqli_query($GLOBALS["mysqli"], "SELECT matiere FROM matieres"); $nbmat = mysqli_num_rows($get_matieres); $matieres = array(); for($j=0;$j<$nbmat;$j++) { $matieres[] = old_mysql_result($get_matieres, $j, "matiere"); } if (!in_array($matiere, $matieres)) { $reg_matiere = mysqli_query($GLOBALS["mysqli"], "INSERT INTO matieres SET matiere='".$matiere."',nom_complet='".($_POST['reg_nom_complet'][$matiere])."', priority='11',matiere_aid='n',matiere_atelier='n'"); } else { $reg_matiere = mysqli_query($GLOBALS["mysqli"], "UPDATE matieres SET nom_complet='".($_POST['reg_nom_complet'][$matiere])."' WHERE matiere = '" . $matiere . "'"); } if (!$reg_matiere) echo "Erreur lors de l'enregistrement de la matière $matiere."; $new_matieres[] = $matiere; // On regarde maintenant les affectations professeur/matière for($k=0;$k<$info[$i]["memberuid"]["count"];$k++) { $member = $info[$i]["memberuid"][$k]; $test = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT count(*) FROM j_professeurs_matieres WHERE (id_professeur = '" . $member . "' and id_matiere = '" . $matiere . "')"), 0); if ($test == 0) { $res = mysqli_query($GLOBALS["mysqli"], "INSERT into j_professeurs_matieres SET id_professeur = '" . $member . "', id_matiere = '" . $matiere . "'"); } } } // On efface les matières qui ne sont plus utilisées $to_remove = array_diff($matieres, $new_matieres); foreach($to_remove as $delete) { $res = mysqli_query($GLOBALS["mysqli"], "DELETE from matieres WHERE matiere = '" . $delete . "'"); $res2 = mysqli_query($GLOBALS["mysqli"], "DELETE from j_professeurs_matieres WHERE id_matiere = '" . $delete . "'"); } // Ménage sur l'ordre des groupes dans l'affichage simplifié prof: // Sinon, on peut se retrouver avec des rangs aberrants liés à des groupes qui n'existent plus dans la table groupes. $sql="DELETE FROM preferences WHERE name LIKE 'accueil_simpl_id_groupe_order_%';"; $del=mysqli_query($GLOBALS["mysqli"], $sql); echo "
Opération effectuée.
"; echo "Vous pouvez vérifier l'importation en allant sur la page de gestion des matières.
"; } elseif ($_POST['record'] == "no") { echo "\n"; } } else { echo "ATTENTION ...
";
echo "
Si vous poursuivez la procédure les données telles que notes, appréciations, ... seront effacées.
"; echo "Seules la table contenant les matières et la table mettant en relation les matières et les professeurs seront conservées.
"; echo "L'opération d'importation des matières depuis le LDAP de Scribe va effectuer les opérations suivantes :
"; echo "