sid/manager/repo/semestre.php

103 lines
3.4 KiB
PHP
Executable File

<?php require_once __ROOT__.'/manager/security.php';
/**************************************************************************************/
/* ____ _____ __ __ _____ ____ _____ ____ _____ ____ _____ ____ ___ */
/* / ___|| ____| \/ | ____/ ___|_ _| _ \| ____| | _ \| ____| _ \ / _ \ */
/* \___ \| _| | |\/| | _| \___ \ | | | |_) | _| | |_) | _| | |_) | | | | */
/* ___) | |___| | | | |___ ___) || | | _ <| |___ | _ <| |___| __/| |_| | */
/* |____/|_____|_| |_|_____|____/ |_| |_| \_\_____| |_| \_\_____|_| \___/ */
/* */
/**************************************************************************************/
class semestreRepo extends DBAccess{
/* 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) ***/
$getSemestreUID = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE rang = :rang AND annee = :annee");
$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'];
}
/* 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
$getSemestreInfo = DataBase::getPDO()->prepare("SELECT * FROM semestre WHERE id_semestre = :semestreUID");
$getSemestreInfo->execute(array(
':semestreUID' => $semestreUID
));
// on retourne le résultat en supprimant les doublons à indices numériques
return DataBase::delNumeric( $getSemestreInfo->fetch() );
}
/* retourne le semestre courant d'un étudiant
*
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
*
* @return etudie<Boolean> FALSE si l'étudiant n'est dans aucun semestre en cours
* @return semestreUID<int> l'UID du semestre courant
*
*/
public static function studentCurrent($etudiant, $semestre_pair, $annee){
// on formate les variables
$semestre_pair = ($semestre_pair) ? '1' : '0';
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id ".
"FROM semestre as s, appartenance as app ".
"WHERE 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");
$getSemestreUID->execute(array(
':etudiant' => $etudiant,
':annee' => $annee,
':semestre_pair' => $semestre_pair
));
// on retourne l'UID du semestre courant
return $getSemestreUID->fetch()['id'];
}
}