diff --git a/manager/database.php b/manager/database.php index d052e19..6895310 100755 --- a/manager/database.php +++ b/manager/database.php @@ -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 - } diff --git a/manager/repo/group.php b/manager/repo/group.php index 736babb..997d930 100755 --- a/manager/repo/group.php +++ b/manager/repo/group.php @@ -202,6 +202,56 @@ class groupRepo extends DBAccess{ + /* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE + * + * @enseignant l'UID de l'enseignant recherché + * @semestre_pair VRAI si le semestre courant est pair + * @annee l'année recherchée + * + * @pSemestre ***OPTIONNEL*** le nom du semestre + * @pGroupe ***OPTIONNEL*** le nom du groupe + * + * + * @return groupes 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 VRAI si le semestre courant est pair diff --git a/page/groups.php b/page/groups.php index 7fdc2c4..291f9c3 100755 --- a/page/groups.php +++ b/page/groups.php @@ -328,14 +328,14 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un echo ""; @@ -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 "'; + if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné + echo "'; else - echo "'; + echo "'; - $lastGroupe = $group->nom; + $lastGroupe = $group['nom']; } } echo "