Modification de l'affichage des notes util (UE->modules->controles->notes) + Refacto REPOS

This commit is contained in:
xdrm-brackets 2015-11-12 11:19:58 +01:00
parent b985e2f0ae
commit f7c9357114
8 changed files with 141 additions and 101 deletions

View File

@ -46,13 +46,13 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons 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 if( is_array($UEs) ){ // si on a bien un tableau
$answer->notes = $notes; // on renvoie dans answer->note $answer->UEs = $UEs; // on renvoie dans answer->note
$answer->request = 'success'; // et on renvoie success $answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau }else // sinon si c'est pas un tableau
$answer->request = $notes; // on retourne l'erreur $answer->request = $UEs; // on retourne l'erreur
}else }else
$answer->request = 'param_error'; $answer->request = 'param_error';

View File

@ -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/semestre.php';
require_once __ROOT__.'/manager/repo/module.php'; require_once __ROOT__.'/manager/repo/module.php';
require_once __ROOT__.'/manager/repo/ue.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(); // debug();
class DBAccess{}; class DBAccess{};
@ -683,26 +684,21 @@ class DataBase{
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; 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); $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);
$current = array(); // on créé l'entrée qui sera dans le tableau de retour foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c)
$current['UE'] = array(); $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($etudiantUID, $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']);
$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;
} }

60
manager/repo/controle.php Executable file
View File

@ -0,0 +1,60 @@
<?php require_once __ROOT__.'/manager/security.php';
/************************************************************************************/
/* ____ ___ _ _ _____ ____ ___ _ _____ ____ _____ ____ ___ */
/* / ___/ _ \| \ | |_ _| _ \ / _ \| | | ____| | _ \| ____| _ \ / _ \ */
/* | | | | | | \| | | | | |_) | | | | | | _| | |_) | _| | |_) | | | | */
/* | |__| |_| | |\ | | | | _ <| |_| | |___| |___ | _ <| |___| __/| |_| | */
/* \____\___/|_| \_| |_| |_| \_\\___/|_____|_____| |_| \_\_____|_| \___/ */
/* */
/************************************************************************************/
class controleRepo extends DBAccess{
/* RENVOIE LES INFORMATIONS D'UN CONTROLE D'UID DONNÉ
*
* @controleUID<int> l'UID du controle duquel on veut les infos
*
* @return controle<Array> 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<int> l'UID du module concerné
* @semestre<int> l'UID du semestre concerné
*
* @return controles<Array> 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() );
}
}

View File

@ -84,66 +84,30 @@ class noteRepo extends DBAccess{
/* RENVOIE LES NOTES D'UN ETUDIANT POUR UN CONTROLE PARTICULIER
/* CREE UN NOUVEL UTILISATEUR DANS LA BASE DE DONNES
* *
* @identifiant<String> l'identifiant (unique) de l'utilisateur à créer * @etudiant<String> l'UID de l'étudiant concerné
* @prenom<String> le prénom du nouvel utilisateur * @controle<int> l'UID du controle concerné
* @nom<String> le nom du nouvel utilisateur
* @mail<String> le mail du nouvel utilisateur
* @mdp<String> le mot de passe du nouvel utilisateur
* @droits<Array> les droits à donner au nouvel utilisateur
* *
* @return UID<String> l'UID du nouvel utilisateur s'il a bien été créé * @return notes<Array> retourne les notes d'un étudiant pour un controle particulier
* @return created<Boolean> 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){ public static function forStudent($etudiant, $controle){
/* [1] On normalise les données $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 ".
foreach($droits as $droit) "WHERE n.id_appartenance = app.id_appartenance ".
if( !is_int( array_search($droit, getPermissions()) ) ) // si le droit n'est pas dans la liste des droits existants "AND app.id_semestre = s.id_semestre ".
return false; // on retourne une erreur comme quoi le droit est inexistant "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 return DataBase::delNumeric( $getNoteList->fetchAll() );
$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);
} }

View File

@ -57,7 +57,7 @@ class ueRepo extends DBAccess{
*/ */
public static function forStudent($etudiant, $semestre){ public static function forStudent($etudiant, $semestre){
// on récupère les modules // 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 ". "FROM appartenance as app, semestre as s, mcc_ue, ue ".
"WHERE app.id_semestre = s.id_semestre ". "WHERE app.id_semestre = s.id_semestre ".
"AND mcc_ue.id_semestre = s.id_semestre ". "AND mcc_ue.id_semestre = s.id_semestre ".

View File

@ -43,26 +43,29 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='marksbyue' title='Mes Notes' class='basic'>"; echo "<section name='marksbyue' title='Mes Notes' class='basic'>";
foreach($answer->notes as $UE){ foreach($answer->UEs as $UE){ // pour chaque UE
echo "<table class='basic col5'>";
echo "<table class='basic col4'>";
echo "<thead class='active'>"; echo "<thead class='active'>";
echo '<tr>'; echo '<tr>';
echo '<th colspan=5>'.$UE['UE']['nom'].' - '.$UE['UE']['libelle'].'</th>'; echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>'; echo '</tr>';
echo '</thead>'; echo '</thead>';
echo '<tbody>'; echo '<tbody>';
foreach($UE['notes'] as $note){ 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 '<tr>'; echo '<tr>';
echo "<td><span class=link>".$note['module']." - ".$note['modulelib']."</span></td>"; echo '<td><span class=link><span class=unstressed>"</span>'.$controle['intitule'].'<span class=unstressed>"</span></span></td>';
echo '<td><span class=unstressed>"</span>'.$note['intitule'].'<span class=unstressed>"</span></td>'; echo '<td>'.number_format($note['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo '<td>'.number_format($note['valeur'], 2).' <span class=unstressed>/</span> '.$note['base'].'</td>'; echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($note['coefficient'], 2).'</td>'; echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>'; echo '</tr>';
} }
echo '</tbody>'; echo '</tbody>';
echo '</table>'; echo '</table>';
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';

View File

@ -556,7 +556,7 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
// $index = 2; // $index = 2;
// if($answer->request == 'success') { // if($answer->request == 'success') {
// foreach ($answer->grouplist as $group) { // foreach ($answer->grouplist as $group) {
// $groupeName = $group->nom; // $groupeName = $group['nom'];
// foreach ($group->userlist as $student) { // foreach ($group->userlist as $student) {
// $sheet->setCellValue('A'.$index, $groupeName); // $sheet->setCellValue('A'.$index, $groupeName);
// $sheet->setCellValue('B'.$index, $student['nom']); // $sheet->setCellValue('B'.$index, $student['nom']);

View File

@ -47,15 +47,32 @@ require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/database.php'; require_once __ROOT__.'/manager/database.php';
debug(); debug();
$_SESSION['semestre_pair'] = !$_SESSION['semestre_pair']; // $_SESSION['semestre_pair'] = !$_SESSION['semestre_pair'];
var_dump( $_SESSION['semestre_pair'] ); // var_dump( $_SESSION['semestre_pair'] );
// on affiche les modules d'un étudiant // on affiche les modules d'un étudiant
// var_dump( DataBase::getInstance()->getModulesByUEByEtudiant( var_dump( DataBase::getInstance()->getModulesByUEByEtudiant(
// $_SESSION['identifiant'], $_SESSION['identifiant'],
// $_SESSION['semestre'], $_SESSION['semestre'],
// $_SESSION['annee'] $_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] );