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,22 +132,10 @@ 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->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 pas d'erreur
$monGroupe = $answer->groupe;
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'userlist'; $request->level_1 = 'userlist';
$request->etudiant = $_SESSION['identifiant'];
$request->formation = $_SESSION['formation']; $request->formation = $_SESSION['formation'];
$request->groupe = $monGroupe;
$request->semestre = $_SESSION['semestre']; $request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
@ -159,7 +147,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
echo "<table class='basic col1'><thead>"; echo "<table class='basic col1'><thead>";
echo '<tr>'; echo '<tr>';
echo '<th colspan=5>'; echo '<th colspan=5>';
echo 'Groupe '.$monGroupe; echo 'Groupe '.$answer->userlist['groupe'];
echo '</th>'; echo '</th>';
echo '</tr>'; echo '</tr>';
echo '</thead></table>'; echo '</thead></table>';
@ -167,15 +155,15 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
echo "<table class='basic col5'><tbody>"; echo "<table class='basic col5'><tbody>";
// pour chaque utilisateur // pour chaque utilisateur
foreach($answer->userlist as $user){ foreach($answer->userlist as $user){ if( $user != $answer->userlist['groupe'] ){
echo '<tr>'; echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>'; echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>'; echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>'; echo '<td>'.$user['nom'].'</td>';
echo '<td>'.$user['semestre'].'</td>'; echo '<td>'.$user['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$monGroupe.'</span></td>'; echo '<td>Groupe <span class=stressed>'.$answer->userlist['groupe'].'</span></td>';
echo '</tr>'; echo '</tr>';
} }}
// echo '<tr><td colspan=5 class=more></td></tr>'; // echo '<tr><td colspan=5 class=more></td></tr>';
@ -186,8 +174,6 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
}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>';
} ?> } ?>