l'UID du controle duquel on veut les infos * * @enseignant ***OPTIONNEL*** l'UID de l'enseignant * * * @return controle tableau associatif contenant tout les champs de la BDD pour ce controle * */ public static function info($controleUID, $enseignant=null){ if( $enseignant == null ){ /* [1] On cherche juste le contrôle avec l'id spécifié ============================================================*/ $getControleInfo = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id, ctrl.nom, ctrl.id_mcc_module, m.nom as module, m.libelle as modulelib, s.id_semestre, ctrl.libelle, ctrl.base, ctrl.coefficient, ctrl.date_publication FROM controle as ctrl, mcc_module as mcc_m, mcc_ue, semestre as s, module as m WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module AND mcc_m.id_module = m.id_module AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue AND mcc_ue.id_semestre = s.id_semestre AND ctrl.id_controle = :controleUID GROUP BY ctrl.id_controle"); $getControleInfo->execute(array( ':controleUID' => $controleUID )); }else{ // cas où on cherche un contrôle qu'un enseignant corrige /* [2] On cherche le contrôle avec l'id spécifié qu'enseignant l'@enseignant ==============================================================================*/ $getControleInfo = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id, ctrl.nom, ctrl.id_mcc_module, m.nom as module, m.libelle as modulelib, s.id_semestre, ctrl.libelle, ctrl.base, ctrl.coefficient, ctrl.date_publication FROM controle as ctrl, mcc_module as mcc_m, mcc_ue, semestre as s, module as m, enseignement as ens WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module AND mcc_m.id_module = m.id_module AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue AND mcc_ue.id_semestre = s.id_semestre AND ens.id_mcc_module = mcc_m.id_mcc_module AND ens.correcteur = 1 AND ens.id_enseignant = :enseignant AND ctrl.id_controle = :controleUID GROUP BY ctrl.id_controle"); $getControleInfo->execute(array( ':enseignant' => $enseignant, ':controleUID' => $controleUID )); } $ctrlInfo = $getControleInfo->fetch(); if( !is_bool($ctrlInfo) ) // on retourne le résultat en supprimant les doublons à indices numériques s'il est ok return DataBase::delNumeric( $ctrlInfo, true ); else return array(); } /* RENVOIE LES CONTROLES POUR UN MODULE ET SEMESTRE PARTICULIER * * @module l'UID du module concerné * @semestre l'UID du semestre concerné * * @return controles retourne les controles d'un étudiant pour un controle particulier * */ public static function forStudent($module, $semestre){ $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.nom, ctrl.id_mcc_module, ctrl.libelle, ctrl.base, ctrl.coefficient, ctrl.date_publication FROM controle as ctrl, module as m, mcc_module as mcc_m, mcc_ue, semestre as s WHERE ctrl.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 mcc_m.id_module = :module AND s.id_semestre = :semestre"); $getControleList->execute(array( ':module' => $module, ':semestre' => $semestre )); return DataBase::delNumeric( $getControleList->fetchAll() ); } /* RENVOIE LES CONTROLES QU'UN ENSEIGNANT PEUT CORRIGER POUR UN MODULE ET SEMESTRE PARTICULIER * * @enseignant l'identifiant de l'enseignant * @module l'UID du module concerné * @semestre l'UID du semestre concerné * * @return controles retourne les controles q'un enseignant peut corriger pour un module d'un semestre * */ public static function forTeacher($enseignant, $module, $semestre){ $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.nom, ctrl.id_mcc_module, ctrl.libelle, ctrl.base, ctrl.coefficient, ctrl.date_publication FROM enseignement as ens, module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl WHERE ens.id_mcc_module = mcc_m.id_mcc_module AND mcc_m.id_mcc_module = ctrl.id_mcc_module AND mcc_m.id_module = m.id_module AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue AND ens.id_enseignant = :enseignant AND mcc_m.id_module = :module AND mcc_ue.id_semestre = :semestre GROUP BY ctrl.id_controle"); $getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre )); return DataBase::delNumeric( $getControleList->fetchAll() ); } /* RENVOIE LES CONTROLES POUR UN MODULE ET SEMESTRE PARTICULIER * * @module l'UID du module concerné * @semestre l'UID du semestre concerné * * @return controles retourne les controles pour un module d'un semestre * */ public static function forYear($module, $semestre){ $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.nom, ctrl.id_mcc_module, ctrl.libelle, ctrl.base, ctrl.coefficient, ctrl.date_publication FROM module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl WHERE mcc_m.id_mcc_module = ctrl.id_mcc_module AND mcc_m.id_module = m.id_module AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue AND mcc_m.id_module = :module AND mcc_ue.id_semestre = :semestre GROUP BY ctrl.id_controle"); $getControleList->execute(array( ':module' => $module, ':semestre' => $semestre )); return DataBase::delNumeric( $getControleList->fetchAll() ); } /* retourne l'UID d'un contrôle s'il existe sinon créé tout ce qui a besoin et on retourne l'UID * * @mcc_module l'UID du mcc_module en question * @nom le code du contrôle en question * @libelle le libellé du contrôle en question * @coefficient le coefficient du contrôle en question dans le mcc_module en question * * * @return UID retourne l'UID du CONTRÔLE si tout s'est bien passé * @return FALSE retourne FALSE s'il y a eu une erreur * */ public static function forMCC($mcc_module, $nom, $libelle, $coefficient){ $count = 0; $maxLoop = 2; /* ON VÉRIFIE QUE L'UE EN LUI-MÊME (NOM/LIBELLÉ) EXISTE DANS LA BDD */ $getControleUID = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id FROM mcc_module as mcc_m, controle as ctrl WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module AND mcc_m.id_mcc_module = :mcc_module AND ctrl.nom = :nom AND ctrl.libelle = :libelle AND ctrl.coefficient = :coefficient"); $getControleUID->execute(array( ':mcc_module' => $mcc_module, ':nom' => $nom, ':libelle' => $libelle, ':coefficient' => $coefficient )); while( !$controleUID = $getControleUID->fetch()['id'] ){ // on vérifie l'existence de ce contrôle /* [1] SI LE CONTRÔLE N'EXISTE PAS => ON LE CRÉÉ =====================================================*/ $creerControle = DataBase::getPDO()->prepare("INSERT INTO controle(id_controle, id_mcc_module, nom, libelle, base, coefficient, date_publication) VALUES(DEFAULT, :mcc_module, :nom, :libelle, 20, :coefficient, NOW())"); $creerControle->execute(array( ':mcc_module' => $mcc_module, ':nom' => $nom, ':libelle' => $libelle, ':coefficient' => $coefficient )); /* ON VÉRIFIE QUE LE MODULE APPARTIENT AU MCC DE CE MCC_UE */ $getControleUID = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id FROM mcc_module as mcc_m, controle as ctrl WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module AND mcc_m.id_mcc_module = :mcc_module AND ctrl.nom = :nom AND ctrl.libelle = :libelle AND ctrl.coefficient = :coefficient"); $getControleUID->execute(array( ':mcc_module' => $mcc_module, ':nom' => $nom, ':libelle' => $libelle, ':coefficient' => $coefficient )); if( $count >= $maxLoop ) return false; $count++; } // on retourne enfin l'UID du mcc_ue en question return $controleUID; } }