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 "

Retour Retour

"; 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 "
"; echo add_token_field(); echo ""; echo ""; echo "

Les matières en vert indiquent des matières déjà existantes dans la base GEPI.
Les matières en rouge indiquent des matières nouvelles et qui vont être ajoutées à la base GEPI.

"; echo "

Attention !!! Il n'y a pas de tests sur les champs entrés. Soyez vigilant à ne pas mettre des caractères spéciaux dans les champs ...

"; echo "

Essayez de remplir tous les champs, cela évitera d'avoir à le faire ultérieurement.

"; echo "

N'oubliez pas d'enregistrer les données en cliquant sur le bouton en bas de la page

"; echo "
"; echo "

"; echo ""; echo ""; for ($i=0;$i<$info["count"];$i++) { $matiere = $info[$i]["cn"][0]; $matiere = traitement_magic_quotes(corriger_caracteres(trim($matiere))); $nom_court = preg_replace("/[^A-Za-z0-9.\-]/","",strtoupper($matiere)); $nom_long = htmlspecialchars($matiere); $test_exist = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres WHERE matiere='$nom_court'"); $nb_test_matiere_exist = mysqli_num_rows($test_exist); if ($nb_test_matiere_exist==0) { $disp_nom_court = "".$nom_court.""; } else { $disp_nom_court = "".$nom_court.""; } echo ""; echo ""; echo ""; } echo "

Identifiant de la matière

Nom complet

"; echo "

$disp_nom_court

"; echo ""; echo "
"; echo "\n"; echo "
\n"; echo "
"; echo "
\n"; 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 ""; echo "
"; echo add_token_field(); echo ""; echo ""; echo "

Etes-vous sûr de vouloir continuer ?

"; echo "
"; echo ""; echo "
"; } require("../lib/footer.inc.php"); ?>