From 04f254564e6fa0d60e003737a245adbe75240b40 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 13 Nov 2015 19:07:36 +0100 Subject: [PATCH] Affichage des notes pour profs : Etape 1 --- manager/career.php | 32 ++++++++++- manager/database.php | 34 ++++++++++-- manager/repo/controle.php | 29 ++++++++++ manager/repo/module.php | 29 ++++++++++ manager/repo/note.php | 25 +++++++++ manager/repo/ue.php | 4 +- page/career.php | 114 +++++++++++++++++++++++++++++++++++++- 7 files changed, 257 insertions(+), 10 deletions(-) diff --git a/manager/career.php b/manager/career.php index 9027f44..65d0348 100755 --- a/manager/career.php +++ b/manager/career.php @@ -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 */ diff --git a/manager/database.php b/manager/database.php index a95d4fd..7cbddd1 100755 --- a/manager/database.php +++ b/manager/database.php @@ -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 ***/ diff --git a/manager/repo/controle.php b/manager/repo/controle.php index 2ee83e7..58f28a8 100755 --- a/manager/repo/controle.php +++ b/manager/repo/controle.php @@ -57,4 +57,33 @@ class controleRepo extends DBAccess{ + + + + /* RENVOIE LES CONTROLES QU'UN ENSEIGNANT PEUT CORRIGER POUR UN MODULE ET SEMESTRE PARTICULIER + * + * @enseignant l'identifiant de l'enseignant + * @module l'UID du module concerné + * @semestre l'UID du semestre concerné + * + * @return controles 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() ); + } + + + } \ No newline at end of file diff --git a/manager/repo/module.php b/manager/repo/module.php index 3a6d925..b2c08fb 100755 --- a/manager/repo/module.php +++ b/manager/repo/module.php @@ -75,6 +75,35 @@ class moduleRepo extends DBAccess{ + /* RENVOIE LA LISTE DES MODULES QU'ENSEIGNE UN ENSEIGNANT POUR UN UE D'UNE ANNEE + * + * @enseignant Identifiant de l'enseignant + * @UEUID L'UID de l'UE en question + * @semestre L'UID du semestre en question + * + * @return Modules 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) * diff --git a/manager/repo/note.php b/manager/repo/note.php index bb8c119..2d70c94 100755 --- a/manager/repo/note.php +++ b/manager/repo/note.php @@ -111,5 +111,30 @@ class noteRepo extends DBAccess{ } + /* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER + * + * @controle l'UID du controle concerné + * + * @return notes 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() ); + } + + } \ No newline at end of file diff --git a/manager/repo/ue.php b/manager/repo/ue.php index d00a2d3..8a35824 100755 --- a/manager/repo/ue.php +++ b/manager/repo/ue.php @@ -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 ". diff --git a/page/career.php b/page/career.php index 673ea67..3a69fe4 100755 --- a/page/career.php +++ b/page/career.php @@ -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 "
Aucune note trouvée
"; -} ?> +} + + + + + + + + + + + + + + + +/***********************************/ +/*** 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 "
"; + + if( count($answer->UEs) > 0 ){ // si au moins un UE + + foreach($answer->UEs as $UE){ // pour chaque UE + echo ""; + echo ""; + echo ''; + echo "'; + echo ''; + + echo '
".$UE['nom'].' - '.$UE['libelle'].'
'; + if( count($UE['modules']) > 0 ){ // s'il y a au moins un module + + foreach($UE['modules'] as $module){ // pour chaque module + echo ''; + echo ''; + + 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 ''; + echo ''; + + if( count($controle['notes']) > 0 ) // si ce contrôle est noté, on + echo ''; + else + echo ''; + + + echo ""; + echo ''; + echo ''; + } + + }else // si aucun contrôle pour ce module + echo ""; + + echo ''; + } + + } + echo '
'.$module['nom'].' - '.$module['libelle'].'
'.$controle['intitule'].'NotéPas noté".$module['nom']." - ".$module['libelle']."Coefficient '.number_format($controle['coefficient'], 2).'
Aucun contrôle trouvé
'; + } + + } + //////////////////////////////////////////////////////////////////////////////// + echo '
'; + }else + echo "
Aucun contrôle trouvé
"; + +} + + + + + + + + + + + + + + + + + + + + + + + + + +?>