2015-11-11 00:06:24 +00:00
< ? 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 ();
}
2015-11-12 10:19:58 +00:00
/* RENVOIE LES NOTES D ' UN ETUDIANT POUR UN CONTROLE PARTICULIER
2015-11-11 00:06:24 +00:00
*
2015-11-12 10:19:58 +00:00
* @ 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
2015-11-11 00:06:24 +00:00
*
*/
2015-11-12 10:19:58 +00:00
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 () );
2015-11-11 00:06:24 +00:00
}
2015-11-13 23:47:11 +00:00
2015-11-14 17:33:06 +00:00
/* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
2015-11-13 18:07:36 +00:00
*
2015-11-14 17:33:06 +00:00
* [ 1 ] Par groupe si aucun groupe spécifié ( statistiques : moyenne , min , max , nb notes , ... )
* [ 2 ] Liste des élèves d ' un groupe si aucun groupe spécifié
*
*
2015-11-13 18:07:36 +00:00
* @ controle < int > l ' UID du controle concerné
*
2015-11-14 17:33:06 +00:00
* @ groupe < int > *** OPTIONNEL *** l ' UID du groupe spécifique
*
*
* @ return notes < Array > [ 1 ] retourne les stats des notes pour les groupes à ce contrôle
* [ 2 ] retourne les notes des étudiants du groupe spécifié pour ce contrôle
2015-11-13 18:07:36 +00:00
*
*/
2015-11-14 17:33:06 +00:00
public static function forTeacher ( $controle , $groupe = null ){
/* [ 1 ] Statistiques des groupes
============================================================*/
if ( ! is_int ( $groupe ) ){
2015-11-15 11:15:30 +00:00
$getNoteList = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes " .
2015-11-14 17:33:06 +00:00
" FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g " .
" WHERE n.id_appartenance = app.id_appartenance " .
" AND app.id_semestre = s.id_semestre " .
" AND app.id_groupe = g.id_groupe " .
" 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 " .
" GROUP BY g.id_groupe " .
" ORDER BY g.nom ASC " );
$getNoteList -> execute ( array ( ':controle' => $controle ));
2015-11-13 18:07:36 +00:00
2015-11-13 23:47:11 +00:00
2015-11-14 17:33:06 +00:00
/* [ 2 ] Notes des étudiants d ' un groupe
============================================================*/
} else {
$getNoteList = DataBase :: getPDO () -> prepare ( " SELECT DISTINCT n.id_note as id, g.nom as groupe, app.id_etudiant as etudiant, 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, groupe as g " .
" WHERE n.id_appartenance = app.id_appartenance " .
" AND app.id_semestre = s.id_semestre " .
" AND app.id_groupe = g.id_groupe " .
" 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 " .
" AND app.id_groupe = :groupe " .
2015-11-13 23:47:11 +00:00
2015-11-14 17:33:06 +00:00
" ORDER BY g.nom ASC " );
$getNoteList -> execute ( array ( ':controle' => $controle , ':groupe' => $groupe ));
}
2015-11-13 18:07:36 +00:00
return DataBase :: delNumeric ( $getNoteList -> fetchAll () );
}
2015-11-11 00:06:24 +00:00
}