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; // Initialisation $lcs_ldap_people_dn = 'ou=people,'.$lcs_ldap_base_dn; $lcs_ldap_groups_dn = 'ou=groups,'.$lcs_ldap_base_dn; //**************** 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(); // L'admin a validé la procédure, on procède donc... // On se connecte au LDAP $ds = connect_ldap($lcs_ldap_host,$lcs_ldap_port,"",""); // On commence par récupérer tous les profs depuis le LDAP $sr = ldap_search($ds,$lcs_ldap_base_dn,"(cn=Matiere_*)"); $info = ldap_get_entries($ds,$sr); if ($_POST['record'] == "yes") { // Suppression des données présentes dans les tables en lien avec les matières echo "

On vide d'abord les tables suivantes : "; $j=0; $k=0; while ($j < count($liste_tables_del)) { $sql="SHOW TABLES LIKE '".$liste_tables_del[$j]."';"; //echo "$sql
"; $test = sql_query1($sql); if ($test != -1) { if($k>0) {echo ", ";} $sql="SELECT 1=1 FROM $liste_tables_del[$j];"; $res_test_tab=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_test_tab)>0) { $sql="DELETE FROM $liste_tables_del[$j];"; $del = @mysqli_query($GLOBALS["mysqli"], $sql); echo "".$liste_tables_del[$j].""; echo " (".mysqli_num_rows($res_test_tab).")"; } else { echo $liste_tables_del[$j]; } $k++; } $j++; } // 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); $new_matieres = array(); echo "\n"; echo "\n"; for ($i=0;$i<$info["count"];$i++) { $matiere=preg_replace("/Matiere_/","",$info[$i]["cn"][0]); $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='".html_entity_decode(stripslashes($_POST['reg_nom_complet'][$matiere]))."', priority='0',matiere_aid='n',matiere_atelier='n'"); } else { $reg_matiere = mysqli_query($GLOBALS["mysqli"], "UPDATE matieres SET nom_complet='".html_entity_decode(stripslashes($_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 $list_member = ""; if ($info[$i]["memberuid"]["count"] > 0) { for ( $u = 0; $u < $info[$i]["memberuid"]["count"] ; $u++ ) { $member = preg_replace ("/^uid=([^,]+),ou=.*/" , "\\1", $info[$i]["memberuid"][$u] ); if (trim($member) !="") { if ($list_member != "") $list_member .=", "; $list_member .=$member; $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 . "'"); } } } } else { for ( $u = 0; $u < $info[$i]["member"]["count"] ; $u++ ) { $member = preg_replace ("/^uid=([^,]+),ou=.*/" , "\\1", $info[$i]["member"][$u] ); if (trim($member) !="") { if ($list_member != "") $list_member .=", "; $list_member .=$member; $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 . "'"); } } } } echo "

\n"; } // On efface les matières qui ne sont plus utilisées echo "
Identifiant matièreNom complet matièreidentifiants prof.
".$matiere."".stripslashes($_POST['reg_nom_complet'][$matiere])."".$list_member."
"; $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 . "'"); } 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=preg_replace("/Matiere_/","",$info[$i]["cn"][0]); $description = $info[$i]["description"][0]; $test_exist = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM matieres WHERE matiere='$matiere'"); $nb_test_matiere_exist = mysqli_num_rows($test_exist); if ($nb_test_matiere_exist==0) { $nom_complet = $description; $nom_court = "".$matiere.""; } else { $id_matiere = old_mysql_result($test_exist, 0, 'matiere'); $nom_court = "".$matiere.""; $nom_complet = old_mysql_result($test_exist, 0, 'nom_complet'); } echo ""; echo ""; echo ""; } echo "

Identifiant de la matière

Nom complet

"; echo "

$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 LCS va effectuer les opérations suivantes :

"; echo ""; echo "
"; echo add_token_field(); echo ""; echo ""; echo "

Etes-vous sûr de vouloir importer toutes les matières depuis l'annuaire du serveur LCS vers Gepi ?

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