Suppression des paramètres optionnels (évitent de tout charger + les données affinées) donc maintenant on charge tout, mais une fois

This commit is contained in:
xdrm-brackets 2015-11-17 08:46:39 +01:00
parent 6efa758cab
commit 26fe68da79
3 changed files with 16 additions and 78 deletions

View File

@ -215,14 +215,7 @@ class DataBase{
/******************************************************************/ /******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/ /*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/ /******************************************************************/
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair, $pSemestre=null, $pGroupe=null){ // pSemestre/pGroupe optionnels public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){
// 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
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ /*** 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 = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array( ':annee' => $annee )); $checkAnnee->execute(array( ':annee' => $annee ));
@ -230,7 +223,7 @@ class DataBase{
// on récupère la liste des groupes // 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 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']); $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 ***/ /*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/ /******************************************************************/
public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant, $pSemestre, $pGroupe){ public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant){
// 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
/*** on cherche un semestre avec cette année ***/ /*** on cherche un semestre avec cette année ***/
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); $checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array( ':annee' => $annee )); $checkAnnee->execute(array( ':annee' => $annee ));
@ -261,7 +246,7 @@ class DataBase{
// on récupère la liste des groupes // 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 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']); $grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);

View File

@ -168,20 +168,9 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $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 $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 ){ 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 if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist; $answer->grouplist = $grouplist;
@ -205,24 +194,10 @@ require_once __ROOT__.'/manager/database.php';
$typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings $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 $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 ){ if( $anneeCheck ){
// $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair'], $semestre, $groupe); // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']);
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null, $semestre, $groupe); $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist; $answer->grouplist = $grouplist;

View File

@ -227,25 +227,17 @@ class groupRepo extends DBAccess{
/* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE /* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE
* *
* @enseignant<String> l'UID de l'enseignant recherché * @enseignant<String> l'UID de l'enseignant recherché
* @semestre_pair<Boolean> VRAI si le semestre courant est pair * @semestre_pair<Boolean> VRAI si le semestre courant est pair (***OPTIONNEL***)
* @annee<int> l'année recherchée * @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 * @return groupes<Array> retourne la liste des groupes correspondant aux critères
* *
*/ */
public static function forTeacher($enseignant, $semestre_pair, $annee, $pSemestre=null, $pGroupe=null){ public static function forTeacher($enseignant, $semestre_pair, $annee){
// 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 $semestrePair0 = '0'; $semestrePair1 = '1';
$groupeOpt = '%'; if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; }
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, f.id_formation, f.code as formation, f.nom as nom_formation ". $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 ". "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_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ". "AND app.id_groupe = g.id_groupe ".
"AND g.nom LIKE '".$groupeOpt."' ".
"AND s.nom LIKE '".$semestreOpt."' ".
"AND u.identifiant = :enseignant ". "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 ". "AND s.annee = :annee ".
"ORDER BY s.rang, g.nom"); "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() ); return DataBase::delNumeric( $getGroupeList->fetchAll() );
} }
@ -307,27 +297,17 @@ class groupRepo extends DBAccess{
/* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE /* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE
* *
* @semestre_pair<Boolean> VRAI si le semestre courant est pair * @semestre_pair<Boolean> VRAI si le semestre courant est pair (***OPTIONNEL***)
* @annee<int> L'année en cours * @annee<int> L'année en cours
* *
* @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 * @return groupes<Array> retourne la liste des groupes correspondant aux critères
* *
*/ */
public static function forYear($semestre_pair, $annee, $pSemestre=null, $pGroupe=null){ public static function forYear($semestre_pair, $annee){
// 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; }
$semestrePair0 = '0'; $semestrePair1 = '1'; $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 ". $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 ". "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 g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ". "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.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
"AND s.annee = :annee ". "AND s.annee = :annee ".
"ORDER BY g.nom"); "ORDER BY g.nom");