Refactor page/groups.php@teacher

This commit is contained in:
xdrm-brackets 2015-11-12 15:52:31 +01:00
parent e2466571f1
commit 06a119f43a
3 changed files with 78 additions and 71 deletions

View File

@ -218,10 +218,10 @@ class DataBase{
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair, $pSemestre=null, $pGroupe=null){ // pSemestre/pGroupe optionnels
// définition des paramètres optionnels
$semestreOpt = '%';
if( $pSemestre != null ){ $semestreOpt = $pSemestre; } // semestre donné uniquement (si param non null)
if( $pSemestre != null ) $semestreOpt = $pSemestre; // semestre donné uniquement (si param non null)
$groupeOpt = '%';
if( $pGroupe != null ){ $groupeOpt = $pGroupe; } // si le groupe est donné, on le définit
if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
@ -230,9 +230,10 @@ class DataBase{
if( !( $checkAnnee->fetch()['id'] ) ) return 'unknown_year';
// on récupère la liste des groupes
$grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee, $pSemestre, $pGroupe) );
foreach($grouplist as $iter=>$val)
foreach($grouplist as $iter=>$val) // pour chaque groupe un récupère la liste des utilisateurs
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);
return $grouplist; // sinon on retourne le tableau
@ -245,72 +246,28 @@ class DataBase{
public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant, $pSemestre, $pGroupe){
// définition des paramètres optionnels
$semestreOpt = '%';
if( $pSemestre != null ){ $semestreOpt = $pSemestre; } // semestre donné uniquement (si param non null)
if( $pSemestre != null ) $semestreOpt = $pSemestre; // semestre donné uniquement (si param non null)
$groupeOpt = '%';
if( $pGroupe != null ){ $groupeOpt = $pGroupe; } // si le groupe est donné, on le définit
if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
/*** on cherche un semestre avec cette année ***/
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array(
':annee' => $annee
));
$checkAnnee->execute(array( ':annee' => $annee ));
if( !( $checkAnnee->fetch()['id'] ) ) return 'unknown_year';
// si on trouve pas, on retourne "unknown_year"
if( !( $checkAnnee->fetch()['id'] ) )
return 'unknown_year';
// on cherche si cet enseignant enseigne un semestre courant de cette année
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
// si on trouve pas, on retourne "unknown_user"
if( !($enseignantUID=userRepo::UID($enseignant)) ) return 'unknown_user';
// on récupère la liste des groupes
$grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee, $pSemestre, $pGroupe) );
// on cherche tout les groupes du même semestre de la même année
$getGroupesUID = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, s.id_semestre, s.nom as semestre, s.rang, g.nom as nom ".
"FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app ".
"WHERE mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_m.id_mcc_module = ens.id_mcc_module ".
"AND ens.id_enseignant = u.identifiant ".
"AND app.id_etudiant = eleve.identifiant ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND g.nom LIKE '".$groupeOpt."' ".
"AND s.nom LIKE '".$semestreOpt."' ".
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"AND u.identifiant = :enseignantUID ".
"ORDER BY s.rang, g.nom");
$getGroupesUID->execute(array(
// ':groupeOpt' => $groupeOpt,
// ':semestreOpt' => $semestreOpt,
':annee' => $annee,
':semestre_pair' => ($semestre_pair) ? '0' : '1',
':enseignantUID' => $enseignantUID
));
$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 = groupRepo::membres($groupeUID['id'], $groupeUID['id_semestre']); // on charge la liste des utilisateurs de ce groupe
array_push($grouplist, $groupe); // on l'ajoute au résultat
}
foreach($grouplist as $iter=>$val) // pour chaque groupe un récupère la liste des utilisateurs
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);
return $grouplist; // sinon on retourne le tableau
}

View File

@ -202,6 +202,56 @@ class groupRepo extends DBAccess{
/* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE
*
* @enseignant<String> l'UID de l'enseignant recherché
* @semestre_pair<Boolean> VRAI si le semestre courant est pair
* @annee<int> l'année recherchée
*
* @pSemestre<int> ***OPTIONNEL*** le nom du semestre
* @pGroupe<String> ***OPTIONNEL*** le nom du groupe
*
*
* @return groupes<Array> retourne la liste des groupes correspondant aux critères
*
*/
public static function forTeacher($enseignant, $semestre_pair, $annee, $pSemestre=null, $pGroupe=null){
// si le semestre est donné, on cherche uniquement celui-ci, sinon on les affiche tous
$semestreOpt = '%';
if( $pSemestre != null ){ $semestreOpt = $pSemestre; }
// si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous
$groupeOpt = '%';
if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ".
"FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app ".
"WHERE mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_m.id_mcc_module = ens.id_mcc_module ".
"AND ens.id_enseignant = u.identifiant ".
"AND app.id_etudiant = eleve.identifiant ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND g.nom LIKE '".$groupeOpt."' ".
"AND s.nom LIKE '".$semestreOpt."' ".
"AND u.identifiant = :enseignant ".
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"ORDER BY s.rang, g.nom");
$getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
}
/* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE
*
* @semestre_pair<Boolean> VRAI si le semestre courant est pair

View File

@ -328,14 +328,14 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
echo "<select name='semestre'>";
echo "<option value='*'>Tous les semestres</option>";
foreach($answer->grouplist as $group){
if( $lastSemestre == null || $lastSemestre != $group->semestre ){
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
if( $group->semestre == $semestreOpt ) // si c'est le semestre séléctionné
echo "<option value='".$group->semestre."' selected>".$group->semestre.'</option>';
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>';
else // sinon on affiche normalement
echo "<option value='".$group->semestre."'>".$group->semestre.'</option>';
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>';
$lastSemestre = $group->semestre;
$lastSemestre = $group['semestre'];
}
}
echo "<select>";
@ -348,12 +348,12 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
foreach($answer->grouplist as $group){
if( $lastGroupe == null || $lastGroupe != $group->nom ){
if( $group->nom == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$group->nom."' selected>".$group->nom.'</option>';
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>';
else
echo "<option value='".$group->nom."'>".$group->nom.'</option>';
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
$lastGroupe = $group->nom;
$lastGroupe = $group['nom'];
}
}
echo "<select>";
@ -368,7 +368,7 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
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 col5'>";
@ -376,13 +376,13 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
// pour chaque utilisateur
foreach($group->userlist as $user){
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 '<td>'.$group['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$group['nom'].'</span></td>';
echo '</tr>';
}