Simplification d'affichage de etudiant@mon_groupe en utilisant une requête unique

This commit is contained in:
xdrm-brackets 2015-11-19 23:47:58 +01:00
parent 7228ae443f
commit 6e5e07b1e7
3 changed files with 53 additions and 107 deletions

View File

@ -191,16 +191,22 @@ class DataBase{
return 'error';
}
/******************************************************/
/*** retourne la liste des utilisateurs d'un groupe ***/
/******************************************************/
public function listeEtudiantsGroupe($formation, $groupe, $semestre, $annee){
/******************************************************************/
/*** retourne la liste des utilisateurs du groupe d'un étudiant ***/
/******************************************************************/
public function listeEtudiantsGroupe($etudiant, $formation, $semestre, $annee){
// on vérifie que le groupe et le semestre existent
if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID;
if( !($semestreUID=semestreRepo::UID($formation, $semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
if( !($groupeObj=groupRepo::forStudent($etudiantUID, $semestreUID)) ) return 'unknown_group';
$userlist = DataBase::delNumeric( groupRepo::membres($groupeObj['id'], $semestreUID) );
$userlist['groupe'] = $groupeObj['nom'];
// foreach($userlist as $iter=>$user)
// $userlist[$iter]['groupe'] = $groupeObj['nom'];
// on retourne la liste des utilisateurs et on supprime les doublons à indices numériques
return DataBase::delNumeric( groupRepo::membres($groupeUID, $semestreUID) );
return $userlist;
}
@ -277,25 +283,6 @@ class DataBase{
}
/***********************************************/
/*** retourne le nom du groupe d'un étudiant ***/
/***********************************************/
public function getGroupeEtudiant($etudiant, $formation, $semestre, $annee){
// on vérifie que le semestre et l'utilisateur existent
if( !($semestreUID=semestreRepo::UID($formation, $semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
// on retourne le nom
if( $groupeObj = groupRepo::forStudent($etudiantUID, $semestreUID) )
return $groupeObj['nom'];
else // si on a pas trouvé de groupe pour cet étudiant à ce semestre
return 'unknown_group';
}
/******************************************************/
/***** déplace un étudiant d'un groupe à un autre *****/

View File

@ -80,16 +80,15 @@ require_once __ROOT__.'/manager/database.php';
/*****************************************/
case 'userlist': if( permission('student') ){
$areSetParam = isset($request->groupe) && isset($request->semestre) && isset($request->annee) && isset($request->formation); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->groupe) && is_numeric($request->semestre) && is_numeric($request->annee) && is_numeric($request->formation); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->groupe) > 0; // d'au moins 1 caractère
$groupeCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
$formationCheck = $groupeCheck && preg_match('/^[1-4]{1}$/i', $request->formation); // formation (formation) bon format
$semestreCheck = $formationCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee) && isset($request->formation); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->semestre) && is_numeric($request->annee) && is_numeric($request->formation); // si c'est des strings
$etudiantCheck = $typeOkParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
$formationCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->formation); // formation (formation) bon format
$semestreCheck = $formationCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) 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
$userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->formation, $request->groupe, $request->semestre, $request->annee);
$userlist = DataBase::getInstance()->listeEtudiantsGroupe($request->etudiant, $request->formation, $request->semestre, $request->annee);
if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs
$answer->userlist = $userlist;
@ -226,32 +225,6 @@ require_once __ROOT__.'/manager/database.php';
$answer->request = 'permission_error';
break;
/**********************************************/
/* retourne le nom du groupe d'un utilisateur */
/**********************************************/
case 'get': if( permission('student') ){
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->semestre) && is_numeric($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0; // d'au moins 1 caractère
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
$semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
$groupe = DataBase::getInstance()->getGroupeEtudiant($request->etudiant, $_SESSION['formation'], $request->semestre, $request->annee);
if( $groupe != 'error' ){ // si on a récupéré quelque chose
$answer->groupe = $groupe;
$answer->request = 'success';
}else // si on a pas "success", alors c'est que $groupe est un message d'erreur
$answer->request = 'error';
}else
$answer->request = 'permission_error';
break;
/************************************************/
/* déplace un étudiant de son groupe à un autre */
/************************************************/

View File

@ -132,62 +132,48 @@ if( permission('student') ){ // si connecté && utilisateur
*/
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'userlist';
$request->etudiant = $_SESSION['identifiant'];
$request->formation = $_SESSION['formation'];
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer);
$request->level_1 = 'get';
$request->etudiant = $_SESSION['identifiant'];
$request->semestre = $_SESSION['semestre'];
$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 "<section name='studentsgroup' data-title='Mon groupe' class='basic'>";
if( $answer->request == 'success' ){ // si pas d'erreur
$monGroupe = $answer->groupe;
echo "<table class='basic col1'><thead>";
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe '.$answer->userlist['groupe'];
echo '</th>';
echo '</tr>';
echo '</thead></table>';
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'userlist';
$request->formation = $_SESSION['formation'];
$request->groupe = $monGroupe;
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer);
echo "<table class='basic col5'><tbody>";
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'>";
// pour chaque utilisateur
foreach($answer->userlist as $user){ if( $user != $answer->userlist['groupe'] ){
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>'.$answer->userlist['groupe'].'</span></td>';
echo '</tr>';
}}
echo "<table class='basic col1'><thead>";
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe '.$monGroupe;
echo '</th>';
echo '</tr>';
echo '</thead></table>';
// echo '<tr><td colspan=5 class=more></td></tr>';
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></table>';
echo '</tbody></table>';
echo '</section>';
////////////////////////////////////////////////////////////////////////////////
}else
echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
}else
echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
echo '</section>';
////////////////////////////////////////////////////////////////////////////////
}else
echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
echo '</section>';
} ?>