140 lines
5.6 KiB
PHP
Executable File
140 lines
5.6 KiB
PHP
Executable File
<?php require_once __ROOT__.'/manager/security.php';
|
|
|
|
/*************************************************************/
|
|
/* _ _ ___ _____ _____ ____ _____ ____ ___ */
|
|
/* | \ | |/ _ \_ _| ____| | _ \| ____| _ \ / _ \ */
|
|
/* | \| | | | || | | _| | |_) | _| | |_) | | | | */
|
|
/* | |\ | |_| || | | |___ | _ <| |___| __/| |_| | */
|
|
/* |_| \_|\___/ |_| |_____| |_| \_\_____|_| \___/ */
|
|
/* */
|
|
/*************************************************************/
|
|
|
|
class noteRepo extends DBAccess{
|
|
/* VERIFIE L'EXISTENCE D'UNE NOTE POUR UN ÉTUDIANT A UN CONTROLE
|
|
*
|
|
* @etudiant<String> l'identifiant de l'étudiant recherché
|
|
* @controle<int> l'UID du contrôle
|
|
*
|
|
* @return UID<String> si l'utilisateur est dans la BDD, retourne son UID
|
|
* @return FALSE<Boolean> FAUX si l'utilisateur n'est pas présent dans la BDD
|
|
*
|
|
*/
|
|
public static function UID($identifiant, $semestre=null, $annee=null){
|
|
if( $semestre == null && $annee == null ){ // on cherche un utilisateur avec cet identifiant
|
|
|
|
/* [1] Cas où on cherche juste si l'utilisateur existe
|
|
=============================================================*/
|
|
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant");
|
|
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant ));
|
|
|
|
}elseif( $semestre != null ){
|
|
|
|
/* [2] Cas où on cherche si un étudiant est inscrit à un semestre
|
|
==============================================================*/
|
|
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ".
|
|
"FROM utilisateur as u, appartenance as app ".
|
|
"WHERE u.identifiant = app.id_etudiant ".
|
|
"AND u.identifiant = :identifiant ".
|
|
"AND app.id_semestre = :semestre");
|
|
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
|
|
|
|
}else{
|
|
|
|
/* [2] Cas où on cherche si un enseignant enseigne l'année donnée
|
|
==============================================================*/
|
|
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ".
|
|
"FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ".
|
|
"WHERE u.identifiant = ens.id_enseignant ".
|
|
"AND ens.id_mcc_module = mcc_m.id_mcc_module ".
|
|
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
|
"AND mcc_ue.id_semestre = s.id_semestre ".
|
|
"AND s.annee = :annee ".
|
|
"AND u.identifiant = :identifiant");
|
|
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':annee' => $annee ));
|
|
|
|
}
|
|
|
|
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur
|
|
return $getUtilisateurUID->fetch()['id'];
|
|
}
|
|
|
|
|
|
|
|
|
|
/* RENVOIE LES INFORMATIONS D'UN UTILISATEUR D'UID DONNÉ
|
|
*
|
|
* @utilisateurUID<int> l'UID de l'utilisateur duquel on veut les infos
|
|
*
|
|
* @return utilisateur<Array> tableau associatif contenant tout les champs de la BDD pour cet utilisateur
|
|
*
|
|
*/
|
|
public static function info($utilisateurUID){
|
|
// on considère que le semestre existe
|
|
$getUtilisateurInfo = DataBase::getPDO()->prepare("SELECT identifiant, prenom, nom, mail, droits FROM utilisateur WHERE identifiant = :utilisateurUID");
|
|
$getUtilisateurInfo->execute(array(
|
|
':utilisateurUID' => $utilisateurUID
|
|
));
|
|
|
|
// on retourne le résultat en supprimant les doublons à indices numériques
|
|
return $getUtilisateurInfo->fetch();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* RENVOIE LES NOTES D'UN ETUDIANT POUR UN CONTROLE PARTICULIER
|
|
*
|
|
* @etudiant<String> l'UID de l'étudiant concerné
|
|
* @controle<int> l'UID du controle concerné
|
|
*
|
|
* @return notes<Array> retourne les notes d'un étudiant pour un controle particulier
|
|
*
|
|
*/
|
|
public static function forStudent($etudiant, $controle){
|
|
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, n.id_appartenance, n.id_controle, n.valeur ".
|
|
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m ".
|
|
"WHERE n.id_appartenance = app.id_appartenance ".
|
|
"AND app.id_semestre = s.id_semestre ".
|
|
"AND s.id_semestre = mcc_ue.id_semestre ".
|
|
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
|
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
|
"AND n.id_controle = ctrl.id_controle ".
|
|
|
|
"AND app.id_etudiant = :etudiant ".
|
|
"AND ctrl.id_controle = :controle ".
|
|
"ORDER BY n.valeur ASC");
|
|
$getNoteList->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
|
|
|
|
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
|
}
|
|
|
|
|
|
/* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
|
|
*
|
|
* @controle<int> l'UID du controle concerné
|
|
*
|
|
* @return notes<Array> retourne les notes des étudiants pour un controle particulier
|
|
*
|
|
*/
|
|
public static function forTeacher($controle){
|
|
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_etudiant as etudiant, n.id_note as id, n.id_appartenance, n.id_controle, n.valeur ".
|
|
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m ".
|
|
"WHERE n.id_appartenance = app.id_appartenance ".
|
|
"AND app.id_semestre = s.id_semestre ".
|
|
"AND s.id_semestre = mcc_ue.id_semestre ".
|
|
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
|
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
|
"AND n.id_controle = ctrl.id_controle ".
|
|
|
|
"AND ctrl.id_controle = :controle ".
|
|
"ORDER BY app.id_etudiant, n.valeur ASC");
|
|
$getNoteList->execute(array( ':controle' => $controle ));
|
|
|
|
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
|
}
|
|
|
|
|
|
|
|
} |