From 26fe68da79387a72c4036fcfd7c41e4bf18dcc59 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 17 Nov 2015 08:46:39 +0100 Subject: [PATCH] =?UTF-8?q?Suppression=20des=20param=C3=A8tres=20optionnel?= =?UTF-8?q?s=20(=C3=A9vitent=20de=20tout=20charger=20+=20les=20donn=C3=A9e?= =?UTF-8?q?s=20affin=C3=A9es)=20donc=20maintenant=20on=20charge=20tout,=20?= =?UTF-8?q?mais=20une=20fois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/database.php | 23 ++++------------------- manager/groups.php | 31 +++---------------------------- manager/repo/group.php | 40 +++++++++------------------------------- 3 files changed, 16 insertions(+), 78 deletions(-) diff --git a/manager/database.php b/manager/database.php index af5c681..598f0a1 100755 --- a/manager/database.php +++ b/manager/database.php @@ -215,14 +215,7 @@ class DataBase{ /******************************************************************/ /*** retourne la liste des utilisateurs des groupes d'une année ***/ /******************************************************************/ - 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) - - $groupeOpt = '%'; - if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit - + public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){ /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ $checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); $checkAnnee->execute(array( ':annee' => $annee )); @@ -230,7 +223,7 @@ class DataBase{ // on récupère la liste des groupes - $grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee, $pSemestre, $pGroupe) ); + $grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee) ); 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']); @@ -242,15 +235,7 @@ class DataBase{ /******************************************************************/ /*** retourne la liste des utilisateurs des groupes d'une année ***/ /******************************************************************/ - 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) - - $groupeOpt = '%'; - if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit - - + public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant){ /*** 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 )); @@ -261,7 +246,7 @@ class DataBase{ // on récupère la liste des groupes - $grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee, $pSemestre, $pGroupe) ); + $grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee) ); 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']); diff --git a/manager/groups.php b/manager/groups.php index b024c58..7c252a5 100755 --- a/manager/groups.php +++ b/manager/groups.php @@ -168,20 +168,9 @@ require_once __ROOT__.'/manager/database.php'; $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format - // paramètres optionnels - $optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre); - $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); - - // définition (ou pas) des paramètres optionnels - if( $optionalSemestre ) $semestre = $request->semestre; - else $semestre = null; - - if( $optionalGroupe ) $groupe = $request->groupe; - else $groupe = null; - if( $enseignantCheck ){ - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant, $semestre, $groupe); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant); if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs $answer->grouplist = $grouplist; @@ -205,24 +194,10 @@ require_once __ROOT__.'/manager/database.php'; $typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format - - // paramètres optionnels - $optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre); - $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); - - // définition (ou pas) des paramètres optionnels - if( $optionalSemestre ) $semestre = $request->semestre; - else $semestre = null; - - if( $optionalGroupe ) $groupe = $request->groupe; - else $groupe = null; - - - if( $anneeCheck ){ - // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair'], $semestre, $groupe); - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null, $semestre, $groupe); + // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null); if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs $answer->grouplist = $grouplist; diff --git a/manager/repo/group.php b/manager/repo/group.php index 6177eef..a34f5f2 100755 --- a/manager/repo/group.php +++ b/manager/repo/group.php @@ -227,25 +227,17 @@ 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 + * @semestre_pair VRAI si le semestre courant est pair (***OPTIONNEL***) * @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; } + public static function forTeacher($enseignant, $semestre_pair, $annee){ - // si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous - $groupeOpt = '%'; - if( $pGroupe != null ){ $groupeOpt = $pGroupe; } - + $semestrePair0 = '0'; $semestrePair1 = '1'; + if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; } $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation ". "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, formation as f ". @@ -263,13 +255,11 @@ class groupRepo extends DBAccess{ "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.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ". "AND s.annee = :annee ". "ORDER BY s.rang, g.nom"); - $getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); + $getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee )); return DataBase::delNumeric( $getGroupeList->fetchAll() ); } @@ -307,27 +297,17 @@ class groupRepo extends DBAccess{ /* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE * - * @semestre_pair VRAI si le semestre courant est pair + * @semestre_pair VRAI si le semestre courant est pair (***OPTIONNEL***) * @annee L'année en cours * - * @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 forYear($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; } + public static function forYear($semestre_pair, $annee){ $semestrePair0 = '0'; $semestrePair1 = '1'; - if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; } + if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; } $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation ". "FROM groupe as g, semestre as s, appartenance as app, formation as f ". @@ -335,8 +315,6 @@ class groupRepo extends DBAccess{ "AND g.id_groupe = app.id_groupe ". "AND s.id_semestre = app.id_semestre ". - "AND g.nom LIKE '".$groupeOpt."' ". - "AND s.nom LIKE '".$semestreOpt."' ". "AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ". "AND s.annee = :annee ". "ORDER BY g.nom");