Modification de l'affichage des notes util (UE->modules->controles->notes) + Refacto REPOS
This commit is contained in:
parent
b985e2f0ae
commit
f7c9357114
|
@ -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';
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
$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
|
||||
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']);
|
||||
}
|
||||
|
||||
return $notelist;
|
||||
}
|
||||
|
||||
return $UEList;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -84,66 +84,30 @@ class noteRepo extends DBAccess{
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* CREE UN NOUVEL UTILISATEUR DANS LA BASE DE DONNES
|
||||
/* RENVOIE LES NOTES D'UN ETUDIANT POUR UN CONTROLE PARTICULIER
|
||||
*
|
||||
* @identifiant<String> l'identifiant (unique) de l'utilisateur à créer
|
||||
* @prenom<String> le prénom du nouvel utilisateur
|
||||
* @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
|
||||
* @etudiant<String> l'UID de l'étudiant concerné
|
||||
* @controle<int> l'UID du controle concerné
|
||||
*
|
||||
* @return UID<String> l'UID du nouvel utilisateur s'il a bien été créé
|
||||
* @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
|
||||
* @return notes<Array> retourne les notes d'un étudiant pour un controle particulier
|
||||
*
|
||||
*/
|
||||
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() );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 ".
|
||||
|
|
|
@ -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'>";
|
||||
|
||||
foreach($answer->notes as $UE){
|
||||
|
||||
echo "<table class='basic col4'>";
|
||||
foreach($answer->UEs as $UE){ // pour chaque UE
|
||||
echo "<table class='basic col5'>";
|
||||
echo "<thead class='active'>";
|
||||
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 '</thead>';
|
||||
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 "<td><span class=link>".$note['module']." - ".$note['modulelib']."</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> '.$note['base'].'</td>';
|
||||
echo '<td>Coefficient '.number_format($note['coefficient'], 2).'</td>';
|
||||
echo '<td><span class=link><span class=unstressed>"</span>'.$controle['intitule'].'<span class=unstressed>"</span></span></td>';
|
||||
echo '<td>'.number_format($note['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 '</tbody>';
|
||||
echo '</table>';
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
|
|
|
@ -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']);
|
||||
|
|
31
test.php
31
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] );
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue