2015-11-09 21:05:57 +00:00
< ? php require_once __ROOT__ . '/manager/security.php' ;
/**************************************************************************************/
/* ____ _____ __ __ _____ ____ _____ ____ _____ ____ _____ ____ ___ */
/* / ___|| ____| \/ | ____/ ___|_ _| _ \| ____| | _ \| ____| _ \ / _ \ */
/* \___ \| _| | |\/| | _| \___ \ | | | |_) | _| | |_) | _| | |_) | | | | */
/* ___) | |___| | | | |___ ___) || | | _ <| |___ | _ <| |___| __/| |_| | */
/* |____/|_____|_| |_|_____|____/ |_| |_| \_\_____| |_| \_\_____|_| \___/ */
/* */
/**************************************************************************************/
2015-11-10 08:17:41 +00:00
class semestreRepo extends DBAccess {
2015-11-09 21:05:57 +00:00
/* VERIFIE L 'EXISTENCE D' UN GROUPE DANS LA BDD
*
* @ rang < int > le rang du semestre dans le parcours ( 1 <=> S1 , 2 <=> S2 , .. )
* @ annee < int > l ' année du début du parcours
*
*
* @ return UID < int > si le semestre est dans la BDD , retourne son UID ( auto_incr )
* @ return FALSE < Boolean > FAUX si aucun semestre avec ce rang et annee n ' est pas présent dans la BDD
*
*/
public static function UID ( $rang , $annee ){
// si les 2 ne sont pas des nombres (même dans une string)
if ( ! is_numeric ( $rang ) || ! is_numeric ( $annee ) )
return false ; // aucun résultat possible
/*** on cherche un semestre avec ce rang et cette année (qui est forcément unique) ***/
2015-11-10 09:50:43 +00:00
$getSemestreUID = DataBase :: getPDO () -> prepare ( " SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee " );
2015-11-09 21:05:57 +00:00
$getSemestreUID -> execute ( array (
':rang' => $rang ,
':annee' => $annee
));
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID du semestre
return $getSemestreUID -> fetch ()[ 'id' ];
}
2015-11-10 23:04:56 +00:00
2015-11-10 09:50:43 +00:00
/* RENVOIE LES INFORMATIONS D 'UN SEMESTRE D' UID DONNÉ
*
* @ semestreUID < int > l ' UID du semestre duquel on veut les infos
*
* @ return semestre < Array > tableau associatif contenant tout les champs de la BDD pour ce semestre
*
*/
public static function info ( $semestreUID ){
// on considère que le semestre existe
2015-11-16 11:42:36 +00:00
$getSemestreInfo = DataBase :: getPDO () -> prepare ( " SELECT s.id_semestre as s.id, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee " .
" FROM semestre as s, formation as f " .
" WHERE s.formation = f.id_formation " .
" AND id_semestre = :semestreUID " );
2015-11-11 14:50:05 +00:00
$getSemestreInfo -> execute ( array ( ':semestreUID' => $semestreUID ));
2015-11-10 09:50:43 +00:00
// on retourne le résultat en supprimant les doublons à indices numériques
2015-11-11 14:50:05 +00:00
return $getSemestreInfo -> fetch ();
2015-11-10 09:50:43 +00:00
}
2015-11-09 21:05:57 +00:00
/* retourne le semestre courant d ' un étudiant
*
* @ etudiant < String > l 'identifiant (UID) de l' étudiant à ajouter au groupe
*
2015-11-10 09:50:43 +00:00
* @ return etudie < Boolean > FALSE si l 'étudiant n' est dans aucun semestre en cours
2015-11-09 21:05:57 +00:00
* @ return semestreUID < int > l ' UID du semestre courant
*
*/
2015-11-11 21:54:52 +00:00
public static function forStudent ( $etudiant , $semestre_pair , $annee ){
2015-11-10 09:50:43 +00:00
// on formate les variables
2015-11-10 09:56:43 +00:00
$semestre_pair = ( $semestre_pair ) ? '0' : '1' ;
2015-11-10 09:50:43 +00:00
2015-11-16 11:42:36 +00:00
$getSemestreUID = DataBase :: getPDO () -> prepare ( " SELECT s.id_semestre as id, f.code as formation, f.nom as nom_formation " .
" FROM semestre as s, appartenance as app, formation as f " .
" WHERE s.formation = f.id_formation " .
" AND app.id_semestre = s.id_semestre " .
2015-11-10 09:50:43 +00:00
" AND app.id_etudiant = :etudiant " .
" AND s.annee = :annee " .
" AND s.rang % 2 = :semestre_pair " .
" ORDER BY s.rang DESC " );
$getSemestreUID -> execute ( array (
':etudiant' => $etudiant ,
':annee' => $annee ,
':semestre_pair' => $semestre_pair
));
// on retourne l'UID du semestre courant
return $getSemestreUID -> fetch ()[ 'id' ];
}
2015-11-09 21:05:57 +00:00
2015-11-16 12:28:24 +00:00
/* retourne la liste des semestres qu ' à un enseignant
*
* @ enseignant < String > l 'UID de l' enseignant en question
* @ semestre_pair < Boolean > VRAI si le semestre en cours est pair
* @ annee < int > l ' année en question
*
*
* @ return semestres < Array > retourne la liste des semestres répondant aux critères
* @ return FALSE < Boolean > retourne FALSE si aucun semestre ne correspond aux critères
*
*/
public static function forTeacher ( $enseignant , $semestre_pair , $annee ){
$getSemestreList = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT s.id_semestre as id, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee " .
" FROM semestre as s, formation as f, enseignement as ens, mcc_module as mcc_m, mcc_ue " .
" WHERE s.id_semestre = mcc_ue.id_semestre " . // semestre <-> mcc_ue
" AND s.formation = f.id_formation " . // semestre <-> formation
" AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue " . // mcc_ue <-> mcc_module
" AND mcc_m.id_mcc_module = ens.id_mcc_module " . // mcc_module <-> enseignement
" AND ens.id_enseignant = :enseignant " .
" AND s.rang % 2 = :semestre_pair " .
" AND s.annee = :annee " .
" ORDER BY s.rang ASC " );
$getSemestreList -> execute ( array ( ':enseignant' => $enseignant , ':semestre_pair' => ( $semestre_pair ) ? '0' : '1' , ':annee' => $annee ));
return DataBase :: delNumeric ( $getSemestreList -> fetchAll () );
}
2015-11-16 11:02:03 +00:00
/* retourne la liste des semestres d ' une année
*
* @ annee < int > l ' année en question
*
*
* @ return semestres < Array > retourne la liste des semestres de cette année
* @ return FALSE < Boolean > retourne FALSE si aucun semestre ne correspond aux critères
*
*/
public static function forYear ( $annee ){
2015-11-16 12:28:24 +00:00
$getSemestreList = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT s.id_semestre as id, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee " .
2015-11-16 11:42:36 +00:00
" FROM semestre as s, formation as f " .
" WHERE s.formation = f.id_formation " .
" AND annee = :annee " .
2015-11-16 11:02:03 +00:00
" ORDER BY rang ASC " );
$getSemestreList -> execute ( array ( ':annee' => $annee ));
return DataBase :: delNumeric ( $getSemestreList -> fetchAll () );
}
2015-11-09 21:05:57 +00:00
}