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-17 12:00:50 +00:00
$getSemestreInfo = DataBase :: getPDO () -> prepare ( " SELECT s.id_semestre as id, s.nom, s.rang, s.annee, f.id_formation, f.code as formation, f.nom as nom_formation
FROM semestre as s , formation as f
WHERE s . id_formation = f . id_formation
AND s . 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-19 13:08:40 +00:00
/* RENVOIE LA LISTE DES ANNÉES PRÉSENTES DANS LA BDD
*
* @ return annees < Array > retourne la liste des années contenues dans la bdd
* @ return FALSE < Boolean > retourne FALSE si aucune année n ' est trouvée
*
*/
public static function getAnnees (){
$getAnneesList = DataBase :: getPDO () -> query ( " SELECT DISTINCT annee FROM semestre ORDER BY annee DESC " );
return DataBase :: delNumeric ( $getAnneesList -> fetchAll () );
}
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-17 12:00:50 +00:00
$getSemestreUID = DataBase :: getPDO () -> prepare ( " SELECT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation
FROM semestre as s , appartenance as app , formation as f
WHERE s . id_formation = f . id_formation
AND app . id_semestre = s . id_semestre
AND app . id_etudiant = : etudiant
AND s . annee = : annee
AND s . rang % 2 = : semestre_pair
ORDER BY s . rang DESC " );
2015-11-10 09:50:43 +00:00
$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 ){
2015-11-17 12:00:50 +00:00
$getSemestreList = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT s.id_semestre as id, f.id_formation, 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
AND s . id_formation = f . id_formation
AND mcc_ue . id_mcc_ue = mcc_m . id_mcc_ue
AND mcc_m . id_mcc_module = ens . id_mcc_module
AND ens . id_enseignant = : enseignant
AND s . rang % 2 = : semestre_pair
AND s . annee = : annee
ORDER BY s . rang ASC " );
2015-11-16 12:28:24 +00:00
$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-17 12:00:50 +00:00
$getSemestreList = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee
FROM semestre as s , formation as f
WHERE s . id_formation = f . id_formation
AND annee = : annee
ORDER BY rang ASC " );
2015-11-16 11:02:03 +00:00
$getSemestreList -> execute ( array ( ':annee' => $annee ));
return DataBase :: delNumeric ( $getSemestreList -> fetchAll () );
}
2015-11-19 13:08:40 +00:00
/* RETOURNE LE NOMBRE D 'ÉLÈVES D' UN SEMESTRE
*
* @ semestre < int > l ' UID du semestre en question
*
*
* @ return nbEtu < int > retourne le nombre d ' étudiants du semestre
*
*/
public static function nbEtuForSemestre ( $semestre ){
$getNbEtu = DataBase :: getPDO () -> prepare ( " SELECT count(distinct id_appartenance) as nb_etudiants
FROM appartenance
WHERE id_semestre = : semestre " );
$getNbEtu -> execute ( array ( ':semestre' => $semestre ));
if ( ! ( $nb = $getNbEtu -> fetch ()) )
return 0 ; // si on en trouve pas, on retourne 0
else
return ( int ) $nb [ 'nb_etudiants' ]; // sinon on retourne le nombre
}
2015-11-09 21:05:57 +00:00
}