1256 lines
46 KiB
PHP
Executable File
1256 lines
46 KiB
PHP
Executable File
<?php define('__ROOT__', dirname(dirname(__FILE__)) );
|
|
require_once __ROOT__.'/manager/security.php';
|
|
// require_once __ROOT__.'/manager/groups.php';
|
|
// require_once __ROOT__.'/manager/modules.php';
|
|
// require_once __ROOT__.'/manager/career.php';
|
|
|
|
|
|
/*** GESTION DES PARAMETRES OPTIONNELS ***/
|
|
// on initialise les paramètres optionnels
|
|
$controleOpt = null;
|
|
$groupeOpt = null;
|
|
$etudiantOpt = null;
|
|
$ueOpt = null;
|
|
$semestreOpt = null;
|
|
$formationOpt = null;
|
|
$anneeOpt = null;
|
|
|
|
// on cherche dans toutes les variables _get si on trouve des paramètres
|
|
foreach($_POST as $k=>$v){
|
|
|
|
if( preg_match('/^g:(.+)$/', $k, $m) ) // g:nomGroupe
|
|
$groupeOpt = str_replace('%20', ' ', $m[1]);
|
|
|
|
if( preg_match('/^c:(.+)$/', $k, $m) ) // c:idControle
|
|
$controleOpt = $m[1];
|
|
|
|
if( preg_match('/^e:(.+)$/', $k, $m) ) // e:idEtudiant
|
|
$etudiantOpt = $m[1];
|
|
|
|
if( preg_match('/^u:(.+)$/', $k, $m) ) // u:nomUe
|
|
$ueOpt = $m[1];
|
|
|
|
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
|
|
$semestreOpt = $m[1];
|
|
|
|
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
|
|
$formationOpt = $m[1];
|
|
|
|
if( preg_match('/^a:(.+)$/', $k, $m) ) // a:annee
|
|
$anneeOpt = $m[1];
|
|
|
|
}
|
|
|
|
$controleOpt = ($controleOpt == null || $controleOpt == '*') ? null : $controleOpt;
|
|
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
|
|
$etudiantOpt = ($etudiantOpt == null || $etudiantOpt == '*') ? null : $etudiantOpt;
|
|
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt;
|
|
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
|
|
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
|
|
$anneeOpt = ($anneeOpt == null || $anneeOpt == '*') ? null : $anneeOpt;
|
|
|
|
// servira pour le dossier étudiant
|
|
$semestreOptBis = $semestreOpt;
|
|
|
|
/****************************************
|
|
* *
|
|
* SECTION "PARCOURS" *
|
|
* *
|
|
*****************************************
|
|
*
|
|
* [1] Mes modules (eleves) notes
|
|
* [2] Mes ue (eleves) notes
|
|
* [3] Mes semestres (eleves) notes
|
|
* [4] Graphiques (eleves) notes
|
|
*
|
|
*****************************************/
|
|
?>
|
|
|
|
|
|
|
|
|
|
<!-- mes contrôles -->
|
|
|
|
<?php
|
|
/****************************************/
|
|
/*** MES CONTRÔLES (version étudiant) ***/
|
|
/****************************************/
|
|
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
|
|
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
|
|
$request->level_1 = 'getNotesEtudiant';
|
|
$request->etudiant = $_SESSION['identifiant'];
|
|
// $request->formation = $_SESSION['formation'];
|
|
$request->semestre = $_SESSION['semestre'];
|
|
// $request->annee = $_SESSION['annee'];
|
|
|
|
careerManager::switch_level_1($request, $answer);
|
|
|
|
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo "<section name='marksbyue' data-title='Mes Notes' class='basic'>";
|
|
|
|
echo "<table class='partlist' name='UE'><tbody><tr>";
|
|
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
|
|
else echo "<td data-value='*'>Tous</td>";
|
|
|
|
foreach($answer->UEs as $UE)
|
|
if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné
|
|
echo "<td data-value='".$UE['nom']."' class='active'>".$UE['nom'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$UE['nom']."'>".$UE['nom'].'</td>';
|
|
echo "</tr></tbody></table>";
|
|
|
|
foreach($answer->UEs as $UE){ // pour chaque UE
|
|
|
|
if( $ueOpt == null || $UE['nom'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
|
|
|
|
echo '</thead></table>';
|
|
foreach($UE['modules'] as $module){ // pour chaque module
|
|
echo '<table class=basic><thead class=normal>';
|
|
echo '<tr><th colspan=5><strong>'.$UE['nom'].'</strong> - '.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
|
|
|
|
foreach($module['controles'] as $controle){ // pour chaque contrôle
|
|
echo '<tr>';
|
|
echo "<td><span class='link inactive'>".$controle['libelle']."</span></td>";
|
|
|
|
if( $controle['publication'] == '0' || count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
|
|
echo '<td><span class=unstressed>Pas encore de note</span></td>';
|
|
else // si une note, alors on l'affiche
|
|
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
|
|
|
|
echo "<td>".$UE['nom']." - ".$UE['libelle']."</td>";
|
|
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
|
|
echo '</tr>';
|
|
}
|
|
echo '</tbody>';
|
|
}
|
|
echo '</table>';
|
|
|
|
}
|
|
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo '</section>';
|
|
}else
|
|
echo "<section name='marksbyue' data-title='Mes Notes' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******************************************/
|
|
/*** LES CONTRÔLES (version enseignant) ***/
|
|
/******************************************/
|
|
/*
|
|
*
|
|
* [1] Tous les contrôles
|
|
* [2] Un contrôle particulier( avec ou sans groupe particulier )
|
|
*
|
|
*/
|
|
|
|
|
|
/* [1] Tous les contrôles
|
|
==================================================================*/
|
|
if( permission('teacher') && $controleOpt == null ){ // si c'est un enseignant et qu'aucun contrôle n'est spécifié
|
|
|
|
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
|
|
|
|
$request->level_1 = 'getControlesEnseignant';
|
|
$request->enseignant = $_SESSION['identifiant'];
|
|
$request->annee = $_SESSION['annee'];
|
|
|
|
careerManager::switch_level_1($request, $answer);
|
|
|
|
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo "<section name='controlesenseignants' data-controles data-title='Mes contrôles' class='basic'>";
|
|
|
|
|
|
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
|
|
$ListeUIDFormations = array();
|
|
$ListeUIDSemestres = array();
|
|
$ListeUIDUE = array();
|
|
|
|
// Vérification de la formation si elle est définie
|
|
$verificationUIDFormations = array();
|
|
foreach($answer->semestres as $semestre) // on récupère la liste des UID de FORMATIONS
|
|
if( !in_array($semestre['id_formation'], $verificationUIDFormations) )
|
|
array_push($verificationUIDFormations, $semestre['id_formation']);
|
|
|
|
// si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
|
|
if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
|
|
if( count($verificationUIDFormations) == 0 ) // si aucune formation trouvée
|
|
$formationOpt = 0;
|
|
else
|
|
$formationOpt = $verificationUIDFormations[0];
|
|
|
|
|
|
/**************************/
|
|
/* AFFINAGE PAR FORMATION */
|
|
/**************************/
|
|
echo "<table class='partlist' name='formation'><tbody><tr>";
|
|
foreach($answer->semestres as $semestre){ if( !in_array($semestre['id_formation'], $ListeUIDFormations) ){
|
|
|
|
|
|
if( $semestre['id_formation'] == $formationOpt ) // si c'est la formation séléctionnée
|
|
echo "<td data-value='".$semestre['id_formation']."' class='active'>".$semestre['formation'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$semestre['id_formation']."'>".$semestre['formation'].'</td>';
|
|
|
|
// on ajoute la formation à la liste pour ne pas la répéter
|
|
array_push($ListeUIDFormations, $semestre['id_formation']);
|
|
|
|
}}
|
|
echo "</tr></tbody></table>";
|
|
|
|
|
|
|
|
|
|
/*************************/
|
|
/* AFFINAGE PAR SEMESTRE */
|
|
/*************************/
|
|
echo "<table class='partlist' name='semestre'><tbody><tr>";
|
|
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
|
|
else echo "<td data-value='*'>Tous</td>";
|
|
|
|
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
|
|
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && !in_array($semestre['id'], $ListeUIDSemestres) ){
|
|
|
|
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
|
|
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
|
|
|
|
|
|
// on ajoute le semestre à la liste pour ne pas le répéter
|
|
array_push($ListeUIDSemestres, $semestre['id']);
|
|
|
|
}}
|
|
echo "</tr></tbody></table>";
|
|
|
|
|
|
|
|
|
|
/*******************/
|
|
/* AFFINAGE PAR UE */
|
|
/*******************/
|
|
echo "<table class='partlist' name='UE'><tbody><tr>";
|
|
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
|
|
else echo "<td data-value='*'>Tous</td>";
|
|
|
|
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
|
|
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
|
|
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
|
|
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
|
|
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
|
|
|
|
// on ajoute l'UE à la liste pour ne pas le répéter
|
|
array_push($ListeUIDUE, $UE['id']);
|
|
}}
|
|
}}
|
|
echo "</tr></tbody></table>";
|
|
|
|
|
|
|
|
if( count($answer->semestres) > 0 ){ // si au moins un UE
|
|
|
|
foreach($answer->semestres as $semestre){
|
|
|
|
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
|
|
|
|
foreach($semestre['UElist'] as $UE){ // pour chaque UE
|
|
|
|
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
|
|
|
|
if( count($UE['modules']) > 0 ){ // s'il y a au moins un module
|
|
|
|
foreach($UE['modules'] as $module){ // pour chaque module
|
|
echo "<table class='basic col5'><thead>";
|
|
echo '<tr><th colspan=4><strong>'.$semestre['nom_formation'].' - '.$semestre['nom']." - <span class='unstressed'>".$UE['nom']." - ".$module['nom']." - ".$module['libelle']."</span></th></tr></thead><tbody>";
|
|
|
|
if( count($module['controles']) > 0 ){ // s'il y a au moins un contrôle pour ce module
|
|
|
|
foreach($module['controles'] as $controle){ // pour chaque contrôle
|
|
|
|
echo '<tr>';
|
|
echo "<td><span class='link ctrl' data-ctrl='".$controle['id']."'>".$controle['libelle']."</span></td>";
|
|
|
|
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
|
echo "<td>".$UE['nom']." - ".$UE['libelle']."</td>";
|
|
|
|
if( $controle['moyenne'] == null ) // si il y a au moins une note pour ce contrôle
|
|
echo '<td><span class=unstressed>Pas noté</span></td>';
|
|
else
|
|
echo '<td><span class=unstressed>Moyenne de</span> '.number_format($controle['moyenne'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
|
|
// echo '<td>'.number_format($controle['moyenne'], 2).'</td>';
|
|
|
|
echo '<td><span class=unstressed>Coefficient</span> '.number_format($controle['coefficient'], 2).'</td>';
|
|
echo '</tr>';
|
|
|
|
// echo "<tr class='noborder transparentbg'><td></td><td colspan=3><table class='basic col4'><tbody>";
|
|
// echo '</tbody></table></td></tr>';
|
|
}
|
|
|
|
}else // si aucun contrôle pour ce module
|
|
echo "<tr><td colspan=5>Aucun contrôle trouvé</td></tr>";
|
|
|
|
echo '</tbody>';
|
|
}
|
|
|
|
}
|
|
echo '</table>';
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo '</section>';
|
|
}/*else
|
|
echo "<section name='controlesenseignants' data-controles data-title='Mes contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
|
*/
|
|
|
|
|
|
}
|
|
|
|
/* [2] Un contrôle particulier( avec ou sans groupe particulier )
|
|
==================================================================*/
|
|
elseif( permission('teacher') ){ // si enseignant et qu'un contrôle est spécifié
|
|
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
|
|
$request->level_1 = 'getNotesEnseignant';
|
|
$request->enseignant = $_SESSION['identifiant'];
|
|
$request->controle = $controleOpt;
|
|
if( $groupeOpt != null ) $request->groupe = $groupeOpt; // on définit le groupe s'il est spécifié
|
|
|
|
careerManager::switch_level_1($request, $answer);
|
|
|
|
if( $answer->request == 'success' ){
|
|
echo "<section name='controlesenseignants' data-controles data-title='Mes contrôles' class='basic'>";
|
|
|
|
|
|
// bouton retour
|
|
// echo "<table class='basic'><thead><tr><th><span class='link'>Retour</span></th></tr></thead></table>";
|
|
// echo "<table class='basic'><thead><tr><th></th></tr></thead></table>";
|
|
|
|
|
|
echo "<table class='basic col4'><thead>";
|
|
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$answer->controle['nom'].' - '.$answer->controle['libelle'].'</th>';
|
|
|
|
echo '<tr class="noborder transparentbg">';
|
|
echo "<td><div class='confirm active' style='background-color:#fff;' id='import_notes' data-ctrl='".$answer->controle['id']."'>Importer les notes";
|
|
echo "<input type='file'></div></td>";
|
|
|
|
echo "<th>".$answer->controle['module']." - ".$answer->controle['modulelib']."</th>";
|
|
|
|
|
|
/* [1] Affichage par groupes
|
|
====================================================================================*/
|
|
if( $groupeOpt == null ){
|
|
|
|
if( $answer->controle['moyenne'] == null ) // si il y a au moins une note pour ce contrôle
|
|
echo '<th><span class=unstressed>Pas noté</span></th>';
|
|
else
|
|
echo '<th><span class=unstressed>Moyenne de</span> '.number_format($answer->controle['moyenne'], 2).' <span class=unstressed>/</span> '.$answer->controle['base'].'</th>';
|
|
|
|
/* [2] Affichage par élèves
|
|
====================================================================================*/
|
|
}else{
|
|
|
|
if( !isset($answer->controle['userlist']) || !is_array($answer->controle['userlist']) || count($answer->controle['userlist']) == 0 ) // si il y a au moins une note pour ce contrôle
|
|
echo '<th><span class=unstressed>Pas noté</span></th>';
|
|
else
|
|
echo '<th><span class=unstressed>Moyenne de</span> '.number_format($answer->controle['moyenneGroupe'], 2).' <span class=unstressed>/</span> '.$answer->controle['base'].'</th>';
|
|
|
|
}
|
|
|
|
|
|
echo '<th><span class=unstressed>Coefficient</span> '.number_format($answer->controle['coefficient'], 2).'</th>';
|
|
|
|
echo '</tr></thead>';
|
|
|
|
echo "<tbody>";
|
|
|
|
|
|
/* [1] Affichage par groupes
|
|
====================================================================================*/
|
|
if( $groupeOpt == null ){
|
|
|
|
foreach($answer->controle['grouplist'] as $groupe){ // on affiche la liste des groupes avec leurs stats
|
|
echo "<tr>";
|
|
|
|
echo "<td><span class='link grp ctrl' data-grp='".$groupe['id_groupe']."' data-ctrl='".$answer->controle['id']."'>".$groupe['nom']."</span></td>";
|
|
|
|
if( isset($groupe['nb_notes']) ){ // si ce groupe a des notes
|
|
|
|
if( $groupe['nb_notes'] == 1 ) echo "<td>".$groupe['nb_notes']." <span class=unstressed>note</span></td>";
|
|
else echo "<td>".$groupe['nb_notes']." <span class=unstressed>notes</span></td>";
|
|
|
|
echo "<td><span class=unstressed>Allant de</span> ".number_format($groupe['min'], 2)." <span class=unstressed>à</span> ".number_format($groupe['max'], 2)."</td>";
|
|
echo "<td><span class=unstressed>Moyenne de </span>".number_format($groupe['moyenne'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
|
|
|
|
}else{ // si le groupe n'a aucune note
|
|
|
|
echo "<td><span class=unstressed>Pas de note</span></td>";
|
|
echo "<td></td>";
|
|
echo "<td></td>";
|
|
|
|
}
|
|
|
|
echo "</tr>";
|
|
}
|
|
|
|
/* [2] Affichage par élèves
|
|
====================================================================================*/
|
|
}elseif( isset($answer->controle['userlist']) && is_array($answer->controle['userlist']) && count($answer->controle['userlist']) > 0 ){
|
|
// var_dump($answer->controle['userlist']);
|
|
foreach($answer->controle['userlist'] as $user){ // on affiche la liste des élèves avec leurs notes
|
|
echo "<tr>";
|
|
|
|
echo "<td><span class='link etu inactive' data-etu='".$user['identifiant']."' data-ctrl='".$answer->controle['id']."' data-info='".$user['prenom'].' - '.$user['nom']."'>".$user['identifiant']."</span></td>";
|
|
echo "<td><span class='link grp' data-grp='".$user['id_groupe']."'>".$user['groupe']."</span></td>";
|
|
|
|
if( $user['note'] != null ) // si on a une note
|
|
echo "<td>".number_format($user['note'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
|
|
else // si noté
|
|
echo "<td><span class=unstressed>Pas noté</span></td>";
|
|
|
|
echo "<td>";
|
|
if( $user['note'] != null ) // s'il a déjà une note, on la met par défaut
|
|
echo "<input class='saisie_note' data-ctrl='".$answer->controle['id']."' type='text' min='0' max='".$answer->controle['base']."' placeholder='Note' value='".$user['note']."'>";
|
|
else // sinon on laisse le champ vide
|
|
echo "<input class='saisie_note' data-ctrl='".$answer->controle['id']."' type='text' min='0' max='".$answer->controle['base']."' placeholder='Note'>";
|
|
|
|
echo "<div class='confirm'>enregistrer</div>";
|
|
echo "</td>";
|
|
|
|
echo "</tr>";
|
|
}
|
|
|
|
echo "<tr>";
|
|
echo "<td></td>";
|
|
echo "<td></td>";
|
|
echo "<td></td>";
|
|
echo "<td><div class='confirm all'>tout enregistrer</div></td>";
|
|
echo "</tr>";
|
|
|
|
}
|
|
|
|
echo '</tbody></table>';
|
|
|
|
echo "</section>";
|
|
|
|
}else
|
|
echo "<section name='controlesenseignants' data-controles data-title='Mes contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/********************************************/
|
|
/*** LES CONTRÔLES (version admin/master) ***/
|
|
/********************************************/
|
|
/*
|
|
*
|
|
* [1] Tous les contrôles
|
|
* [2] Un contrôle particulier( avec ou sans groupe particulier )
|
|
*
|
|
*/
|
|
|
|
|
|
/* [1] Tous les contrôles
|
|
==================================================================*/
|
|
if( (permission('master') || permission('admin')) && $controleOpt == null ){ // si c'est un enseignant et qu'aucun contrôle n'est spécifié
|
|
|
|
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
|
|
$request->level_1 = 'getControlesForYear';
|
|
$request->annee = $_SESSION['annee'];
|
|
|
|
careerManager::switch_level_1($request, $answer);
|
|
|
|
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo "<section name='allcontroles' data-controles data-title='Tous les contrôles' class='basic'>";
|
|
|
|
|
|
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
|
|
$ListeUIDFormations = array();
|
|
$ListeUIDSemestres = array();
|
|
$ListeUIDUE = array();
|
|
|
|
// Vérification de la formation si elle est définie
|
|
$verificationUIDFormations = array();
|
|
foreach($answer->semestres as $semestre) // on récupère la liste des UID de FORMATIONS
|
|
if( !in_array($semestre['id_formation'], $verificationUIDFormations) )
|
|
array_push($verificationUIDFormations, $semestre['id_formation']);
|
|
|
|
// si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
|
|
if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
|
|
if( count($verificationUIDFormations) == 0 ) // si aucune formation trouvée
|
|
$formationOpt = 0;
|
|
else
|
|
$formationOpt = $verificationUIDFormations[0];
|
|
|
|
|
|
/**************************/
|
|
/* AFFINAGE PAR FORMATION */
|
|
/**************************/
|
|
echo "<table class='partlist' name='formation'><tbody><tr>";
|
|
foreach($answer->semestres as $semestre){ if( !in_array($semestre['id_formation'], $ListeUIDFormations) ){
|
|
|
|
|
|
if( $semestre['id_formation'] == $formationOpt ) // si c'est la formation séléctionnée
|
|
echo "<td data-value='".$semestre['id_formation']."' class='active'>".$semestre['formation'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$semestre['id_formation']."'>".$semestre['formation'].'</td>';
|
|
|
|
// on ajoute la formation à la liste pour ne pas la répéter
|
|
array_push($ListeUIDFormations, $semestre['id_formation']);
|
|
|
|
}}
|
|
echo "</tr></tbody></table>";
|
|
|
|
|
|
|
|
|
|
/*************************/
|
|
/* AFFINAGE PAR SEMESTRE */
|
|
/*************************/
|
|
echo "<table class='partlist' name='semestre'><tbody><tr>";
|
|
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
|
|
else echo "<td data-value='*'>Tous</td>";
|
|
|
|
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
|
|
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && !in_array($semestre['id'], $ListeUIDSemestres) ){
|
|
|
|
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
|
|
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
|
|
|
|
|
|
// on ajoute le semestre à la liste pour ne pas le répéter
|
|
array_push($ListeUIDSemestres, $semestre['id']);
|
|
|
|
}}
|
|
echo "</tr></tbody></table>";
|
|
|
|
|
|
|
|
|
|
/*******************/
|
|
/* AFFINAGE PAR UE */
|
|
/*******************/
|
|
echo "<table class='partlist' name='UE'><tbody><tr>";
|
|
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
|
|
else echo "<td data-value='*'>Tous</td>";
|
|
|
|
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
|
|
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
|
|
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
|
|
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
|
|
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
|
|
else // sinon on affiche normalement
|
|
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
|
|
|
|
// on ajoute l'UE à la liste pour ne pas le répéter
|
|
array_push($ListeUIDUE, $UE['id']);
|
|
}}
|
|
}}
|
|
echo "</tr></tbody></table>";
|
|
|
|
|
|
|
|
if( count($answer->semestres) > 0 ){ // si au moins un UE
|
|
|
|
foreach($answer->semestres as $semestre){
|
|
|
|
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
|
|
|
|
foreach($semestre['UElist'] as $UE){ // pour chaque UE
|
|
|
|
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
|
|
|
|
if( count($UE['modules']) > 0 ){ // s'il y a au moins un module
|
|
|
|
foreach($UE['modules'] as $module){ // pour chaque module
|
|
echo "<table class='basic col5'><thead>";
|
|
echo '<tr><th colspan=4><strong>'.$semestre['nom_formation'].' - '.$semestre['nom']." - <span class='unstressed'>".$UE['nom']." - ".$module['nom']." - ".$module['libelle']."</span></th></tr></thead><tbody>";
|
|
|
|
if( count($module['controles']) > 0 ){ // s'il y a au moins un contrôle pour ce module
|
|
|
|
foreach($module['controles'] as $controle){ // pour chaque contrôle
|
|
|
|
echo '<tr>';
|
|
echo "<td><span class='link ctrl' data-ctrl='".$controle['id']."'>".$controle['libelle']."</span></td>";
|
|
|
|
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
|
echo "<td>".$UE['nom']." - ".$UE['libelle']."</td>";
|
|
|
|
if( $controle['moyenne'] == null ) // si il y a au moins une note pour ce contrôle
|
|
echo '<td><span class=unstressed>Pas noté</span></td>';
|
|
else
|
|
echo '<td><span class=unstressed>Moyenne de</span> '.number_format($controle['moyenne'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
|
|
// echo '<td>'.number_format($controle['moyenne'], 2).'</td>';
|
|
|
|
echo '<td><span class=unstressed>Coefficient</span> '.number_format($controle['coefficient'], 2).'</td>';
|
|
|
|
/**/ // seul l'admin peut publier/cacher les notes
|
|
if( permission('admin') ){
|
|
if( $controle['publication'] == '0' )
|
|
echo "<td><div class='confirm pamp center active' data-ctrl='".$controle['id']."' data-publication='1'>caché</div></td>";
|
|
else
|
|
echo "<td><div class='confirm center active' data-ctrl='".$controle['id']."' data-publication='0'>visible</div></td>";
|
|
}
|
|
|
|
echo '</tr>';
|
|
|
|
// echo "<tr class='noborder transparentbg'><td></td><td colspan=3><table class='basic col4'><tbody>";
|
|
// echo '</tbody></table></td></tr>';
|
|
}
|
|
|
|
}else // si aucun contrôle pour ce module
|
|
echo "<tr><td colspan=5>Aucun contrôle trouvé</td></tr>";
|
|
|
|
echo '</tbody>';
|
|
}
|
|
|
|
}
|
|
echo '</table>';
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo '</section>';
|
|
}else
|
|
echo "<section name='allcontroles' data-controles data-title='Tous les contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
|
|
|
}
|
|
|
|
/* [2] Un contrôle particulier( avec ou sans groupe particulier )
|
|
==================================================================*/
|
|
elseif( permission('master') || permission('admin') ){ // si enseignant et qu'un contrôle est spécifié
|
|
|
|
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
$request->level_1 = 'getNotesForYear';
|
|
$request->controle = $controleOpt;
|
|
if( $groupeOpt != null ) $request->groupe = $groupeOpt; // on définit le groupe s'il est spécifié
|
|
|
|
careerManager::switch_level_1($request, $answer);
|
|
|
|
if( $answer->request == 'success' ){
|
|
echo "<section name='allcontroles' data-controles data-title='Tous les contrôles' class='basic'>";
|
|
|
|
|
|
// bouton retour
|
|
// echo "<table class='basic'><thead><tr><th><span class='link'>Retour</span></th></tr></thead></table>";
|
|
// echo "<table class='basic'><thead><tr><th></th></tr></thead></table>";
|
|
|
|
|
|
echo "<table class='basic col4'><thead>";
|
|
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$answer->controle['nom'].' - '.$answer->controle['libelle'].'</th>';
|
|
|
|
echo '<tr class="noborder transparentbg">';
|
|
|
|
/**/ if( permission('admin') ){
|
|
echo "<td><div class='confirm active' style='background-color:#fff;' id='import_notes' data-ctrl='".$answer->controle['id']."'>Importer les notes";
|
|
echo "<input type='file'></div></td>";
|
|
}else{ // remplacement du "Importer notes"
|
|
echo "<td></td>";
|
|
}
|
|
|
|
echo "<th>".$answer->controle['module']." - ".$answer->controle['modulelib']."</th>";
|
|
|
|
|
|
/* [1] Affichage par groupes
|
|
====================================================================================*/
|
|
if( $groupeOpt == null ){
|
|
|
|
if( $answer->controle['moyenne'] == null ) // si il y a au moins une note pour ce contrôle
|
|
echo '<th><span class=unstressed>Pas noté</span></th>';
|
|
else
|
|
echo '<th><span class=unstressed>Moyenne de</span> '.number_format($answer->controle['moyenne'], 2).' <span class=unstressed>/</span> '.$answer->controle['base'].'</th>';
|
|
|
|
/* [2] Affichage par élèves
|
|
====================================================================================*/
|
|
}else{
|
|
if( count($answer->controle['userlist']) == 0 ) // si il y a au moins une note pour ce contrôle
|
|
echo '<th><span class=unstressed>Pas noté</span></th>';
|
|
else
|
|
echo '<th><span class=unstressed>Moyenne de</span> '.number_format($answer->controle['moyenneGroupe'], 2).' <span class=unstressed>/</span> '.$answer->controle['base'].'</th>';
|
|
}
|
|
|
|
|
|
echo '<th><span class=unstressed>Coefficient</span> '.number_format($answer->controle['coefficient'], 2).'</th>';
|
|
|
|
echo '</tr></thead>';
|
|
|
|
echo "<tbody>";
|
|
|
|
|
|
/* [1] Affichage par groupes
|
|
====================================================================================*/
|
|
if( $groupeOpt == null ){
|
|
|
|
foreach($answer->controle['grouplist'] as $groupe){ // on affiche la liste des groupes avec leurs stats
|
|
echo "<tr>";
|
|
|
|
echo "<td><span class='link grp ctrl' data-grp='".$groupe['id_groupe']."' data-ctrl='".$answer->controle['id']."'>".$groupe['nom']."</span></td>";
|
|
|
|
if( isset($groupe['nb_notes']) ){ // si ce groupe a des notes
|
|
|
|
if( $groupe['nb_notes'] == 1 ) echo "<td>".$groupe['nb_notes']." <span class=unstressed>note</span></td>";
|
|
else echo "<td>".$groupe['nb_notes']." <span class=unstressed>notes</span></td>";
|
|
|
|
echo "<td><span class=unstressed>Allant de</span> ".number_format($groupe['min'], 2)." <span class=unstressed>à</span> ".number_format($groupe['max'], 2)."</td>";
|
|
echo "<td><span class=unstressed>Moyenne de </span>".number_format($groupe['moyenne'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
|
|
|
|
}else{ // si le groupe n'a aucune note
|
|
|
|
echo "<td><span class=unstressed>Pas de note</span></td>";
|
|
echo "<td></td>";
|
|
echo "<td></td>";
|
|
|
|
}
|
|
|
|
echo "</tr>";
|
|
}
|
|
|
|
/* [2] Affichage par élèves
|
|
====================================================================================*/
|
|
}else{
|
|
|
|
foreach($answer->controle['userlist'] as $user){ // on affiche la liste des élèves avec leurs notes
|
|
echo "<tr>";
|
|
|
|
echo "<td><span class='link etu' data-etu='".$user['identifiant']."' data-ctrl='".$answer->controle['id']."' data-info='".$user['prenom'].' '.$user['nom']."'>".$user['identifiant']."</span></td>";
|
|
echo "<td><span class='link grp' data-grp='".$user['id_groupe']."'>".$user['groupe']."</span></td>";
|
|
|
|
if( $user['note'] != null ) // si on a une note
|
|
echo "<td>".number_format($user['note'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
|
|
else // si noté
|
|
echo "<td><span class=unstressed>Pas noté</span></td>";
|
|
|
|
if( permission('admin') ){
|
|
echo "<td>";
|
|
if( $user['note'] != null ) // s'il a déjà une note, on la met par défaut
|
|
echo "<input class='saisie_note' data-ctrl='".$answer->controle['id']."' type='text' step='.25' min='0' max='".$answer->controle['base']."' placeholder='Note' value='".$user['note']."'>";
|
|
else // sinon on laisse le champ vide
|
|
echo "<input class='saisie_note' data-ctrl='".$answer->controle['id']."' type='text' step='.25' min='0' max='".$answer->controle['base']."' placeholder='Note'>";
|
|
|
|
echo "<div class='confirm'>enregistrer</div>";
|
|
echo "</td>";
|
|
}else // si 'master'
|
|
echo "<td></td>";
|
|
|
|
echo "</tr>";
|
|
}
|
|
|
|
echo "<tr>";
|
|
echo "<td></td>";
|
|
echo "<td></td>";
|
|
echo "<td></td>";
|
|
echo "<td><div class='confirm all'>tout enregistrer</div></td>";
|
|
echo "</tr>";
|
|
|
|
}
|
|
|
|
echo '</tbody></table>';
|
|
|
|
echo "</section>";
|
|
|
|
}else
|
|
echo "<section name='allcontroles' data-controles data-title='Tous les contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/****************************************************************/
|
|
/*** IMPORT/EXPORT APPRÉCIATIONS JURY ***/
|
|
/*
|
|
*
|
|
* [1] Export modèle pour semestre
|
|
* [2] Import pour semestre
|
|
*
|
|
*/
|
|
|
|
if( permission('master') || permission('admin') ){
|
|
|
|
echo "<section name='importjury' data-title='Jury' class='basic'>";
|
|
|
|
/* [1] Exportation
|
|
==========================================*/
|
|
|
|
// si annéeOpt n'est pas définie, on le fait
|
|
if( $anneeOpt == null ) $anneeOpt = $_SESSION['annee'];
|
|
|
|
/* ON RÉCUPÈRE LA LISTE DES SEMESTRES EN FONCTION DE L'ANNEE */
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
$request->level_1 = 'getSemestres';
|
|
groupsManager::switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
|
|
|
|
if( $answer->request == 'success' ){ // si pas d'erreur
|
|
echo "<div class='p center'>";
|
|
|
|
$anneesListe = array();
|
|
|
|
/**********************/
|
|
/* AFFINAGE PAR ANNEE */
|
|
/**********************/
|
|
echo "Exportation des feuilles jury d'un semestre<br>";
|
|
echo "<span style='font-size:.8em;'>(Format compatible Microsoft Office, Open Office et Libre Office)</span><br>";
|
|
|
|
/* AFFINAGE POUR LES 5 ANNEES SUIVANTES */
|
|
echo "<select name='annee'>";
|
|
foreach($answer->yearList as $annee){ if( !in_array($annee['annee'], $anneesListe) ){ // pour éviter les doublons
|
|
if( $anneeOpt == $annee['annee'] ) // on préselectionne l'année selectionnée
|
|
echo "<option value='".$annee['annee']."' selected>".anneeScolaire($annee['annee'])."</option>";
|
|
else
|
|
echo "<option value='".$annee['annee']."'>".anneeScolaire($annee['annee'])."</option>";
|
|
|
|
array_push($anneesListe, $annee['annee']);
|
|
}}
|
|
echo "</select><br><br>";
|
|
|
|
|
|
|
|
/*************************/
|
|
/* AFFINAGE PAR SEMESTRE */
|
|
/*************************/
|
|
$semestresListe = array();
|
|
foreach($answer->yearList as $annee){ if( $annee['annee'] == $anneeOpt ){ // on récupère la liste des ids
|
|
foreach($annee['semestres'] as $semestre){ if( !in_array($semestre['id'], $semestresListe) ){
|
|
array_push($semestresListe, $semestre['id']);
|
|
}}
|
|
}}
|
|
|
|
// si semestreOpt n'est pas cohérent (pas pour cette année), on lui donne une valeur cohérente
|
|
if( !in_array($semestreOpt, $semestresListe) ) $semestreOpt = null;
|
|
if( $semestreOpt == null && count($semestresListe) > 0 ) $semestreOpt = $semestresListe[0];
|
|
|
|
|
|
$count = 0;
|
|
echo "<div class='partlist' name='semestre'>";
|
|
/* On récupère la liste des SEMESTRES en accord avec l'ANNEE sélectionnée */
|
|
foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){
|
|
foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){
|
|
$count++;
|
|
|
|
|
|
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
|
|
echo "<span data-year='".$annee['annee']."' data-frm='".$semestre['id_formation']."' data-stre='".$semestre['id']."' class='active'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
|
|
else // sinon on affiche normalement
|
|
echo "<span data-year='".$annee['annee']."' data-frm='".$semestre['id_formation']."' data-stre='".$semestre['id']."'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
|
|
|
|
}}
|
|
}}
|
|
echo "</div><br><br>";
|
|
|
|
|
|
if( $count == 0 ) // si on a trouvé aucun semestre
|
|
echo "<span class='unstressed'>Aucun semestre pour cette année</span><br><br>";
|
|
else{
|
|
|
|
// si on a selectionné un semestre
|
|
if( $semestreOpt != null )
|
|
foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){ foreach($annee['semestres'] as $semestre){ if( $semestreOpt == $semestre['id'] ){
|
|
echo "<span class='unstressed'>".$semestre['nb_etudiants']." étudiants</span><br><br>";
|
|
}}}}
|
|
else{ // si on a selectionné "Tous"
|
|
$nbTotal = 0;
|
|
foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){ foreach($annee['semestres'] as $semestre){
|
|
$nbTotal += $semestre['nb_etudiants'];
|
|
}}}
|
|
echo "<span class='unstressed'>".$nbTotal." étudiants</span><br><br>";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
echo "<div data-year='".$anneeOpt."' data-stre='".$semestreOpt."' class='confirm active center' id='export_jury'>Télécharger le fichier</div>";
|
|
|
|
|
|
echo "</div>";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// l'admin peut importer un MCC
|
|
if( permission('admin') ){
|
|
/* [2] Importation
|
|
==========================================*/
|
|
|
|
$currentYear = $_SESSION['annee'];
|
|
// si annéeOpt n'est pas définie, on le fait
|
|
if( $anneeOpt == null || $anneeOpt < $currentYear || $anneeOpt > $currentYear+5 ) $anneeOpt = $currentYear;
|
|
$anneeOpt = intval($anneeOpt); // on met l'année en (int)
|
|
|
|
echo "<div class='p center'>";
|
|
echo "Importation des mentions jury d'un semestre<br>";
|
|
echo "<span style='font-size:.8em;'>(Fichier .xlsx suivant le modèle : <a href='http://".$_SERVER['HTTP_HOST']."/src/files/modele_import_jury.xlsx'>modèle de fichier</a>)</span><br>";
|
|
|
|
|
|
/**********************/
|
|
/* AFFINAGE PAR ANNEE */
|
|
/**********************/
|
|
|
|
/* AFFINAGE POUR LES 5 ANNEES SUIVANTES */
|
|
echo "<select name='annee'>";
|
|
for($i = 0 ; $i < 5 ; $i++){
|
|
if( $anneeOpt == $currentYear+$i ) // on préselectionne l'année selectionnée
|
|
echo "<option value='".($currentYear+$i)."' selected>".anneeScolaire($currentYear+$i)."</option>";
|
|
else
|
|
echo "<option value='".($currentYear+$i)."'>".anneeScolaire($currentYear+$i)."</option>";
|
|
}
|
|
echo "</select><br>";
|
|
|
|
|
|
/*************************/
|
|
/* AFFINAGE PAR SEMESTRE */
|
|
/*************************/
|
|
/* On récupère la liste des SEMESTRES en accord avec l'ANNEE sélectionnée */
|
|
$semestresListe = array();
|
|
foreach($answer->yearList as $annee){ if( $annee['annee'] == $anneeOpt ){ // on récupère la liste des ids
|
|
foreach($annee['semestres'] as $semestre){ if( !in_array($semestre['id'], $semestresListe) ){
|
|
array_push($semestresListe, $semestre['id']);
|
|
}}
|
|
}}
|
|
|
|
// si semestreOpt n'est pas cohérent (pas pour cette année)
|
|
if( !in_array($semestreOpt, $semestresListe) ) $semestreOpt = null;
|
|
if( $semestreOpt == null && count($semestresListe) > 0 ) $semestreOpt = $semestresListe[0];
|
|
|
|
|
|
$count = 0;
|
|
|
|
foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){
|
|
$count++;
|
|
|
|
echo "<div class='partlist' name='semestre'>";
|
|
foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){
|
|
|
|
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
|
|
echo "<span data-year='".$anneeOpt."' data-stre='".$semestre['id']."' class='active'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
|
|
else // sinon on affiche normalement
|
|
echo "<span data-year='".$anneeOpt."' data-stre='".$semestre['id']."'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
|
|
|
|
}}
|
|
echo "</div><br><br>";
|
|
}}
|
|
|
|
if( $count == 0 )
|
|
echo "<span class='link' id='link_semestre'>Créer un semestre</span><br><br>";
|
|
|
|
|
|
|
|
if( $semestreOpt != null )
|
|
echo "<div id='import_jury' data-stre='".$semestreOpt."' class='confirm active center'>Importer les décisions du jury<input type='file'></div>";
|
|
|
|
echo "</div>";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
echo "</section>";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/****************************************************************/
|
|
/*** LES DOSSIERS ETUDIANTS (version enseignant/admin/master) ***/
|
|
/****************************************************************/
|
|
/*
|
|
*
|
|
* [1] Toutes les notes d'un enseignant
|
|
*
|
|
*/
|
|
// retourne la classe correspondant à une valeur de note
|
|
function noteToClass($valeur, $base){
|
|
$note = 20 * $valeur/$base;
|
|
if( $note < 8 ) return 'low'; // Ne peut pas compenser
|
|
elseif( $note < 10 ) return 'med'; // Peut compenser
|
|
else return 'hig'; // A la moyenne
|
|
}
|
|
|
|
// retourne la classe correspondant à une couleur pour un semestre
|
|
function noteToClassSemestre($valeur, $base, $compensable, $compensation){
|
|
$class = null;
|
|
$val = 20 * $valeur/$base;
|
|
|
|
|
|
if( $compensation ) // on a le semestre, avec aucun UE en dessous de 8 (ORANGE)
|
|
$class = 'med';
|
|
|
|
if( !$compensable ) // non compensable (au moins un UE en dessous de 8), on a pas le semestre (ROUGE)
|
|
$class = 'low';
|
|
|
|
// si rien de spécial, on définit avec les valeurs par défaut
|
|
if( $class == null ){
|
|
if( $val < 10 ) $class = 'low'; // si en-dessous de 10, on a pas le semestre (ROUGE)
|
|
else $class = 'hig'; // si sup/egal à 10, on a le semestre (VERT)
|
|
}
|
|
|
|
return $class;
|
|
}
|
|
|
|
if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
|
|
include __ROOT__.'/src/svg_v2.php';
|
|
|
|
|
|
|
|
$request = new stdClass(); $answer = new stdClass();
|
|
|
|
$request->level_1 = 'studentcase';
|
|
$request->etudiant = $etudiantOpt;
|
|
|
|
careerManager::switch_level_1($request, $answer);
|
|
|
|
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo "<section name='studentcase' data-title='Dossier étudiant' class='basic'>";
|
|
|
|
|
|
|
|
// on récupère $semestreOpt original
|
|
$semestreOpt = $semestreOptBis;
|
|
|
|
// selection du semestre par défaut
|
|
if( $semestreOpt == null ) $semestreOpt = $answer->parcours[0]['id'];
|
|
|
|
$parcoursChart = array();
|
|
/* ON CREE LE JEU DE DONNEES POUR LA GENERATION DU <SVG> */
|
|
foreach($answer->parcours as $semestre){
|
|
$index = count($parcoursChart);
|
|
|
|
$parcoursChart[$index] = array(
|
|
'id' => $semestre['id'],
|
|
'nom' => $semestre['code'].' '.$semestre['semestre'],
|
|
'mention' => $semestre['mention'],
|
|
'moyenne' => $semestre['moyenne'],
|
|
'compensable' => $semestre['compensable'],
|
|
'compensation' => $semestre['compensation']
|
|
);
|
|
|
|
// on spécifie les moyennes des UEs
|
|
$parcoursChart[$index]['UEs'] = array();
|
|
foreach($semestre['UEs'] as $UE){
|
|
array_push( $parcoursChart[$index]['UEs'],
|
|
array( 'id' => $UE['id'], 'moyenne' => $UE['moyenne'], 'capitalisation' => !in_array($UE['id'], $semestre['inactive']) )
|
|
);
|
|
}
|
|
}
|
|
/* ON GENERE LE <SVG> DU PARCOURS */
|
|
displayParcours( $parcoursChart, $semestreOpt);
|
|
|
|
// echo "<br><div data-etu='".$etudiantOpt."' class='confirm active center' style='background-color:#fff'>Importer le dossier<input type='file' id='import_dossier'></div>";
|
|
|
|
|
|
// pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné)
|
|
foreach($answer->parcours as $semestre){ if( $semestreOpt == null || $semestreOpt == $semestre['id'] ){
|
|
|
|
foreach($semestre['UEs'] as $UE){ // pour chaque UE
|
|
echo "<table class='basic col4'>";
|
|
|
|
echo "<thead id='".$UE['id']."'><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
|
|
|
|
echo '</thead></table>';
|
|
foreach($UE['modules'] as $module){ // pour chaque module
|
|
echo '<table class=basic><thead>';
|
|
echo "<tr><th colspan=5>".$module['nom']." - ".$module['libelle']." <span class='unstressed' style='font-weight:normal'>(coeff. ".$module['coefficient'].")</span></th></tr></thead><tbody>";
|
|
|
|
foreach($module['controles'] as $controle){ // pour chaque contrôle
|
|
echo '<tr>';
|
|
echo "<td><span class='link ctrl' data-ctrl='".$controle['id']."'>".$controle['libelle']."</span></td>";
|
|
|
|
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
|
|
echo '<td><span class=unstressed>Pas de note</span></td>';
|
|
else // si une note, alors on l'affiche
|
|
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
|
|
|
|
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
|
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
|
|
echo '</tr>';
|
|
}
|
|
|
|
echo "<tr class='transparentbg noborder'>";
|
|
|
|
|
|
|
|
/* MOYENNE MODULE */
|
|
if( is_bool($module['moyenne']) ) // si aucune note pour ce controle on affiche 'Pas de note'
|
|
echo "<td colspan=1><span class='link inactive stressed' style='padding:.5em 1em; background:white;'>Pas de moyenne</span></td>";
|
|
else // si une note, alors on l'affiche
|
|
echo "<td colspan=1><span class='link inactive ".noteToClass($module['moyenne']['moyenne'], $module['moyenne']['base'])."' style='padding:.5em 1em; background:white;'>Moyenne module: <strong>".number_format($module['moyenne']['moyenne'], 2)." <span class=unstressed>/</span> ".$module['moyenne']['base']."</span></strong></td>";
|
|
|
|
/* MOYENNE UE */
|
|
// si UE non inactif dans la capitalisation, on affiche
|
|
if( !in_array($UE['id'], $semestre['inactive']) ){
|
|
|
|
if( is_bool($UE['moyenne']) ) // si aucune note pour cet UE on affiche 'Pas de moyenne'
|
|
echo "<td colspan=1><span class='link inactive stressed' style='padding:.5em 1em; background:white;'>Pas de moyenne</span></td>";
|
|
else // si un moyenne, alors on l'affiche
|
|
echo "<td colspan=1><span class='link inactive ".noteToClass($UE['moyenne']['moyenne'], $UE['moyenne']['base'])."' style='padding:.5em 1em; background:white;'>Moyenne UE: <strong>".number_format($UE['moyenne']['moyenne'], 2)." <span class=unstressed>/</span> ".$UE['moyenne']['base']."</span></strong></td>";
|
|
|
|
// UE pas utilisé dans la capitalisation, on affiche pas
|
|
}else{ // sert de lien pour l'activer dans la capitalisation
|
|
echo "<td colspan=1><span class='link capitalisation_ue' data-stre='".$semestre['id']."' data-ue='".$UE['id']."' data-etu='".$etudiantOpt."' style='padding:.5em 1em; background:white;'>Non pris en compte</span></strong></td>";
|
|
}
|
|
|
|
|
|
|
|
/* MOYENNE SEMESTRE */
|
|
if( is_bool($semestre['moyenne']) ) // si aucune note pour ce semestre on affiche 'Pas de moyenne'
|
|
echo "<td colspan=1><span class='link inactive stressed' style='padding:.5em 1em; background:white;'>Pas de moyenne</span></td>";
|
|
else // si un moyenne, alors on l'affiche
|
|
echo "<td colspan=1><span class='link inactive ".noteToClassSemestre($semestre['moyenne']['moyenne'], $semestre['moyenne']['base'], $semestre['compensable'], $semestre['compensation'])."' style='padding:.5em 1em; background:white;'>Moyenne semestre: <strong>".number_format($semestre['moyenne']['moyenne'], 2)." <span class=unstressed>/</span> ".$semestre['moyenne']['base']."</span></strong></td>";
|
|
|
|
echo '</tr>';
|
|
|
|
|
|
echo '</tbody>';
|
|
}
|
|
echo '</table>';
|
|
|
|
}
|
|
|
|
}}
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
echo '</section>';
|
|
}else
|
|
echo "<section name='studentcase' data-title='Dossier étudiant' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
?>
|