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'; return 'error';
} }
/******************************************************/ /******************************************************************/
/*** retourne la liste des utilisateurs d'un groupe ***/ /*** retourne la liste des utilisateurs du groupe d'un étudiant ***/
/******************************************************/ /******************************************************************/
public function listeEtudiantsGroupe($formation, $groupe, $semestre, $annee){ public function listeEtudiantsGroupe($etudiant, $formation, $semestre, $annee){
// on vérifie que le groupe et le semestre existent // 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( !($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 // 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 *****/ /***** 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') ){ case 'userlist': if( permission('student') ){
$areSetParam = isset($request->groupe) && isset($request->semestre) && isset($request->annee) && isset($request->formation); // les arguments existent $areSetParam = isset($request->etudiant) && 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 $typeOkParam = $areSetParam && is_string($request->etudiant) && 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 $etudiantCheck = $typeOkParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
$groupeCheck = $nEmptyParam && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format $formationCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->formation); // formation (formation) 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
$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
$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
$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 if( is_array($userlist) ){ // si on a récupéré la liste des utilisateurs
$answer->userlist = $userlist; $answer->userlist = $userlist;
@ -226,32 +225,6 @@ require_once __ROOT__.'/manager/database.php';
$answer->request = 'permission_error'; $answer->request = 'permission_error';
break; 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 */ /* 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 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'; if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
$request->etudiant = $_SESSION['identifiant']; ////////////////////////////////////////////////////////////////////////////////
$request->semestre = $_SESSION['semestre']; echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'>";
$request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer); echo "<table class='basic col1'><thead>";
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe '.$answer->userlist['groupe'];
echo '</th>';
echo '</tr>';
echo '</thead></table>';
if( $answer->request == 'success' ){ // si pas d'erreur echo "<table class='basic col5'><tbody>";
$monGroupe = $answer->groupe;
$request = new stdClass(); $answer = new stdClass(); // pour chaque utilisateur
$request->level_1 = 'userlist'; foreach($answer->userlist as $user){ if( $user != $answer->userlist['groupe'] ){
$request->formation = $_SESSION['formation']; echo '<tr>';
$request->groupe = $monGroupe; echo "<td><span class=link>".$user['identifiant'].'</span></td>';
$request->semestre = $_SESSION['semestre']; echo '<td>'.$user['prenom'].'</td>';
$request->annee = $_SESSION['annee']; echo '<td>'.$user['nom'].'</td>';
groups_switch_level_1($request, $answer); echo '<td>'.$user['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$answer->userlist['groupe'].'</span></td>';
echo '</tr>';
}}
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe // echo '<tr><td colspan=5 class=more></td></tr>';
////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'>";
echo "<table class='basic col1'><thead>"; echo '</tbody></table>';
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></table>';
echo '</section>'; echo '</section>';
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
}else }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 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>'; echo '</section>';
} ?> } ?>