Correction de l'affichage des utilisateurs + afficher groupes d'un enseignant pour l'année courante à FAIRE (@database.php)

This commit is contained in:
xdrm-brackets 2015-11-04 09:15:35 +01:00
parent 6b0acd8719
commit 8281ffe52c
9 changed files with 376 additions and 84 deletions

View File

@ -9,9 +9,8 @@
.hidden{ display: none !important; }
span.unstressed{ color: #aaa; }
span.stressed{ font-weight: bold; }

View File

@ -56,11 +56,8 @@ body{
/* position */
/*display: block;*/ display: none;
position: fixed;
width: 10px;
height: 10px;
/* border */
border-radius: 100% / 100%;
width: 0;
height: 0;
/* Z */
z-index: 100;

View File

@ -78,7 +78,7 @@ $notifNotifNum = 5;
if( $_SESSION['identifiant'] != null ){ // si l'utilisateur est connecté, on affiche les notifications
/* BOUTON DE DECONNECTION */
echo "<div id='LOGOUT' data-info='Déconnection'></div>";
echo "<div id='LOGOUT' data-info='Déconnexion'></div>";
/* NOTIFICATIONS */
@ -122,12 +122,12 @@ $notifNotifNum = 5;
<input type='text' name='identifiant' placeholder='Username'>
<input type='password' name='mdp' placeholder='Password'>
<span class='errorbox'>&nbsp</span>
<input type='button' value='Connection'>
<input type='button' value='Connexion'>
</form>
<?php }else{ // si on est connecté ?>
<form id='AUTH' action='' method='POST'>
<label>Déconnection</label>
<input type='button' value='Déconnection'>
<label>Déconnexion</label>
<input type='button' value='ME déconnecter'>
</form>
<?php } ?>

View File

@ -199,7 +199,7 @@ class DataBase{
// si le groupe existe => on récupère ses utilisateurs
$appartenance = $this->pdo->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits ".
$appartenance = $this->pdo->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre ".
"FROM utilisateur as u, groupe as g, semestre as s, appartenance as app ".
"WHERE u.identifiant = app.id_etudiant ".
"AND g.id_groupe = app.id_groupe ".
@ -227,10 +227,10 @@ class DataBase{
}
/******************************************************/
/*** retourne la liste des utilisateurs des groupes ***/
/******************************************************/
public function listeEtudiantsTousGroupes($semestre, $annee){
/********************************************************************/
/*** retourne la liste des utilisateurs des groupes d'un semestre ***/
/********************************************************************/
public function listeEtudiantsTousGroupesSemestre($semestre, $annee){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
$getSemestreUID->execute(array(
@ -245,7 +245,7 @@ class DataBase{
return 'unknown_semestre';
// on cherche tout les groupes du même semestre de la même année
$getGroupesUID = $this->pdo->prepare("SELECT DISTINCT g.nom ".
$getGroupesUID = $this->pdo->prepare("SELECT DISTINCT g.nom, s.rang, s.nom as semestre ".
"FROM groupe as g, semestre as s, appartenance as app ".
"WHERE g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ".
@ -263,6 +263,7 @@ class DataBase{
$groupe = new stdClass();
$groupe->nom = $groupeUID['nom']; // attribut "nom" ajouté au groupe
$groupe->semestre = $groupeUID['semestre'];
$groupe->userlist = $this->listeEtudiantsGroupe($groupe->nom, $semestre, $annee); // on charge la liste des utilisateurs de ce groupe
@ -273,6 +274,109 @@ class DataBase{
}
/******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
public function listeEtudiantsTousGroupesAnnee($annee){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$checkAnnee = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array(
':annee' => $annee
));
// si on trouve pas, on retourne "unknown_year"
if( !( $checkAnnee->fetch()['id'] ) )
return 'unknown_year';
// on cherche tout les groupes du même semestre de la même année
$getGroupesUID = $this->pdo->prepare("SELECT DISTINCT g.nom, s.rang, s.nom as semestre ".
"FROM groupe as g, semestre as s, appartenance as app ".
"WHERE g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ".
"AND s.annee = :annee ".
"ORDER BY g.nom");
$getGroupesUID->execute(array(
':annee' => $annee
));
$grouplist = array(); // contiendra tout les groupes
// on parcourt tous les groupes
while( $groupeUID = $getGroupesUID->fetch() ){
$groupe = new stdClass();
$groupe->nom = $groupeUID['nom']; // attribut "nom" ajouté au groupe
$groupe->semestre = $groupeUID['semestre'];
$groupe->userlist = $this->listeEtudiantsGroupe($groupe->nom, $groupeUID['rang'], $annee); // on charge la liste des utilisateurs de ce groupe
array_push($grouplist, $groupe); // on l'ajoute au résultat
}
return $grouplist; // sinon on retourne le tableau
}
/******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
public function listeEtudiantsTousGroupesEnseignant($annee, $enseignant){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$checkAnnee = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array(
':annee' => $annee
));
// si on trouve pas, on retourne "unknown_year"
if( !( $checkAnnee->fetch()['id'] ) )
return 'unknown_year';
/*** on cherche un utilisateur avec cet identifiant ***/
$getEnseignantUID = $this->pdo->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :enseignant");
$getEnseignantUID->execute(array(
':enseignant' => $enseignant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if( $enseignantUID = $getEnseignantUID->fetch()['id'] )
$enseignantUID = $enseignantUID;
else
return 'unknown_user';
// on cherche tout les groupes du même semestre de la même année
$getGroupesUID = $this->pdo->prepare("SELECT DISTINCT g.nom, s.rang, s.nom as semestre ".
"FROM groupe as g, semestre as s, appartenance as app, enseignement as ens, mcc_ue, mcc_module as mcc_m ".
"WHERE g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ".
"AND s.annee = :annee ".
"ORDER BY g.nom");
$getGroupesUID->execute(array(
':annee' => $annee
));
$grouplist = array(); // contiendra tout les groupes
// on parcourt tous les groupes
while( $groupeUID = $getGroupesUID->fetch() ){
$groupe = new stdClass();
$groupe->nom = $groupeUID['nom']; // attribut "nom" ajouté au groupe
$groupe->semestre = $groupeUID['semestre'];
$groupe->userlist = $this->listeEtudiantsGroupe($groupe->nom, $groupeUID['rang'], $annee); // on charge la liste des utilisateurs de ce groupe
array_push($grouplist, $groupe); // on l'ajoute au résultat
}
return $grouplist; // sinon on retourne le tableau
}
/***********************************************/
/*** retourne le nom du groupe d'un étudiant ***/

View File

@ -92,9 +92,9 @@ require_once __ROOT__.'/manager/database.php';
break;
/************************************************/
/* retourne les utilisateurs de tous les groupe */
/************************************************/
/*******************************************************************/
/* retourne les utilisateurs de tous les groupes du semestre donné */
/*******************************************************************/
case 'grouplist':
$areSetParam = isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
@ -103,7 +103,52 @@ require_once __ROOT__.'/manager/database.php';
if( $anneeCheck ){
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupes($request->semestre, $request->annee);
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesSemestre($request->semestre, $request->annee);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist;
$answer->request = 'success';
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur
$answer->answer = $grouplist;
}else
return 'param_error';
break;
/*****************************************************************************/
/* retourne les utilisateurs de tous les groupes des modules d'un enseignant */
/*****************************************************************************/
case 'grouplistForTeacher':
$areSetParam = isset($request->annee) && isset($request->enseignant); // les arguments existent
$typeOkParam = $areSetParam && is_numeric($request->annee) && is_string($request->enseignant); // si c'est des strings
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
$enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format
if( $enseignantCheck ){
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $request->enseignant);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist;
$answer->request = 'success';
}else // si on a pas récupéré de liste, alors c'est que $grouplist est un message d'erreur
$answer->answer = $grouplist;
}else
return 'param_error';
break;
/*******************************************************************/
/* retourne les utilisateurs de tous les groupes d'une année donnée*/
/*******************************************************************/
case 'grouplistForYear':
$areSetParam = isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist;

View File

@ -50,7 +50,7 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
dnd.setDroppable(groups[i]);
dnd.init(function(input, output){ // on demande un déplacement
var id_etudiant = input.children[0].innerHTML;
var id_etudiant = input.children[0].children[0].innerHTML;
var nom_groupe = output.children[0].innerHTML;
var request = { // on définit la requête pour API

View File

@ -53,9 +53,9 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
foreach($module['notes'] as $note){
echo '<tr>';
echo "<td><span class=link>".$note['module']." - ".$note['modulelib']."</span></td>";
echo '<td>'.$note['intitule'].'</td>';
echo '<td>'.$note['valeur']." <span style='color:#aaa;'>/</span> ".$note['base'].'</td>';
echo '<td>'.$note['coefficient'].'</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 '.$note['coefficient'].'</td>';
echo '</tr>';
}
echo '</tbody>';
@ -107,8 +107,8 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
foreach($UE['notes'] as $note){
echo '<tr>';
echo "<td><span class=link>".$note['module']." - ".$note['modulelib']."</span></td>";
echo '<td>'.$note['intitule'].'</td>';
echo '<td>'.$note['valeur']." <span style='color:#aaa;'>/</span> ".$note['base'].'</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>'.$note['coefficient'].'</td>';
echo '</tr>';
}

View File

@ -15,67 +15,142 @@ require_once __ROOT__.'/manager/groups.php';
*
*****************************************/
?>
<section name='allgroups' title='tous les groupes' class='basic'>
<?php if( $_SESSION['identifiant'] != null ){ // si connecté
/************************/
/*** TOUS LES GROUPES ***/
/************************/
/*
* UTILISATEUR -> affichage du même semestre
*
*
*/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si connecté && utilisateur
echo "<section name='allgroups' title='tous les groupes' class='basic'>";
$request = new stdClass();
$answer = new stdClass();
$request = new stdClass();
$answer = new stdClass();
$request->level_1 = 'grouplist';
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
$request->level_1 = 'grouplist';
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer);
groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<table class='basic col4'><thead><tr>";
echo '<th>Identifiant</td>';
echo '<th>Prenom</td>';
echo '<th>Nom</td>';
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
if( $answer->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>';
echo '<th>Prenom</td>';
echo '<th>Nom</td>';
echo '<th>Semestre</td>';
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
foreach($answer->grouplist as $group){ // pour chaque groupe
foreach($answer->grouplist as $group){ // pour chaque groupe
if( count($group->userlist) > 0 ){ // s'il y a des utilisateurs
if( count($group->userlist) > 0 ){ // s'il y a des utilisateurs
echo "<table class='basic margin col4'>";
echo "<table class='basic margin col5'>";
echo '<tbody>';
echo '<tbody>';
// pour chaque utilisateur
foreach($group->userlist as $user){
echo '<tr>';
echo "<td>".$user['identifiant'].'</td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td>Groupe <span>'.$group->nom.'</span></td>';
echo '</tr>';
}
// pour chaque utilisateur
foreach($group->userlist as $user){
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td>'.$group->semestre.'</td>';
echo '<td>Groupe <span class=stressed>'.$group->nom.'</span></td>';
echo '</tr>';
}
// echo '<tr><td colspan=5 class=more></td></tr>';
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</tbody>';
echo '</table>';
echo '</table>';
}
}
////////////////////////////////////////////////////////
}else
echo "Erreur interne...";
}
////////////////////////////////////////////////////////
}else
echo "Erreur interne...";
echo '</section>';
}
/************************/
/*** TOUS LES GROUPES ***/
/************************/
/*
* PROFESSEUR -> affichage des semestres en cours
* ADMINISTRATEUR -> affichage des semestres en cours
*
*
*/
if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_SESSION['droits'] == 'admin') ){ // si connecté && prof ou admin
echo "<section name='allgroups' title='tous les groupes' class='basic'>";
} ?>
</section>
$request = new stdClass();
$answer = new stdClass();
$request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>';
echo '<th>Prenom</td>';
echo '<th>Nom</td>';
echo '<th>Semestre</td>';
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
foreach($answer->grouplist as $group){ // pour chaque groupe
if( count($group->userlist) > 0 ){ // s'il y a des utilisateurs
echo "<table class='basic margin col5'>";
echo '<tbody>';
// pour chaque utilisateur
foreach($group->userlist as $user){
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td>'.$group->semestre.'</td>';
echo '<td>Groupe <span class=stressed>'.$group->nom.'</span></td>';
echo '</tr>';
}
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>';
}
}
////////////////////////////////////////////////////////
}else
echo "Erreur interne...";
echo '</section>';
} ?>
@ -91,6 +166,11 @@ require_once __ROOT__.'/manager/groups.php';
/******************/
/*** MON GROUPE ***/
/******************/
/*
*
* ETUDIANT -> son groupe de son semestre
*
*/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='mygroup' title='Mon groupe' class='basic'>";
@ -124,15 +204,16 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
echo '</tr>';
echo '</thead></table>';
echo "<table class='basic col4'><tbody>";
echo "<table class='basic col5'><tbody>";
// pour chaque utilisateur
foreach($answer->userlist as $user){
echo '<tr>';
echo "<td>".$user['identifiant'].'</td>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td>Groupe <span>'.$monGroupe.'</span></td>';
echo '<td>'.$user['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$monGroupe.'</span></td>';
echo '</tr>';
}
@ -152,6 +233,72 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
<!-- mon groupe -->
<?php
/******************/
/*** MON GROUPE ***/
/******************/
/*
*
* PROFESSEUR -> les groupes inscrits aux modules qu'il enseigne
*
*/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='mygroup' title='Mon groupe' class='basic'>";
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<table class='basic col1'><thead>";
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe '.$monGroupe;
echo '</th>';
echo '</tr>';
echo '</thead></table>';
echo "<table class='basic col5'><tbody>";
// pour chaque utilisateur
foreach($answer->userlist as $user){
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td>'.$user['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$monGroupe.'</span></td>';
echo '</tr>';
}
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>';
////////////////////////////////////////////////////////////////////////////////
}else
echo "Erreur interne.";
echo '</section>';
} ?>
<!-- DEPLACEMENT D'ELEVES -->
<?php
@ -166,7 +313,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'admin' ){ // si
$request = new stdClass();
$answer = new stdClass();
$request->level_1 = 'grouplist';
$request->level_1 = 'grouplistForYear';
$request->semestre = $i;
$request->annee = $_SESSION['annee'];
@ -199,7 +346,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'admin' ){ // si
// pour chaque utilisateur
foreach($group->userlist as $user){
echo '<tr>';
echo "<td>".$user['identifiant'].'</td>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td><strong><span>'.$group->nom.'</span></strong></td>';

View File

@ -1,7 +1,7 @@
{
"eleve1": {
"permissions": "student",
"password" : "eleve1password"
"password" : "password"
},
"mrd1609a": {
@ -11,27 +11,27 @@
"eleve2": {
"permissions": "student",
"password" : "eleve2password"
"password" : "password"
},
"prof1": {
"lbh1609a": {
"permissions": "teacher",
"password" : "prof1password"
"password" : "password"
},
"prof2": {
"permissions": "master",
"password" : "prof2password"
"password" : "password"
},
"admin1": {
"permissions": "admin",
"password" : "admin1password"
"password" : "password"
},
"admin2": {
"permissions": "admin",
"password" : "admin2password"
"password" : "password"
}
}