sid/manager/repo/ue.php

178 lines
6.0 KiB
PHP
Raw Normal View History

<?php require_once __ROOT__.'/manager/security.php';
/**************************************************/
/* _ _ _____ ____ _____ ____ ___ */
/* | | | | ____| | _ \| ____| _ \ / _ \ */
/* | | | | _| | |_) | _| | |_) | | | | */
/* | |_| | |___ | _ <| |___| __/| |_| | */
/* \___/|_____| |_| \_\_____|_| \___/ */
/* */
/**************************************************/
class ueRepo extends DBAccess{
/* VERIFIE L'EXISTENCE D'UN UE DANS LA BDD
*
* @nom<String> le nom de l'UE recherchée
*
* @return UID<int> si l'UE est dans la BDD, retourne son UID
* @return FALSE<Boolean> FAUX si l'UE' n'est pas présent dans la BDD
*
*/
public static function UID($nom){
2015-11-11 20:53:33 +00:00
$getUEUID = DataBase::getPDO()->prepare("SELECT DISTINCT id_ue as id FROM ue WHERE nom = :nom");
$getUEUID->execute(array( ':nom' => $nom ));
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID du module
return $getUEUID->fetch()['id'];
}
/* RENVOIE LES INFORMATIONS D'UN UE D'UID DONNÉ
*
* @UEUID<int> l'UID de l'UE duquel on veut les infos
*
* @return UE<Array> tableau associatif contenant tout les champs de la BDD pour cet UE
*
*/
public static function info($UEUID){
2015-11-11 20:53:33 +00:00
$getUEInfo = DataBase::getPDO()->prepare("SELECT DISTINCT id_ue as id, nom, libelle FROM ue WHERE id_ue = :UEUID");
$getUEInfo->execute(array( ':UEUID' => $UEUID ));
// on retourne le résultat en supprimant les doublons à indices numériques
return $getUEInfo->fetch();
}
/* RENVOIE LA LISTE DES UEs QU'A UN ETUDIANT POUR UN SEMESTRE
*
* @etudiant<String> Identifiant de l'étudiant
* @semestre<int> l'UID du semestre
*
* @return UEs<Array> retourne un tableau contenant les UEs de l'utilisateur pour ce semestre
*
*/
public static function forStudent($etudiant, $semestre){
// on récupère les modules
$getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
"FROM appartenance as app, semestre as s, mcc_ue, ue ".
"WHERE app.id_semestre = s.id_semestre ".
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_ue.id_ue = ue.id_ue ".
"AND app.id_etudiant = :etudiant ".
"AND s.id_semestre = :semestre ".
"ORDER BY ue.nom, ue.libelle");
$getUesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
return DataBase::delNumeric( $getUesForStudent->fetchAll() );
}
/* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UNE ANNEE
*
* @enseignant<String> Identifiant de l'enseignant
2015-11-11 20:53:33 +00:00
* @semestre_pair<Boolean> VRAI si le semestre est pair
* @annee<int> l'année en cours
*
* @return UEs<Array> retourne un tableau contenant les UEs de l'enseignant pour cette année
*
*/
2015-11-11 20:53:33 +00:00
public static function forTeacher($enseignant, $semestre_pair, $annee){
// on récupère les modules
2015-11-11 20:53:33 +00:00
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.annee, s.rang, ue.nom, ue.libelle ".
"FROM enseignement as ens, semestre as s, ue, mcc_ue, mcc_module as mcc_m ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND ens.correcteur = 1 ". // si l'enseignant est correcteur uniquement
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
2015-11-11 20:53:33 +00:00
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_ue.id_ue = ue.id_ue ".
"AND ens.id_enseignant = :enseignant ".
2015-11-11 20:53:33 +00:00
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"ORDER BY ue.nom, ue.libelle ASC");
2015-11-11 20:53:33 +00:00
$getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getUesForTeacher->fetchAll() );
}
/* RENVOIE LA LISTE DES UEs D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
*
* @semestre_pair<Boolean> VRAI si le semestre est pair
* @annee<int> l'année en cours
*
* @return UEs<Array> retourne un tableau contenant les UEs des semestres en cours
* @return existent<Boolean> FAUX si aucun UE n'a été trouvé
*
*/
public static function forYear($semestre_pair, $annee){
// on récupère les modules
$getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, ue.nom, ue.libelle ".
"FROM ue, mcc_ue, semestre as s ".
"WHERE ue.id_ue = mcc_ue.id_ue ".
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"ORDER BY s.rang, ue.nom, ue.libelle");
$getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getUEsForYear->fetchAll() );
}
/* CREE UN NOUVEL UE DANS LA BASE DE DONNES
*
* @nom<String> le nom du nouvel UE
* @libelle<String> le libellé du nouvel UE
*
* @return UID<String> l'UID du nouveal UE s'il a bien été créé
* @return created<Boolean> VRAI si l'UE n'existait pas déjà* et qu'il a bien été créé
* (*) Si aucun autre n'avait le même @nom
*/
public static function creer($nom, $libelle){
/* [1] On normalise les données
=================================================================================================*/
$nom = strtoupper($nom); // nom en majuscules
/* [2] On vérifie que le module n'est pas déjà créé
=================================================================================================*/
if( ueRepo::UID($nom) ) // si on a un résultat, c'est qu'un module a déjà cee nom
return false;
/* [3] On créé le nouvel UE
=================================================================================================*/
$creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) ".
"VALUES(DEFAULT, :nom, :libelle)");
$creationUE->execute(array(
':nom' => $nom,
':libelle' => $libelle
));
/* [4] On vérifie que l'UE a bien été créé
=================================================================================================*/
return ueRepo::UID($nom);
}
}