From f7c9357114c252deada0c3215afa9d92f89aaa66 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 12 Nov 2015 11:19:58 +0100 Subject: [PATCH] Modification de l'affichage des notes util (UE->modules->controles->notes) + Refacto REPOS --- manager/career.php | 8 ++--- manager/database.php | 28 +++++++-------- manager/repo/controle.php | 60 +++++++++++++++++++++++++++++++ manager/repo/note.php | 76 +++++++++++---------------------------- manager/repo/ue.php | 2 +- page/career.php | 35 +++++++++--------- page/groups.php | 2 +- test.php | 31 ++++++++++++---- 8 files changed, 141 insertions(+), 101 deletions(-) create mode 100755 manager/repo/controle.php diff --git a/manager/career.php b/manager/career.php index 61290bf..9027f44 100755 --- a/manager/career.php +++ b/manager/career.php @@ -46,13 +46,13 @@ 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 - $notes = DataBase::getInstance()->getNotesByUEs($request->etudiant, $request->semestre, $request->annee); + $UEs = DataBase::getInstance()->getNotesByUEs($request->etudiant, $request->semestre, $request->annee); - if( is_array($notes) ){ // si on a bien un tableau - $answer->notes = $notes; // on renvoie dans answer->note + if( is_array($UEs) ){ // si on a bien un tableau + $answer->UEs = $UEs; // on renvoie dans answer->note $answer->request = 'success'; // et on renvoie success }else // sinon si c'est pas un tableau - $answer->request = $notes; // on retourne l'erreur + $answer->request = $UEs; // on retourne l'erreur }else $answer->request = 'param_error'; diff --git a/manager/database.php b/manager/database.php index dd310b8..272748b 100755 --- a/manager/database.php +++ b/manager/database.php @@ -6,7 +6,8 @@ require_once __ROOT__.'/manager/repo/group.php'; // gestion des groupes & appart require_once __ROOT__.'/manager/repo/semestre.php'; require_once __ROOT__.'/manager/repo/module.php'; require_once __ROOT__.'/manager/repo/ue.php'; -// require_once __ROOT__.'/manager/repo/note.php'; +require_once __ROOT__.'/manager/repo/controle.php'; +require_once __ROOT__.'/manager/repo/note.php'; // debug(); class DBAccess{}; @@ -683,26 +684,21 @@ class DataBase{ if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; - $notelist = array(); // tableau qui contiendra tout les modules - - // on récupère la liste des UEs $UEList = ueRepo::forStudent($etudiantUID, $semestreUID); - foreach($UEList as $UE){ // pour chaque module + foreach($UEList as $iter_ue=>$a){ + $UEList[$iter_ue]['modules'] = moduleRepo::forStudent($UEList[$iter_ue]['id'], $semestreUID); - $notes = $this->getUENotes($etudiant, $UE['nom'], $semestre, $annee); // on récupère les notes + foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){ + $UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($UEList[$iter_ue]['modules'][$iter_mod]['id'], $semestreUID); + + foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c) + $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($etudiantUID, $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']); + } - $current = array(); // on créé l'entrée qui sera dans le tableau de retour - $current['UE'] = array(); - $current['UE']['annee'] = $UE['annee']; // contenant l'annee du UE - $current['UE']['nom'] = $UE['nom']; // contenant le nom du UE - $current['UE']['libelle'] = $UE['libelle']; // contenant le libelle du UE - $current['notes'] = $notes; // et la liste de notes + } - array_push($notelist, $current); // on l'ajoute au résultat - } - - return $notelist; + return $UEList; } diff --git a/manager/repo/controle.php b/manager/repo/controle.php new file mode 100755 index 0000000..2ee83e7 --- /dev/null +++ b/manager/repo/controle.php @@ -0,0 +1,60 @@ + l'UID du controle duquel on veut les infos + * + * @return controle tableau associatif contenant tout les champs de la BDD pour ce controle + * + */ + public static function info($controleUID){ + // on considère que le semestre existe + $getControleInfo = DataBase::getPDO()->prepare("SELECT id_controle as id, id_mcc_module, intitule, base, coefficient, date_publication FROM controle WHERE id_controle = :controleUID"); + $getControleInfo->execute(array( + ':controleUID' => $controleUID + )); + + // on retourne le résultat en supprimant les doublons à indices numériques + return $getControleInfo->fetch(); + } + + + + + + + /* RENVOIE LES CONTROLES POUR UN MODULE ET SEMESTRE PARTICULIER + * + * @module l'UID du module concerné + * @semestre l'UID du semestre concerné + * + * @return controles retourne les controles d'un étudiant pour un controle particulier + * + */ + public static function forStudent($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 controle as ctrl, module as m, mcc_module as mcc_m, mcc_ue, semestre as s ". + "WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module ". + "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". + "AND mcc_ue.id_semestre = s.id_semestre ". + + "AND mcc_m.id_module = :module ". + "AND s.id_semestre = :semestre"); + $getControleList->execute(array( ':module' => $module, ':semestre' => $semestre )); + + return DataBase::delNumeric( $getControleList->fetchAll() ); + } + + + +} \ No newline at end of file diff --git a/manager/repo/note.php b/manager/repo/note.php index 83e9ed2..bb8c119 100755 --- a/manager/repo/note.php +++ b/manager/repo/note.php @@ -83,67 +83,31 @@ class noteRepo extends DBAccess{ - - - - - - - - - - /* CREE UN NOUVEL UTILISATEUR DANS LA BASE DE DONNES + + /* RENVOIE LES NOTES D'UN ETUDIANT POUR UN CONTROLE PARTICULIER * - * @identifiant l'identifiant (unique) de l'utilisateur à créer - * @prenom le prénom du nouvel utilisateur - * @nom le nom du nouvel utilisateur - * @mail le mail du nouvel utilisateur - * @mdp le mot de passe du nouvel utilisateur - * @droits les droits à donner au nouvel utilisateur + * @etudiant l'UID de l'étudiant concerné + * @controle l'UID du controle concerné + * + * @return notes retourne les notes d'un étudiant pour un controle particulier * - * @return UID l'UID du nouvel utilisateur s'il a bien été créé - * @return created VRAI si l'utilisateur n'existait pas déjà* et qu'il a bien été créé - * (*) Si aucun autre n'avait le même @identifiant - * */ - public static function creer($identifiant, $prenom, $nom, $mail, $mdp, $droits){ - /* [1] On normalise les données - =================================================================================================*/ - foreach($droits as $droit) - if( !is_int( array_search($droit, getPermissions()) ) ) // si le droit n'est pas dans la liste des droits existants - return false; // on retourne une erreur comme quoi le droit est inexistant + public static function forStudent($etudiant, $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 app.id_etudiant = :etudiant ". + "AND ctrl.id_controle = :controle ". + "ORDER BY n.valeur ASC"); + $getNoteList->execute(array( ':etudiant' => $etudiant, ':controle' => $controle )); - $identifiant = strtolower($identifiant); // on met l'identifiant en minuscule - $prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule - $nom = strtoupper($nom); // nom en majuscules - $mail = strtolower($mail); // email en minuscules - $mdp = sha1($mdp); // on hash le password (SHA1) - $droits = implode(',', $droits); // on met le droit sous forme de chaine - - /* [2] On vérifie que l'utilisateur n'est pas déjà créé - =================================================================================================*/ - if( noteRepo::UID($identifiant) ) // si on a un résultat, c'est qu'un utilisateur a déjà cet identifiant (UID) - return false; - - /* [3] On créé le nouvel utilisateur - =================================================================================================*/ - $creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) ". - "VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)"); - $creationUtilisateur->execute(array( - ':identifiant' => $identifiant, - ':prenom' => $prenom, - ':nom' => $nom, - ':mail' => $mail, - ':mdp' => $mdp, - ':droits' => $droits - )); - - - /* [4] On vérifie que l'utilisateur a bien été créé - =================================================================================================*/ - return noteRepo::UID($identifiant); - + return DataBase::delNumeric( $getNoteList->fetchAll() ); } diff --git a/manager/repo/ue.php b/manager/repo/ue.php index edcb57c..7ffbdc8 100755 --- a/manager/repo/ue.php +++ b/manager/repo/ue.php @@ -57,7 +57,7 @@ class ueRepo extends DBAccess{ */ public static function forStudent($etudiant, $semestre){ // on récupère les modules - $getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.annee, ue.nom, ue.libelle ". + $getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ". "FROM appartenance as app, semestre as s, mcc_ue, ue ". "WHERE app.id_semestre = s.id_semestre ". "AND mcc_ue.id_semestre = s.id_semestre ". diff --git a/page/career.php b/page/career.php index 4df6509..641a803 100755 --- a/page/career.php +++ b/page/career.php @@ -43,26 +43,29 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un //////////////////////////////////////////////////////////////////////////////// echo "
"; - foreach($answer->notes as $UE){ - - echo ""; - echo ""; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - foreach($UE['notes'] as $note){ + foreach($answer->UEs as $UE){ // pour chaque UE + echo "
'.$UE['UE']['nom'].' - '.$UE['UE']['libelle'].'
"; + echo ""; + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + foreach($UE['modules'] as $module) // pour chaque module + foreach($module['controles'] as $controle) // pour chaque contrôle + foreach($controle['notes'] as $note){ // pour chaque note echo ''; - echo ""; - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ""; + echo ''; echo ''; } - echo ''; + + echo ''; echo '
'.$UE['nom'].' - '.$UE['libelle'].'
".$note['module']." - ".$note['modulelib'].""'.$note['intitule'].'"'.number_format($note['valeur'], 2).' / '.$note['base'].'Coefficient '.number_format($note['coefficient'], 2).'"'.$controle['intitule'].'"'.number_format($note['valeur'], 2).' / '.$controle['base'].'".$module['nom']." - ".$module['libelle']."Coefficient '.number_format($controle['coefficient'], 2).'
'; + } //////////////////////////////////////////////////////////////////////////////// echo '
'; diff --git a/page/groups.php b/page/groups.php index c1045f0..7fdc2c4 100755 --- a/page/groups.php +++ b/page/groups.php @@ -556,7 +556,7 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm // $index = 2; // if($answer->request == 'success') { // foreach ($answer->grouplist as $group) { -// $groupeName = $group->nom; +// $groupeName = $group['nom']; // foreach ($group->userlist as $student) { // $sheet->setCellValue('A'.$index, $groupeName); // $sheet->setCellValue('B'.$index, $student['nom']); diff --git a/test.php b/test.php index 647cd38..db794dd 100755 --- a/test.php +++ b/test.php @@ -47,15 +47,32 @@ require_once __ROOT__.'/manager/security.php'; require_once __ROOT__.'/manager/database.php'; debug(); -$_SESSION['semestre_pair'] = !$_SESSION['semestre_pair']; -var_dump( $_SESSION['semestre_pair'] ); +// $_SESSION['semestre_pair'] = !$_SESSION['semestre_pair']; +// var_dump( $_SESSION['semestre_pair'] ); // on affiche les modules d'un étudiant -// var_dump( DataBase::getInstance()->getModulesByUEByEtudiant( -// $_SESSION['identifiant'], -// $_SESSION['semestre'], -// $_SESSION['annee'] -// ) ); +var_dump( DataBase::getInstance()->getModulesByUEByEtudiant( + $_SESSION['identifiant'], + $_SESSION['semestre'], + $_SESSION['annee'] +) ); + + +// on affiche les controle d'un étudiant pour un module, semestre particulier +$UEList = ueRepo::forStudent($_SESSION['identifiant'], $_SESSION['semestre']); + +foreach($UEList as $iter_ue=>$a){ + $UEList[$iter_ue]['modules'] = moduleRepo::forStudent($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::forStudent($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($_SESSION['identifiant'], $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']); + } + +} +var_dump( $UEList[0]['modules'][0]['controles'][0] );