Affichage des notes pour profs : Etape 1

This commit is contained in:
xdrm-brackets 2015-11-13 19:07:36 +01:00
parent 53a6683b94
commit 04f254564e
7 changed files with 257 additions and 10 deletions

View File

@ -36,7 +36,7 @@ require_once __ROOT__.'/manager/database.php';
/***************************/
/* liste des notes par UEs */
/***************************/
case 'getNotesByUEs': if( connected() ){
case 'getNotesEtudiant': if( permission('student') ){
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // si c'est des strings
@ -46,7 +46,7 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
$UEs = DataBase::getInstance()->getNotesByUEs($request->etudiant, $request->semestre, $request->annee);
$UEs = DataBase::getInstance()->getNotesEtudiant($request->etudiant, $request->semestre, $request->annee);
if( is_array($UEs) ){ // si on a bien un tableau
$answer->UEs = $UEs; // on renvoie dans answer->note
@ -62,6 +62,34 @@ require_once __ROOT__.'/manager/database.php';
/***************************/
/* liste des conetroles */
/***************************/
case 'getControlesEnseignant': if( permission('teacher') ){
$areSetParam = isset($request->enseignant) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->enseignant) && is_string($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->annee); // des bon types
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
$UEs = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
if( is_array($UEs) ){ // si on a bien un tableau
$answer->UEs = $UEs; // on renvoie dans answer->UEs
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $UEs; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/***********/
/* DEFAULT */

View File

@ -598,10 +598,10 @@ class DataBase{
}
/*********************************/
/*** retourne les notes par UE ***/
/*********************************/
public function getNotesByUEs($etudiant, $semestre, $annee){
/****************************************/
/*** retourne les notes d'un étudiant ***/
/****************************************/
public function getNotesEtudiant($etudiant, $semestre, $annee){
// on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
@ -625,6 +625,32 @@ class DataBase{
}
/*******************************************/
/*** retourne les notes d'un enseignant ***/
/*******************************************/
public function getControlesEnseignant($enseignant, $semestre_pair, $annee){
// on vérifie que le semestre existe et que l'enseignant y enseigne
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
$UEList = ueRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
foreach($UEList as $iter_ue=>$a){
$UEList[$iter_ue]['modules'] = moduleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['id'], $UEList[$iter_ue]['id_semestre']);
foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){
$UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['modules'][$iter_mod]['id'], $UEList[$iter_ue]['id_semestre']);
foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c)
$UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($enseignantUID, $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']);
}
}
return $UEList;
}
/**************************************/
/*** retourne les notes d'un module ***/

View File

@ -57,4 +57,33 @@ class controleRepo extends DBAccess{
/* RENVOIE LES CONTROLES QU'UN ENSEIGNANT PEUT CORRIGER POUR UN MODULE ET SEMESTRE PARTICULIER
*
* @enseignant<String> l'identifiant de l'enseignant
* @module<int> l'UID du module concerné
* @semestre<int> l'UID du semestre concerné
*
* @return controles<Array> retourne les controles q'un enseignant peut corriger pour un module d'un semestre
*
*/
public static function forTeacher($enseignant, $module, $semestre){
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
"FROM enseignement as ens, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND ens.id_enseignant = :enseignant ".
"AND mcc_m.id_module = :module ".
"AND mcc_ue.id_semestre = :semestre");
$getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() );
}
}

View File

@ -75,6 +75,35 @@ class moduleRepo extends DBAccess{
/* RENVOIE LA LISTE DES MODULES QU'ENSEIGNE UN ENSEIGNANT POUR UN UE D'UNE ANNEE
*
* @enseignant<String> Identifiant de l'enseignant
* @UEUID<int> L'UID de l'UE en question
* @semestre<int> L'UID du semestre en question
*
* @return Modules<Array> retourne un tableau contenant les modules de l'enseignant pour ce semestre et cet UE
*
*/
public static function forTeacher($enseignant, $UEUID, $semestre){
// on récupère les modules
$getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
"FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND ens.id_enseignant = :enseignant ".
"AND mcc_ue.id_ue = :UEUID ".
"AND mcc_ue.id_semestre = :semestre ".
"ORDER BY m.nom, m.libelle");
$getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForTeacher->fetchAll() );
}
/* RENVOIE LA LISTE DES MODULES D'UN UE D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
*

View File

@ -111,5 +111,30 @@ class noteRepo extends DBAccess{
}
/* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
*
* @controle<int> l'UID du controle concerné
*
* @return notes<Array> retourne les notes des étudiants pour un controle particulier
*
*/
public static function forTeacher($enseignant, $controle){
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, n.id_appartenance, n.id_controle, n.valeur ".
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m ".
"WHERE n.id_appartenance = app.id_appartenance ".
"AND app.id_semestre = s.id_semestre ".
"AND s.id_semestre = mcc_ue.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND n.id_controle = ctrl.id_controle ".
"AND ctrl.id_controle = :controle ".
"ORDER BY app.identifiant, n.valeur ASC");
$getNoteList->execute(array( ':controle' => $controle ));
return DataBase::delNumeric( $getNoteList->fetchAll() );
}
}

View File

@ -84,7 +84,7 @@ class ueRepo extends DBAccess{
*/
public static function forTeacher($enseignant, $semestre_pair, $annee){
// on récupère les modules
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.annee, s.rang, ue.nom, ue.libelle ".
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
"FROM enseignement as ens, semestre as s, ue, mcc_ue, mcc_module as mcc_m ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND ens.correcteur = 1 ". // si l'enseignant est correcteur uniquement
@ -115,7 +115,7 @@ class ueRepo extends DBAccess{
*/
public static function forYear($semestre_pair, $annee){
// on récupère les modules
$getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, ue.nom, ue.libelle ".
$getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
"FROM ue, mcc_ue, semestre as s ".
"WHERE ue.id_ue = mcc_ue.id_ue ".
"AND mcc_ue.id_semestre = s.id_semestre ".

View File

@ -32,7 +32,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
$request = new stdClass(); $answer = new stdClass();
debug();
$request->level_1 = 'getNotesByUEs';
$request->level_1 = 'getNotesEtudiant';
$request->etudiant = $_SESSION['identifiant'];
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
@ -78,4 +78,114 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
}else
echo "<section name='marksbyue' title='Mes Notes' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>";
} ?>
}
/***********************************/
/*** LES UE (version enseignant) ***/
/***********************************/
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
debug();
$request->level_1 = 'getControlesEnseignant';
$request->enseignant = $_SESSION['identifiant'];
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
career_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
////////////////////////////////////////////////////////////////////////////////
echo "<section name='controlesbyue' title='Contrôles' class='basic'>";
if( count($answer->UEs) > 0 ){ // si au moins un UE
foreach($answer->UEs as $UE){ // pour chaque UE
echo "<table class='basic col4'>";
echo "<thead>";
echo '<tr>';
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead></table>';
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><thead>';
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</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>'.$controle['intitule'].'</span></td>';
if( count($controle['notes']) > 0 ) // si ce contrôle est noté, on
echo '<td><span class=unstressed>Noté</span></td>';
else
echo '<td><span class=unstressed>Pas noté</span></td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</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='controlesbyue' title='Contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
}
?>