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();};
// INSERT INTO droits VALUES ('/mod_annees_anterieures/conservation_annee_anterieure.php', 'V', 'F', 'F', 'F', 'F', 'F', 'F', 'Conservation des données antérieures', '');
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
/*
$prof=isset($_POST['prof']) ? $_POST['prof'] : NULL;
$page=isset($_POST['page']) ? $_POST['page'] : NULL;
$enregistrer=isset($_POST['enregistrer']) ? $_POST['enregistrer'] : NULL;
*/
$id_classe=isset($_POST['id_classe']) ? $_POST['id_classe'] : NULL;
$deja_traitee_id_classe=isset($_POST['deja_traitee_id_classe']) ? $_POST['deja_traitee_id_classe'] : NULL;
$annee_scolaire=isset($_POST['annee_scolaire']) ? $_POST['annee_scolaire'] : NULL;
$confirmer=isset($_POST['confirmer']) ? $_POST['confirmer'] : NULL;
$generer_fichier_sql=isset($_POST['generer_fichier_sql']) ? $_POST['generer_fichier_sql'] : "";
// Si le module n'est pas activé...
if($gepiSettings['active_annees_anterieures'] !="y"){
// A DEGAGER
// A VOIR: Comment enregistrer une tentative d'accès illicite?
header("Location: ../logout.php?auto=1");
die();
}
$msg="";
/*
if(isset($enregistrer)){
if($msg==""){
$msg="Enregistrement réussi.";
}
unset($page);
}
*/
// Suppression des données archivées pour une année donnée.
if (isset($_GET['action']) and ($_GET['action']=="supp_annee")) {
check_token();
$sql="DELETE FROM archivage_disciplines WHERE annee='".$_GET["annee_supp"]."';";
$res_suppr1=mysqli_query($GLOBALS["mysqli"], $sql);
// Maintenant, on regarde si l'année est encore utilisée dans archivage_types_aid
// Sinon, on supprime les entrées correspondantes à l'année dans archivage_eleves2 car elles ne servent plus à rien.
$test = sql_query1("select count(annee) from archivage_types_aid where annee='".$_GET['annee_supp']."'");
if ($test == 0) {
$sql="DELETE FROM archivage_eleves2 WHERE annee='".$_GET["annee_supp"]."';";
$res_suppr2=mysqli_query($GLOBALS["mysqli"], $sql);
} else {
$res_suppr2 = 1;
}
$sql="DELETE FROM archivage_ects WHERE annee='".$_GET["annee_supp"]."';";
$res_suppr3=mysqli_query($GLOBALS["mysqli"], $sql);
// Maintenant, il faut supprimer les données élèves qui ne servent plus à rien
suppression_donnees_eleves_inutiles();
if (($res_suppr1) and ($res_suppr2) and ($res_suppr3)) {
$msg = "La suppression des données a été correctement effectuée.";
} else {
$msg = "Un ou plusieurs problèmes ont été rencontrés lors de la suppression.";
}
}
if(isset($_GET['chgt_annee'])) {$_SESSION['chgt_annee']="y";}
$themessage = 'Etes-vous sûr de vouloir supprimer toutes les données concerant cette année ?';
//**************** EN-TETE *****************
$titre_page = "Conservation des données antérieures (autres que AID)";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************
echo "
";
// Afficher les classes pour lesquelles les données sont déjà migrées...
$sql="SELECT id,classe FROM classes ORDER BY classe";
$res1=mysqli_query($GLOBALS["mysqli"], $sql);
$nb_classes=mysqli_num_rows($res1);
if($nb_classes==0){
echo "
ERREUR: Il semble qu'aucune classe ne soit encore définie.
\n";
// Boucle sur les périodes de la classe
$sql="SELECT * FROM periodes WHERE id_classe='".$id_classe[0]."' ORDER BY num_periode";
$res_periode=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_periode)==0){
echo "
Aucune période ne semble définie pour la classe $classe
\n";
}
else{
unset($tab_periode);
$tab_periode=array();
//$cpt=0;
$cpt=1;
while($lig_periode=mysqli_fetch_object($res_periode)){
$tab_periode[$cpt]=$lig_periode->nom_periode;
$cpt++;
}
$sql="SELECT DISTINCT e.* FROM eleves e,j_eleves_classes jec WHERE id_classe='".$id_classe[0]."' AND jec.login=e.login ORDER BY login";
//echo "$sql \n";
$res_ele=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_ele)==0){
echo "
\n";
// Début du traitement
// Répartitions annuelles
$moy_eleve_groupe_annee=array();
$tab_prof_grp=array();
$mat_grp=array();
$code_mat_grp=array();
$tab_archivage_engagements=array();
for($i=1;$i<=count($tab_periode);$i++){
// Nettoyage:
$sql="DELETE FROM archivage_disciplines WHERE annee='$annee_scolaire' AND classe='$classe' AND num_periode='$i';";
enregistrer_sql_archivage($sql);
$res_nettoyage=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_nettoyage){
echo "
ERREUR lors du nettoyage
\n";
echo "\n";
require("../lib/footer.inc.php");
die();
}
$erreur=0;
$num_periode=$i;
$nom_periode=$tab_periode[$i];
// Calculer les moyennes de classe, rechercher min et max pour tous les groupes associés à la classe sur la période.
//$sql="SELECT DISTINCT id_groupe, priorite FROM j_groupes_classes WHERE id_classe='".$id_classe[0]."'";
// Problème avec les élèves qui changent de classe: Il faut récupérer les effectifs,... de tous les groupes associés à des élèves de la classe
$sql="SELECT DISTINCT jeg.id_groupe FROM j_eleves_classes jec,
j_eleves_groupes jeg
WHERE jec.id_classe='".$id_classe[0]."' AND
jec.login=jeg.login;";
//echo "$sql ";
$res_groupes=mysqli_query($GLOBALS["mysqli"], $sql);
$moymin=array();
$moymax=array();
$moyclasse=array();
$ordre_matiere=array();
$eff_groupe=array();
$repar_moins_8=array();
$repar_8_12=array();
$repar_plus_12=array();
if(mysqli_num_rows($res_groupes)==0){
// Dans ce cas, il ne doit pas y avoir de note,... pour les élèves
}
else{
while($lig_groupes=mysqli_fetch_object($res_groupes)){
$id_groupe=$lig_groupes->id_groupe;
$sql="SELECT priorite FROM j_groupes_classes WHERE id_classe='".$id_classe[0]."' AND id_groupe='$id_groupe';";
$res_grp_ordre=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_grp_ordre)>0) {
$lig_grp_ordre=mysqli_fetch_object($res_grp_ordre);
$ordre_matiere[$id_groupe]=$lig_grp_ordre->priorite;
}
else {
$sql="SELECT priorite FROM j_groupes_classes WHERE id_groupe='$id_groupe';";
$res_grp_ordre=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_grp_ordre)>0) {
$lig_grp_ordre=mysqli_fetch_object($res_grp_ordre);
$ordre_matiere[$id_groupe]=$lig_grp_ordre->priorite;
}
else {
$ordre_matiere[$id_groupe]="";
}
}
$sql="SELECT 1=1 FROM matieres_notes WHERE id_groupe='$id_groupe' AND periode='$i'";
//echo "$sql \n";
$res_eff=mysqli_query($GLOBALS["mysqli"], $sql);
$eff_groupe[$id_groupe]=mysqli_num_rows($res_eff);
$repar_moins_8[$id_groupe]="";
$repar_8_12[$id_groupe]="";
$repar_plus_12[$id_groupe]="";
if($eff_groupe[$id_groupe]>0) {
$sql="SELECT 1=1 FROM matieres_notes WHERE id_groupe='$id_groupe' AND statut='' AND note<'8' AND periode='$i'";
//echo "$sql \n";
$res_eff=mysqli_query($GLOBALS["mysqli"], $sql);
$repar_moins_8[$id_groupe]=100*mysqli_num_rows($res_eff)/$eff_groupe[$id_groupe];
$sql="SELECT 1=1 FROM matieres_notes WHERE id_groupe='$id_groupe' AND statut='' AND note>='8' AND note<'12' AND periode='$i'";
//echo "$sql \n";
$res_eff=mysqli_query($GLOBALS["mysqli"], $sql);
$repar_8_12[$id_groupe]=100*mysqli_num_rows($res_eff)/$eff_groupe[$id_groupe];
$sql="SELECT 1=1 FROM matieres_notes WHERE id_groupe='$id_groupe' AND statut='' AND note>='12' AND periode='$i'";
//echo "$sql \n";
$res_eff=mysqli_query($GLOBALS["mysqli"], $sql);
$repar_plus_12[$id_groupe]=100*mysqli_num_rows($res_eff)/$eff_groupe[$id_groupe];
}
$sql="SELECT AVG(note) moyenne FROM matieres_notes WHERE id_groupe='$id_groupe' AND statut='' AND periode='$i'";
//echo "$sql \n";
$res_moy=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_moy)==0){
$moyclasse[$id_groupe]="-";
}
else{
$lig_moy=mysqli_fetch_object($res_moy);
$moyclasse[$id_groupe]=round($lig_moy->moyenne*10)/10;
}
$sql="SELECT MAX(note) moyenne FROM matieres_notes WHERE id_groupe='$id_groupe' AND statut='' AND periode='$i'";
$res_moy=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_moy)==0){
$moymax[$id_groupe]="-";
}
else{
$lig_moy=mysqli_fetch_object($res_moy);
$moymax[$id_groupe]=$lig_moy->moyenne;
}
$sql="SELECT MIN(note) moyenne FROM matieres_notes WHERE id_groupe='$id_groupe' AND statut='' AND periode='$i'";
$res_moy=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_moy)==0){
$moymin[$id_groupe]="-";
}
else{
$lig_moy=mysqli_fetch_object($res_moy);
$moymin[$id_groupe]=$lig_moy->moyenne;
}
}
}
/*
echo "
";
print_r($eff_groupe);
echo "
";
*/
// Boucle sur les élèves
for($j=0;$j
document.getElementById('td_0_".$j."').style.backgroundColor='red';
\n";
}
$mef_code=$tab_eleve[$j]['mef_code'];
if(getSettingAOui('active_mod_engagements')) {
if(!in_array($ine, $tab_archivage_engagements)) {
$sql="DELETE FROM archivage_engagements WHERE annee='$annee_scolaire' AND ine='$ine';";
enregistrer_sql_archivage($sql);
//echo "$sql ";
$menage=mysqli_query($GLOBALS["mysqli"], $sql);
if(array_key_exists($login_eleve, $tab_engagements_classe['login_user'])) {
for($loop=0;$loop";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$insert){
$erreur++;
echo "\n";
}
}
}
$tab_archivage_engagements[]=$ine;
}
}
$sql="SELECT * FROM j_eleves_classes WHERE id_classe='".$id_classe[0]."' AND periode='$i'";
$res_eff=mysqli_query($GLOBALS["mysqli"], $sql);
$eff_classe=mysqli_num_rows($res_eff);
// Absences, retards,... de l'élève
$sql="SELECT * FROM absences WHERE login='".$login_eleve."' AND periode='$i'";
$res_abs=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_abs)==0){
$nb_absences="-";
$non_justifie="-";
$nb_retards="-";
$appreciation="-";
}
else{
$lig_abs=mysqli_fetch_object($res_abs);
$nb_absences=$lig_abs->nb_absences;
$non_justifie=$lig_abs->non_justifie;
$nb_retards=$lig_abs->nb_retards;
$appreciation=$lig_abs->appreciation;
}
$sql="INSERT INTO archivage_disciplines SET
annee='$annee_scolaire',
ine='$ine',
classe='".addslashes($classe)."',
effectif='$eff_classe',
mef_code='$mef_code',
num_periode='$num_periode',
nom_periode='".addslashes($nom_periode)."',
special='ABSENCES',
matiere='',
code_matiere='',
id_prof='".$tab_eleve[$j]['numind_cpe']."',
type_prof='".$tab_eleve[$j]['type_cpe']."',
prof='".addslashes($cpe)."',
nom_prof='".addslashes($tab_eleve[$j]['nom_cpe'])."',
prenom_prof='".addslashes($tab_eleve[$j]['prenom_cpe'])."',
note='',
moymin='',
moymax='',
moyclasse='',
repar_moins_8='',
repar_8_12='',
repar_plus_12='',
appreciation='".addslashes($appreciation)."',
nb_absences='$nb_absences',
non_justifie='$non_justifie',
nb_retards='$nb_retards'
;";
enregistrer_sql_archivage($sql);
echo "\n";
$res_insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_insert){
$erreur++;
//echo "$sql ";
echo "\n";
}
// Avis du conseil de classe
$sql="SELECT * FROM avis_conseil_classe WHERE login='$login_eleve' AND periode='$num_periode'";
$res_avis=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_avis)==0){
$avis="-";
}
else{
$lig_avis=mysqli_fetch_object($res_avis);
$avis=$lig_avis->avis;
// A quoi sert le champ statut de la table avis_conseil_classe ?
}
// Insertion de l'avis dans archivage_disciplines
$sql="INSERT INTO archivage_disciplines SET
annee='$annee_scolaire',
ine='$ine',
classe='".addslashes($classe)."',
effectif='$eff_classe',
mef_code='$mef_code',
num_periode='$num_periode',
nom_periode='".addslashes($nom_periode)."',
special='AVIS_CONSEIL',
matiere='',
code_matiere='',
prof='".addslashes($suivi_par)."',
nom_prof='',
prenom_prof='',
note='',
moymin='',
moymax='',
moyclasse='',
repar_moins_8='',
repar_8_12='',
repar_plus_12='',
appreciation='".addslashes($avis)."',
nb_absences='',
non_justifie='',
nb_retards=''
;";
echo "\n";
enregistrer_sql_archivage($sql);
$res_insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_insert){
$erreur++;
//echo "$sql ";
echo "\n";
}
// Boucle sur les matières de l'élève
/*
$sql="SELECT mn.*,g.description FROM groupes g,matieres_notes mn
WHERE login='$login_eleve' AND
periode='$num_periode'";
*/
/*
$sql="SELECT mn.*,m.nom_complet FROM j_groupes_matieres jgm,matieres m,matieres_notes mn
WHERE mn.login='$login_eleve' AND
mn.periode='$num_periode' AND
jgm.id_groupe=mn.id_groupe AND
jgm.id_matiere=m.matiere;";
*/
$sql="SELECT jeg.id_groupe, m.nom_complet, m.code_matiere FROM j_groupes_matieres jgm,matieres m,j_eleves_groupes jeg
WHERE jeg.login='$login_eleve' AND
jeg.periode='$num_periode' AND
jgm.id_groupe=jeg.id_groupe AND
jgm.id_matiere=m.matiere;";
//echo "$sql ";
echo "\n";
$res_grp=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_grp)==0){
// Que faire? Est-il possible qu'il y ait quelque chose dans matieres_appreciations dans ce cas?
// Ca ne devrait pas...
// Si... on peut avoir un professeur qui n'a pas saisi de note ni même un tiret (malheureusement), mais mis une appréciation
//echo "\n";
echo "\n";
}
else{
while($lig_grp=mysqli_fetch_object($res_grp)){
$id_groupe=$lig_grp->id_groupe;
$matiere=$lig_grp->nom_complet;
$code_matiere=$lig_grp->code_matiere;
$mat_grp[$id_groupe]=$matiere;
$code_mat_grp[$id_groupe]=$code_matiere;
$sql="SELECT mn.* FROM matieres_notes mn
WHERE mn.login='$login_eleve' AND
mn.periode='$num_periode' AND
mn.id_groupe='$id_groupe';";
$res_note=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_note)==0) {
$note='';
$rang=-1;
}
else {
$lig_note=mysqli_fetch_object($res_note);
if($lig_note->statut!=''){
$note=$lig_note->statut;
}
else{
$note=$lig_note->note;
$moy_eleve_groupe_annee[$id_groupe][$ine][]=$note;
}
$rang=$lig_note->rang;
}
// Récupération de l'appréciation
$sql="SELECT appreciation FROM matieres_appreciations
WHERE login='$login_eleve' AND
periode='$num_periode' AND
id_groupe='$id_groupe'";
echo "\n";
$res_app=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_app)==0){
$appreciation="-";
}
else{
$lig_app=mysqli_fetch_object($res_app);
$appreciation=$lig_app->appreciation;
}
if(($note!='')||($appreciation!='-')) {
// Récupération des professeurs associés
if(isset($tab_prof_grp[$id_groupe])) {
$prof=$tab_prof_grp[$id_groupe]['prof'];
$nom_prof=$tab_prof_grp[$id_groupe]['nom_prof'];
$prenom_prof=$tab_prof_grp[$id_groupe]['prenom_prof'];
$numind_prof=$tab_prof_grp[$id_groupe]['numind_prof'];
$type_prof=$tab_prof_grp[$id_groupe]['type_prof'];
}
else {
$sql="SELECT u.login, u.nom,u.prenom, u.numind, u.type FROM j_groupes_professeurs jgp, utilisateurs u WHERE jgp.id_groupe='$id_groupe' AND jgp.login=u.login ORDER BY login";
echo "\n";
//echo "$sql ";
$res_prof=mysqli_query($GLOBALS["mysqli"], $sql);
$nom_prof="";
$prenom_prof="";
if(mysqli_num_rows($res_prof)==0){
$prof="";
}
else{
$lig_prof=mysqli_fetch_object($res_prof);
$prof=affiche_utilisateur($lig_prof->login,$id_classe[0]);
$nom_prof=$lig_prof->nom;
$prenom_prof=$lig_prof->prenom;
$numind_prof=$lig_prof->numind;
$type_prof=$lig_prof->type;
while($lig_prof=mysqli_fetch_object($res_prof)){
$prof.=", ".affiche_utilisateur($lig_prof->login,$id_classe[0]);
$nom_prof.="|".$lig_prof->nom;
$prenom_prof.="|".$lig_prof->prenom;
$numind_prof.="|".$lig_prof->numind;
$type_prof.="|".$lig_prof->type;
}
}
$tab_prof_grp[$id_groupe]['prof']=$prof;
$tab_prof_grp[$id_groupe]['nom_prof']=$nom_prof;
$tab_prof_grp[$id_groupe]['prenom_prof']=$prenom_prof;
$tab_prof_grp[$id_groupe]['numind_prof']=$numind_prof;
$tab_prof_grp[$id_groupe]['type_prof']=$type_prof;
}
// Insertion de la note, l'appréciation,... dans la matière,...
if (!isset($moymin[$id_groupe])) $moymin[$id_groupe]="-";
if (!isset($moymax[$id_groupe])) $moymax[$id_groupe]="-";
if (!isset($moyclasse[$id_groupe])) $moyclasse[$id_groupe]="-";
$sql="INSERT INTO archivage_disciplines SET
annee='$annee_scolaire',
ine='$ine',
classe='".addslashes($classe)."',
mef_code='$mef_code',
effectif='".$eff_groupe[$id_groupe]."',
num_periode='$num_periode',
nom_periode='".addslashes($nom_periode)."',
matiere='".addslashes($matiere)."',
code_matiere='".addslashes($code_matiere)."',
id_groupe='$id_groupe',
special='',
id_prof='".$numind_prof."',
type_prof='".$type_prof."',
prof='".addslashes($prof)."',
nom_prof='".addslashes($nom_prof)."',
prenom_prof='".addslashes($prenom_prof)."',
note='$note',
moymin='".$moymin[$id_groupe]."',
moymax='".$moymax[$id_groupe]."',
moyclasse='".$moyclasse[$id_groupe]."',
repar_moins_8='".$repar_moins_8[$id_groupe]."',
repar_8_12='".$repar_8_12[$id_groupe]."',
repar_plus_12='".$repar_plus_12[$id_groupe]."',
rang='".$rang."',
appreciation='".addslashes($appreciation)."',
nb_absences='',
non_justifie='',
nb_retards='',
ordre_matiere='".$ordre_matiere[$id_groupe]."'
;";
echo "\n";
enregistrer_sql_archivage($sql);
$res_insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$res_insert){
$erreur++;
//echo "$sql ";
echo "\n";
}
}
} // Fin de la boucle matières
echo "\n";
if($temoin_ects=="y") {
//--------------------
// Les crédits ECTS
//--------------------
// On a besoin de : annee, ine, classe, num_periode, nom_periode, matiere, prof, valeur_ects, mention_ects
// On a déjà pratiquement tout... ça ne va pas être compliqué !
$Eleve = ElevePeer::retrieveByLOGIN($login_eleve);
$Groupes = $Eleve->getGroupes($num_periode);
foreach($Groupes as $Groupe) {
$Ects = $Eleve->getEctsCredit($num_periode,$Groupe->getId());
if ($Ects != null) {
$Archive = new ArchiveEcts();
$Archive->setAnnee($annee_scolaire);
$Archive->setIne($ine);
$Archive->setClasse($classe);
$Archive->setNumPeriode($num_periode);
$Archive->setNomPeriode($nom_periode);
$Archive->setMatiere($Groupe->getDescription());
$Archive->setSpecial('');
$Archive->setProfs($prof);
$Archive->setValeur($Ects->getValeur());
$Archive->setMention($Ects->getMention());
$Archive->save();
}
}
}
echo "\n";
if($erreur==0){
echo "\n";
}
flush();
}
}
}
foreach($moy_eleve_groupe_annee as $id_groupe => $tab) {
if(count($tab)>0) {
foreach($tab as $ine => $note) {
if(count($note)>0) {
$moyenne_annuelle_eleve[$ine]=array_sum($note)/count($note);
}
}
if(count($moyenne_annuelle_eleve)>0) {
$moyenne_annuelle_grp=array_sum($moyenne_annuelle_eleve)/count($moyenne_annuelle_eleve);
$moymin_annuelle_grp=min($moyenne_annuelle_eleve);
$moymax_annuelle_grp=max($moyenne_annuelle_eleve);
/*
echo "$id_groupe \$tab