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(); } // 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 : affectation des matières et des professeurs aux classes"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** echo "

Retour Retour

"; function is_prof($login,$matiere) { $test = sql_query1("select count(id_professeur) from j_professeurs_matieres where id_professeur = '".$login."' and id_matiere = '".$matiere."'"); if ($test > 0) return true; else return false; } if (isset($_POST['is_posted'])) { check_token(); // L'admin a validé la procédure, on procède donc... 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++; } // On se connecte au LDAP $ds = connect_ldap($lcs_ldap_host,$lcs_ldap_port,"",""); echo "\n"; echo "\n"; // Première boucle sur les classes : //================================================ // Modif: boireaus 20091119 //$res = sql_query("select id, classe from classes"); $res = sql_query("select id, classe from classes"); //================================================ if (!$res) die("problème : impossible de sélectionner les classes."); for ($i = 0; ($row = sql_row($res, $i)); $i++) { $id_classe = $row[0]; $nom_classe = $row[1]; // Deuxième boucle sur les matières : $res2 = sql_query("select matiere, nom_complet from matieres"); if (!$res2) die("problème : impossible de sélectionner les matières."); for ($j = 0; ($row2 = sql_row($res2, $j)); $j++) { $id_matiere = $row2[0]; $nom_complet = $row2[1]; // On cherche tous groupes qui commence par "Cours_Matiere_Classe" //================================================ // Modif: boireaus 20091119 //$nom_cours = "Cours_".$id_matiere."_".$nom_classe."_"; $nom_cours = "Cours_".$id_matiere."_".$nom_classe; //================================================ $sr = ldap_search($ds,$ldap_base,"(cn=".$nom_cours."*)"); $info = ldap_get_entries($ds,$sr); $ordre = 0; // boucle sur les "Cours_Matiere_Classe..." for ($k=0;$k<$info["count"];$k++) { // On récupère tous les membres de ces groupes for ( $u = 0; $u < $info[$k]["memberuid"]["count"] ; $u++ ) { $uid = $info[$k]["memberuid"][$u] ; if (is_prof($uid,$id_matiere)) { // On regarde si cette association correspond déjà à un groupe $test = mysqli_query($GLOBALS["mysqli"], "SELECT g.id FROM groupes g, j_groupes_classes jgc, j_groupes_matieres jgm WHERE (" . "g.id = jgc.id_groupe AND " . "jgc.id_classe = '" . $id_classe . "' AND " . "jgc.id_groupe = jgm.id_groupe AND " . "jgm.id_matiere = '" . $id_matiere . "')"); if (mysqli_num_rows($test) != 0) { $ordre++; // Si un enregistrement existe déjà, ça veut dire que le groupe a déjà été traité // il ne reste alors qu'à ajouter le professeur mentionné dans cette association $group_id = old_mysql_result($test, 0, "id"); $insert_prof = mysqli_query($GLOBALS["mysqli"], "INSERT into j_groupes_professeurs SET id_groupe = '" . $group_id ."', login = '" . $uid . "', ordre_prof = '" . $ordre ."'"); } else { // La première étape consiste à créer le nouveau groupe, pour obtenir son ID $ordre++; $new_group = create_group($nom_complet, $nom_complet, $id_matiere, array($id_classe)); // On ajoute le professeur $insert_prof = mysqli_query($GLOBALS["mysqli"], "INSERT into j_groupes_professeurs SET id_groupe = '" . $new_group ."', login = '" . $uid . "', ordre_prof = '" . $ordre ."'"); // On s'occupe maintenant des élèves, période par période $call_periodes = mysqli_query($GLOBALS["mysqli"], "select num_periode FROM periodes WHERE id_classe = '" . $id_classe . "'"); $nb_per = mysqli_num_rows($call_periodes); for ($m=0;$m<$nb_per;$m++) { $num_periode = old_mysql_result($call_periodes, $m, "num_periode"); $call_eleves = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM j_eleves_classes WHERE (periode = '" . $num_periode . "' AND id_classe = '" . $id_classe ."')"); $eleves = array(); while ($row1 = mysqli_fetch_row($call_eleves)) { $eleves[] = $row1[0]; } foreach ($eleves as $login) { if ($new_group == 0) echo "ERREUR! New_group ID = 0
"; // Appartenance au groupe $insert = mysqli_query($GLOBALS["mysqli"], "INSERT into j_eleves_groupes SET login = '" . $login . "', id_groupe = '" . $new_group . "', periode = '" . $num_periode . "'"); // Mise à jour de la référence à la note du bulletin $update = mysqli_query($GLOBALS["mysqli"], "UPDATE matieres_notes SET id_groupe = '" . $new_group . "' WHERE (login = '" . $login . "' AND periode = '" . $num_periode . "' AND matiere = '" . $id_matiere . "')"); // Mise à jour de la référence à l'appréciation du bulletin $update = mysqli_query($GLOBALS["mysqli"], "UPDATE matieres_appreciations SET id_groupe = '" . $new_group . "' WHERE (login = '" . $login . "' AND periode = '" . $num_periode . "' AND matiere = '" . $id_matiere . "')"); } } // Et on fait les mises à jours de références pour les carnets de notes et cahiers de texte $update_cn = mysqli_query($GLOBALS["mysqli"], "UPDATE cn_cahier_notes SET id_groupe = '" . $new_group . "' WHERE (matiere = '" . $id_matiere . "' AND id_classe = '" . $id_classe . "')"); $update_ct1 = mysqli_query($GLOBALS["mysqli"], "UPDATE ct_devoir_entry SET id_groupe = '" . $new_group . "' WHERE (id_matiere = '" . $id_matiere . "' AND id_classe = '" . $id_classe . "')"); $update_ct2 = mysqli_query($GLOBALS["mysqli"], "UPDATE ct_entry SET id_groupe = '" . $new_group . "' WHERE (id_matiere = '" . $id_matiere . "' AND id_classe = '" . $id_classe . "')"); echo "\n"; } } } } } } echo "
ClasseMatièreidentifiants prof.
".$nom_classe."".$id_matiere." (".$nom_complet.")".$uid."
"; echo "

Opération effectuée.

"; // echo "

Vous pouvez vérifier l'importation en allant sur la page de gestion des matières.

"; } else { $j=0; $flag=0; for($j=0;$j"; $test = sql_query1($sql); if ($test != -1) { $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) { $flag=1; break; } } //flush(); } if ($flag != 0){ echo "

ATTENTION ...
"; echo "Des données concernant la constitution des classes et l'affectation des élèves dans les classes sont présentes dans la base GEPI ! Si vous poursuivez la procédure, ces données seront définitivement effacées !

"; } echo "

Cette procédure a pour but, à partir des données présentes dans l'annuaire LCS, d'affecter des matières aux classes et des professeurs aux matières.

"; echo "

Pour chaque classe et chaque matière actuellement présentes dans la base GEPI, le script recherche les professeurs membres des groupes du type \"Cours_classe_matiere..\" et les affecte au couple (classe/matière).

"; echo "

Tous les élèves sont systématiquement affectés pour toutes les périodes de l'année.

"; echo "

Le résultat n'est pas parfait et vous aurez besoin de faire des ajustements classe par classe.

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

Etes-vous sûr de vouloir continuer ?

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