2015-10-28 17:08:12 +00:00
|
|
|
<?php require_once __ROOT__.'/manager/security.php';
|
|
|
|
|
2015-11-10 08:17:41 +00:00
|
|
|
class DBAccess{};
|
|
|
|
|
2015-10-22 12:06:49 +00:00
|
|
|
class DataBase{
|
|
|
|
|
|
|
|
/* ATTRIBUTS */
|
|
|
|
private $host;
|
|
|
|
private $dbname;
|
|
|
|
private $username;
|
|
|
|
private $password;
|
|
|
|
|
2015-11-10 08:17:41 +00:00
|
|
|
private static $pdo;
|
|
|
|
|
|
|
|
private static $instance;
|
2015-10-22 12:06:49 +00:00
|
|
|
|
|
|
|
public function __construct($host, $dbname, $username, $password){
|
2015-10-22 16:55:26 +00:00
|
|
|
$this->host = $host;
|
|
|
|
$this->dbname = $dbname;
|
|
|
|
$this->username = $username;
|
|
|
|
$this->password = $password;
|
|
|
|
|
|
|
|
// password: Qt358nUdyeTxLDM8
|
2015-11-10 08:17:41 +00:00
|
|
|
DataBase::$pdo = new PDO('mysql:host='.$host.';dbname='.$dbname, $username, $password);
|
2015-10-22 12:06:49 +00:00
|
|
|
}
|
2015-10-22 16:55:26 +00:00
|
|
|
|
2015-10-24 08:57:16 +00:00
|
|
|
|
|
|
|
/* retourne une instance de la classe */
|
|
|
|
public static function getInstance(){
|
2015-11-22 18:17:04 +00:00
|
|
|
if( DataBase::$instance == null ){
|
2016-01-09 14:49:48 +00:00
|
|
|
|
|
|
|
// chargement de la configuration du server SQL
|
|
|
|
$conf = json_decode(file_get_contents(__ROOT__.'/manager/conf.json'), true);
|
|
|
|
DataBase::$instance = new DataBase($conf['host'], $conf['dbname'], $conf['user'], $conf['password']);
|
|
|
|
|
2015-11-22 18:17:04 +00:00
|
|
|
}
|
2015-11-10 08:17:41 +00:00
|
|
|
|
|
|
|
return DataBase::$instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* retourne la connection statique */
|
|
|
|
public static function getPDO(){
|
|
|
|
$instance = DataBase::getInstance();
|
|
|
|
return DataBase::$pdo;
|
2015-10-24 08:57:16 +00:00
|
|
|
}
|
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
|
|
|
|
/*************************************************************/
|
|
|
|
/* _____ ______ _ _ ______ _____ _ */
|
|
|
|
/* / ____| ____| \ | | ____| __ \ /\ | | */
|
|
|
|
/* | | __| |__ | \| | |__ | |__) | / \ | | */
|
|
|
|
/* | | |_ | __| | . ` | __| | _ / / /\ \ | | */
|
|
|
|
/* | |__| | |____| |\ | |____| | \ \ / ____ \| |____ */
|
|
|
|
/* \_____|______|_| \_|______|_| \_\/_/ \_\______| */
|
|
|
|
/* */
|
|
|
|
/*************************************************************/
|
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
/* SUPPRIME LES VALEURS À CLÉS NUMÉRIQUES DANS UN FETCH D'UNE TABLE DE LA BDD
|
|
|
|
*
|
|
|
|
* @fetchData<Array> le résultat d'une $requeteSQL->fetchAll()
|
|
|
|
*
|
|
|
|
* @return newFetchData<Array> retourne le tableau donné en paramètre mais sans les valeurs à clés numériques
|
|
|
|
*
|
|
|
|
*/
|
2015-11-21 12:28:13 +00:00
|
|
|
public static function delNumeric($fetchData, $oneDimension=false){
|
|
|
|
|
|
|
|
/* [1] 2 dimensions
|
|
|
|
===============================================*/
|
|
|
|
if( !$oneDimension ){
|
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
// on supprime les doublons des entrées (indice numérique)
|
|
|
|
for( $i = 0 ; $i < count($fetchData) ; $i++ ) // pour tout les utilisateurs
|
2015-11-20 08:54:15 +00:00
|
|
|
foreach($fetchData[$i] as $col => $val){ // pour toutes les entrées
|
2015-11-21 12:28:13 +00:00
|
|
|
|
|
|
|
if( !mb_detect_encoding($val, 'UTF-8') )
|
|
|
|
$fetchData[$i][$col] = utf8_encode($val);
|
|
|
|
|
2015-11-12 11:15:51 +00:00
|
|
|
if( is_int($col) ) // si l'indice est un entier
|
2015-11-10 09:50:43 +00:00
|
|
|
unset( $fetchData[$i][$col] ); // on le supprime
|
2015-11-20 08:54:15 +00:00
|
|
|
}
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2015-11-21 12:28:13 +00:00
|
|
|
/* [2] 1 dimensions
|
|
|
|
===============================================*/
|
|
|
|
}else{
|
|
|
|
|
|
|
|
// on supprime les doublons des entrées (indice numérique)
|
|
|
|
foreach($fetchData as $i=>$val){ // pour toutes les entrées
|
|
|
|
|
|
|
|
if( !mb_detect_encoding($val, 'UTF-8') )
|
|
|
|
$fetchData[$i] = utf8_encode($val);
|
|
|
|
|
|
|
|
if( is_int($i) ) // si l'indice est un entier
|
|
|
|
unset( $fetchData[$i] ); // on le supprime
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
return $fetchData;
|
|
|
|
}
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2016-01-07 20:15:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getSemestreInfoFromTime($time){
|
|
|
|
$now = date('Y-m-d', $time);
|
|
|
|
|
2016-01-07 20:24:43 +00:00
|
|
|
/* On cherche si l'année en cours est définie et on y est */
|
2016-01-07 20:15:16 +00:00
|
|
|
$req = DataBase::getPDO()->prepare("SELECT *
|
|
|
|
FROM semestrepair
|
|
|
|
WHERE :now BETWEEN debut AND FIN");
|
|
|
|
$req->execute(array( ':now' => $now ));
|
|
|
|
$res = $req->fetch();
|
|
|
|
|
2016-01-07 20:24:43 +00:00
|
|
|
/* Résultat bon, on le retourne */
|
2016-01-07 20:15:16 +00:00
|
|
|
if( is_array($res) )
|
|
|
|
return array('annee' => $res['annee'], 'semestre_pair' => $time >= strtotime($res['milieu']) );
|
2016-01-07 20:24:43 +00:00
|
|
|
|
|
|
|
/* Sinon, on recherche la dernière année entrée dans la BDD */
|
2016-01-07 20:15:16 +00:00
|
|
|
else{
|
2016-01-07 20:24:43 +00:00
|
|
|
$req2 = DataBase::getPDO()->query("SELECT *
|
|
|
|
FROM semestrepair
|
|
|
|
WHERE annee in (select max(annee) from semestrepair);");
|
|
|
|
$res2 = $req2->fetch();
|
|
|
|
|
|
|
|
/* Résultat bon, on le retourne */
|
|
|
|
if( is_array($res2) )
|
|
|
|
return array('annee' => $res2['annee'], 'semestre_pair' => $time >= strtotime($res2['milieu']) );
|
|
|
|
|
|
|
|
/* Sinon on retourne la valeur par défaut */
|
|
|
|
else{
|
|
|
|
$semestre_pair = Date('m', $time) < 8;
|
|
|
|
$annee = ($semestre_pair) ? Date('Y', $time)-1 : Date('Y', $time);
|
|
|
|
return array('annee' => "".$annee, 'semestre_pair' => $semestre_pair );
|
|
|
|
}
|
2016-01-07 20:15:16 +00:00
|
|
|
}
|
|
|
|
}
|
2015-11-10 09:50:43 +00:00
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-20 16:13:47 +00:00
|
|
|
/*********************************************************************************/
|
|
|
|
/* __ __ ____ ____ */
|
|
|
|
/* | \/ |/ ___/ ___| */
|
|
|
|
/* | |\/| | | | | */
|
|
|
|
/* | | | | |__| |___ */
|
|
|
|
/* |_| |_|\____\____| */
|
|
|
|
/* */
|
|
|
|
/*********************************************************************************/
|
|
|
|
|
|
|
|
/* intègre un MCC à la BDD
|
|
|
|
*
|
|
|
|
* @semestre<int> l'UID du semestre concerné
|
|
|
|
* @mcc<Array> contient toutes les données du MCC
|
|
|
|
*
|
|
|
|
*/
|
2015-11-23 15:21:03 +00:00
|
|
|
public function setMCC($semestre, $mcc){
|
2015-11-20 16:13:47 +00:00
|
|
|
|
|
|
|
foreach($mcc as $ue){
|
2015-11-22 10:16:03 +00:00
|
|
|
$mcc_ue = ueRepo::forMCC($semestre, $ue->nom, $ue->libelle, $ue->coefficient);
|
2015-11-20 16:13:47 +00:00
|
|
|
|
|
|
|
|
2015-11-22 10:16:03 +00:00
|
|
|
foreach($ue->modules as $module){
|
|
|
|
$mcc_module = moduleRepo::forMCC($mcc_ue, $module->nom, $module->libelle, $module->coefficient);
|
2015-11-20 16:13:47 +00:00
|
|
|
|
|
|
|
|
2015-11-22 10:16:03 +00:00
|
|
|
foreach($module->controles as $controle)
|
|
|
|
$controle_uid = controleRepo::forMCC($mcc_module, $controle->nom, $controle->libelle, $controle->coefficient);
|
2015-11-20 16:13:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-01-02 14:55:25 +00:00
|
|
|
|
|
|
|
/* clone les MCC de la dernière année à l'année donnée
|
|
|
|
*
|
|
|
|
* @annee<int> L'année de destination
|
|
|
|
*
|
|
|
|
* @return status<String> "success" si tout s'est bien passé, sinon code erreur
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function cloneMCC($annee){
|
|
|
|
// on récupère la dernière année à être référencée, si aucun résultat, on retourne une erreur
|
|
|
|
if( !($srcYear=semestreRepo::getLastMCCYear()['annee']) ) return 'no_mcc_found';
|
|
|
|
|
|
|
|
// année de destination
|
|
|
|
$dstYear = $annee;
|
|
|
|
|
|
|
|
|
|
|
|
/* [1] Pour chaque SEMESTRE de l'année
|
|
|
|
============================================*/
|
|
|
|
$listSemestre = semestreRepo::forYear($srcYear);
|
|
|
|
foreach($listSemestre as $SEMESTRE){
|
|
|
|
// on clone le semestre pour la nouvelle année
|
|
|
|
$newSemestreUID = semestreRepo::creer($SEMESTRE['formation'], $SEMESTRE['nom_formation'], $SEMESTRE['nom'], $SEMESTRE['rang'], $dstYear);
|
|
|
|
|
|
|
|
/* [2] Pour chaque UE de ce semestre
|
|
|
|
============================================*/
|
|
|
|
$listUE = ueRepo::forYear($SEMESTRE['id']);
|
|
|
|
foreach($listUE as $UE){
|
|
|
|
// on clone le mcc_ue mais pour le nouveau semestre
|
|
|
|
$newUEUID = ueRepo::forMCC($newSemestreUID, $UE['nom'], $UE['libelle'], $UE['coefficient']);
|
|
|
|
|
|
|
|
/* [3] Pour chaque MODULE de cet UE
|
|
|
|
============================================*/
|
|
|
|
$listModule = moduleRepo::forYear($UE['id'], $SEMESTRE['id']);
|
|
|
|
foreach($listModule as $MODULE){
|
|
|
|
// on clone le mcc_module mais pour le nouvel mcc_ue
|
|
|
|
$newModuleUID = moduleRepo::forMCC($newUEUID, $MODULE['nom'], $MODULE['libelle'], $MODULE['coefficient']);
|
|
|
|
|
|
|
|
/* [4] Pour chaque CONTRÔLE de ce module
|
|
|
|
============================================*/
|
|
|
|
$listControle = controleRepo::forYear($MODULE['id'], $SEMESTRE['id']);
|
|
|
|
foreach($listControle as $CONTROLE){
|
|
|
|
// on duplique le contrôle mais pour le nouveau mcc_module
|
|
|
|
$newControleUID = controleRepo::forMCC($newModuleUID, $CONTROLE['nom'], $CONTROLE['libelle'], $CONTROLE['coefficient']);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// tout s'est bien déroulé si on est arrivé jusque là
|
|
|
|
return 'success';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-20 16:13:47 +00:00
|
|
|
|
2015-11-24 23:04:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* intègre une liste d'utilisateurs (pour un rang d'une année) à la BDD
|
|
|
|
*
|
|
|
|
* @rang<int> le rang du semestre en question
|
|
|
|
* @annee<int> l'année du semestre en question
|
|
|
|
* @formationList<Array> contient tous les étudiants par formations
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function addUserlist($rang, $annee, $formationList){
|
|
|
|
|
|
|
|
foreach($formationList as $form){
|
|
|
|
|
2015-11-25 17:17:34 +00:00
|
|
|
$formationUID = semestreRepo::includeFormation($form->nom, $form->libelle); // on récupère l'UID de la formation en la créant si nécessaire
|
2015-11-24 23:04:02 +00:00
|
|
|
|
|
|
|
if( is_numeric($formationUID) ){ // si la formation est ok, alors on cherche le semestre
|
|
|
|
|
|
|
|
$semestreUID = semestreRepo::includeSemestre($rang, $annee, $formationUID); // on récupère l'UID du semestre en le créant si nécessaire
|
|
|
|
|
|
|
|
if( is_numeric($semestreUID) ){ // si le semestre est ok, alors on ajoute les utilisateurs
|
|
|
|
|
2015-11-25 17:17:34 +00:00
|
|
|
foreach($form->userlist as $user){
|
2015-11-24 23:04:02 +00:00
|
|
|
// on récupère l'UID utilisateur en le créant si nécessaire
|
2015-11-25 17:17:34 +00:00
|
|
|
$utilisateurUID = userRepo::includeEtudiant($user->identifiant, $user->prenom, $user->nom, $user->sexe, $user->mail);
|
2015-11-24 23:04:02 +00:00
|
|
|
|
|
|
|
if( is_string($utilisateurUID) ) // si l'utilisateur est ok, alors on créé l'appartenance
|
|
|
|
groupRepo::includeAppartenance($utilisateurUID, $semestreUID); // on ajoute l'utilisateur au groupeVide de chaque semestre (s'il n'a pas déjà un groupe)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-22 14:00:18 +00:00
|
|
|
/* créé un semestre/formation dans la BDD
|
|
|
|
*
|
|
|
|
* @codeFormation<String> le code/nom de la formation
|
|
|
|
* @nomFormation<String> le libellé de la formation
|
|
|
|
* @nomSemestre<String> le nom/libellé du semestre
|
|
|
|
* @rangSemestre<int> le rang du semestre dans la formation
|
|
|
|
* @annee<int> l'année du semestre
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return cree<Boolean> retourne VRAI si les éléments existaient ou ont bien été créés
|
|
|
|
*
|
|
|
|
*/
|
2015-11-23 15:21:03 +00:00
|
|
|
public function creerSemestre($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee){
|
2015-11-22 14:00:18 +00:00
|
|
|
// si on a tout créé ou que tout existe "creer" retourne l'UID du semestre,
|
|
|
|
// si on a un boolean c'est FALSE => erreur
|
2015-11-22 15:34:07 +00:00
|
|
|
|
2015-11-22 14:00:18 +00:00
|
|
|
if( !is_bool(semestreRepo::creer($codeFormation, $nomFormation, $nomSemestre, $rangSemestre, $annee)) )
|
|
|
|
return true;
|
|
|
|
else
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2015-11-20 16:13:47 +00:00
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2016-01-08 22:34:17 +00:00
|
|
|
|
|
|
|
/* effectue la capitalisation de l'ue
|
|
|
|
* @ue pour le semestre @semestre
|
|
|
|
* pour l'étudiant @etudiant
|
|
|
|
*/
|
|
|
|
public function capitaliserUE($ue, $semestre, $etudiant){
|
|
|
|
// on vérifie l'existence des paramètres (etudiant, semestre, ue)
|
|
|
|
if( !semestreRepo::exists($semestre) ) return 'unknown_semestre';
|
|
|
|
if( !groupRepo::forStudent($etudiant, $semestre) ) return 'unknown_user';
|
|
|
|
if( !($ueInfo=ueRepo::info($ue)) ) return 'unknown_ue';
|
|
|
|
|
|
|
|
// on vérifie que ce semestre a bien l'ue donnée
|
|
|
|
$UEs = ueRepo::forStudent($etudiant, $semestre);
|
|
|
|
$UEUIDList = array();
|
|
|
|
|
|
|
|
foreach($UEs as $UE)
|
|
|
|
if( !in_array($UE['id'], $UEUIDList) )
|
|
|
|
array_push($UEUIDList, $UE['id']);
|
|
|
|
|
|
|
|
// si l'UE n'est pas dans ce semestre, on retourne une erreur
|
|
|
|
if( !in_array($ue, $UEUIDList) ) return 'unknown_ue';
|
|
|
|
|
|
|
|
|
|
|
|
/* [1] On récupère les redoublements de ce semestre
|
|
|
|
======================================================*/
|
|
|
|
$redoublements = semestreRepo::getRedoublements($semestre, $etudiant);
|
|
|
|
|
|
|
|
/* [2] On retire ceux qui n'ont pas l'UE
|
|
|
|
======================================================*/
|
|
|
|
foreach($redoublements as $iter_s=>$SEM){
|
|
|
|
$listeUEs = ueRepo::forStudent($etudiant, $SEM['id_semestre']);
|
|
|
|
$hasUE = false;
|
|
|
|
// on vérifie que le semestre a bien l'UE
|
|
|
|
foreach($listeUEs as $UE)
|
|
|
|
if( $UE['id'] == $ue ) $hasUE = true;
|
|
|
|
|
|
|
|
// s'il n'a pas l'UE, on le supprime
|
|
|
|
if( !$hasUE ) unset($redoublements[$iter_s]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* [3] On applique les modifications
|
|
|
|
======================================================*/
|
|
|
|
$checker = true;
|
|
|
|
// on définit l'UE comme actif
|
|
|
|
$checker = $checker && ueRepo::capitalisation($semestre, $etudiant, $ue, true);
|
|
|
|
|
|
|
|
// on définit l'UE dans les autres semestres comme inactif
|
|
|
|
foreach($redoublements as $red)
|
|
|
|
$checker = $checker && ueRepo::capitalisation($red['id_semestre'], $etudiant, $ue, false);
|
|
|
|
|
|
|
|
|
|
|
|
return ($checker) ? 'success' : 'error';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
/*************************************************************************************/
|
|
|
|
/* _ _ _______ _____ _ _____ _____ _______ ______ _ _ _____ */
|
|
|
|
/* | | | |__ __|_ _| | |_ _|/ ____| /\|__ __| ____| | | | __ \ */
|
|
|
|
/* | | | | | | | | | | | | | (___ / \ | | | |__ | | | | |__) | */
|
|
|
|
/* | | | | | | | | | | | | \___ \ / /\ \ | | | __| | | | | _ / */
|
|
|
|
/* | |__| | | | _| |_| |____ _| |_ ____) / ____ \| | | |____| |__| | | \ \ */
|
|
|
|
/* \____/ |_| |_____|______|_____|_____/_/ \_\_| |______|\____/|_| \_\ */
|
|
|
|
/* */
|
|
|
|
/*************************************************************************************/
|
|
|
|
|
|
|
|
|
2015-10-22 16:55:26 +00:00
|
|
|
/*********************************************/
|
|
|
|
/*** création d'un utilisateur dans la bdd ***/
|
|
|
|
/*********************************************/
|
2015-10-28 17:08:12 +00:00
|
|
|
public function creerUtilisateur($identifiant, $prenom, $nom, $mail, $mdp, $droits){
|
2015-11-10 09:50:43 +00:00
|
|
|
if( userRepo::creer($identifiant, $prenom, $nom, $mail, $mdp, $droits) ) // si l'utilisateur a bien été créé
|
2015-10-22 16:55:26 +00:00
|
|
|
return 'success';
|
|
|
|
else
|
|
|
|
return 'error';
|
2015-11-08 21:30:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************************************/
|
|
|
|
/*** on récupère les informations utiles à l'utilisateur lors de la connection ***/
|
|
|
|
/*********************************************************************************/
|
|
|
|
public function utilisateurInfo($identifiant){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que l'utilisateur existe
|
2015-11-09 21:05:57 +00:00
|
|
|
if( !($utilisateurUID=userRepo::UID($identifiant)) ) return 'unknown_user';
|
2015-10-22 16:55:26 +00:00
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
return userRepo::info($utilisateurUID);
|
2015-10-22 16:55:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
/* retourne le semestre en cours d'un étudiant
|
2015-11-09 21:05:57 +00:00
|
|
|
*
|
2016-01-02 19:59:31 +00:00
|
|
|
* @etudiant<String> L'identifiant (UID) de l'étudiant en question
|
|
|
|
* @semestre_pair<Boolean> VRAI si le rang semestre est pair, sinon FAUX
|
|
|
|
* @annee<int> L'année scolaire en cours
|
2015-11-09 21:05:57 +00:00
|
|
|
*
|
|
|
|
* @return semestreUID<int> l'UID du semestre courant
|
|
|
|
*
|
|
|
|
*/
|
2015-11-26 13:38:38 +00:00
|
|
|
public static function studentSemestre($etudiant, $semestre_pair, $annee){
|
2016-01-02 13:21:31 +00:00
|
|
|
if( !($semestre=semestreRepo::forStudent($etudiant, $semestre_pair, $annee)) ) // si on a un résultat
|
2015-11-10 09:50:43 +00:00
|
|
|
return 'error';
|
2016-01-02 13:21:31 +00:00
|
|
|
else
|
|
|
|
return $semestre;
|
2015-11-20 08:54:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* retourne la liste des enseignants de la BDD
|
|
|
|
*
|
|
|
|
* @admin<String> l'UID de l'admin qui demande ça
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return enseignants<Array> retourne la liste des enseignants de la bdd
|
|
|
|
*
|
|
|
|
*/
|
2015-11-23 15:21:03 +00:00
|
|
|
public function listeUtilisateursRole($annee){
|
|
|
|
$roleUsers = userRepo::getRoleUsers();
|
|
|
|
|
|
|
|
foreach($roleUsers as $iter=>$user){
|
2015-11-23 15:40:54 +00:00
|
|
|
$semestreList = $this->getModulesByUEByEnseignant($user['id'], null, $annee);
|
|
|
|
if( is_array($semestreList) ) $roleUsers[$iter]['semestreList'] = $semestreList;
|
2015-11-30 20:46:40 +00:00
|
|
|
else $roleUsers[$iter]['semestreList'] = null;
|
2015-11-23 15:21:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return $roleUsers;
|
2015-11-20 08:54:15 +00:00
|
|
|
}
|
2015-11-09 21:05:57 +00:00
|
|
|
|
2015-11-19 13:08:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* retourne la liste des semestres de la BDD par annnées
|
|
|
|
*
|
|
|
|
* @return annees<Array> retourne la liste des années contenant chacunes leurs semestres
|
|
|
|
*
|
|
|
|
*/
|
2015-11-23 15:21:03 +00:00
|
|
|
public function getListeSemestres(){
|
2015-11-19 13:08:40 +00:00
|
|
|
$listeAnnees = semestreRepo::getAnnees();
|
|
|
|
|
|
|
|
foreach($listeAnnees as $iter_a=>$annee){
|
|
|
|
|
|
|
|
$listeAnnees[$iter_a]['semestres'] = semestreRepo::forYear($annee['annee']);
|
|
|
|
|
|
|
|
foreach($listeAnnees[$iter_a]['semestres'] as $iter_s=>$semestre)
|
|
|
|
$listeAnnees[$iter_a]['semestres'][$iter_s]['nb_etudiants'] = semestreRepo::nbEtuForSemestre($semestre['id']);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $listeAnnees;
|
|
|
|
}
|
|
|
|
|
2015-11-23 22:37:23 +00:00
|
|
|
|
|
|
|
/* modifie le caractère "admin" d'un utilisateur
|
|
|
|
*
|
|
|
|
* @utilisateur<String> l'UID de l'utilisateur en question
|
|
|
|
* @admin<Boolean> VRAI si admin, FAUX sinon
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return updated<Boolean> VRAI si la modification a été faite
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function setAdmin($utilisateur, $admin){
|
|
|
|
// on vérifie l'existence de l'utilisateur
|
|
|
|
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
|
|
|
|
|
|
|
|
return userRepo::setAdmin($utilisateurUID, $admin);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* modifie le caractère "référent" d'un utilisateur
|
|
|
|
*
|
|
|
|
* @utilisateur<String> l'UID de l'utilisateur en question
|
|
|
|
* @master<Boolean> VRAI si master, FAUX sinon
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return updated<Boolean> VRAI si la modification a été faite
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function setMaster($utilisateur, $master){
|
|
|
|
// on vérifie l'existence de l'utilisateur
|
|
|
|
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
|
|
|
|
|
|
|
|
return userRepo::setMaster($utilisateurUID, $master);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* ajoute un module qu'un utilisateur peut corriger
|
|
|
|
*
|
|
|
|
* @utilisateur<String> l'UID de l'utilisateur en question
|
2015-11-24 08:59:17 +00:00
|
|
|
* @mccmodule<int> l'UID du mcc_module à ajouter
|
2015-11-30 20:46:40 +00:00
|
|
|
*
|
|
|
|
* @groupe<int> ***OPTIONNEL*** l'UID du groupe à ajouter
|
2015-11-23 22:37:23 +00:00
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return added<Boolean> VRAI si module ajouté, sinon FALSE
|
|
|
|
*
|
|
|
|
*/
|
2015-11-30 20:46:40 +00:00
|
|
|
public function correcteurAjouterModule($utilisateur, $mccmodule, $groupe=null){
|
|
|
|
// on vérifie l'existence de l'utilisateur et du groupe
|
2015-11-23 22:37:23 +00:00
|
|
|
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
|
2015-11-30 20:46:40 +00:00
|
|
|
|
|
|
|
if( $groupe != null ) // si un groupe est donné, on le cherche
|
|
|
|
if( !($groupeUID=groupRepo::info($groupe)['id']) ) return 'unknown_group';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// si on ajoute pour un groupe donné, on le fait
|
2016-01-08 15:17:16 +00:00
|
|
|
if( $groupe != null ){
|
2015-11-30 20:46:40 +00:00
|
|
|
$success = userRepo::addModule($utilisateurUID, $mccmodule, $groupeUID);
|
|
|
|
|
|
|
|
// si aucun groupe n'est donné
|
2016-01-08 15:17:16 +00:00
|
|
|
}else{
|
2015-11-23 22:37:23 +00:00
|
|
|
|
2015-11-30 20:46:40 +00:00
|
|
|
$inscrits = groupRepo::inscritsMccModule($mccmodule);
|
|
|
|
$success = true;
|
|
|
|
foreach($inscrits as $groupe)
|
|
|
|
$success = $success && userRepo::addModule($utilisateurUID, $mccmodule, $groupe['id']);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-01-08 15:17:16 +00:00
|
|
|
|
|
|
|
// définit l'utilisateur comme enseignant et retourne le statut
|
|
|
|
return $success && userRepo::setTeacher($utilisateurUID);
|
2015-11-24 08:59:17 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* supprime un module qu'un utilisateur peut corriger
|
|
|
|
*
|
|
|
|
* @utilisateur<String> l'UID de l'utilisateur en question
|
|
|
|
* @mccmodule<int> l'UID du mcc_module à supprimer
|
|
|
|
*
|
2015-11-30 20:46:40 +00:00
|
|
|
* @groupe<int> ***OPTIONNEL*** l'UID du groupe à supprimer
|
|
|
|
*
|
2015-11-24 08:59:17 +00:00
|
|
|
*
|
|
|
|
* @return removed<Boolean> VRAI si module supprimé, sinon FALSE
|
|
|
|
*
|
|
|
|
*/
|
2015-11-30 20:46:40 +00:00
|
|
|
public function correcteurSupprimerModule($utilisateur, $mccmodule, $groupe=null){
|
2015-11-24 08:59:17 +00:00
|
|
|
// on vérifie l'existence de l'utilisateur
|
|
|
|
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
|
2015-11-30 20:46:40 +00:00
|
|
|
|
|
|
|
if( $groupe != null ) // si un groupe est donné, on le cherche
|
|
|
|
if( !($groupeUID=groupRepo::info($groupe)['id']) ) return 'unknown_group';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// si on ajoute pour un groupe donné, on le fait
|
|
|
|
if( $groupe != null )
|
|
|
|
$success = userRepo::delModule($utilisateurUID, $mccmodule, $groupeUID);
|
|
|
|
|
2015-11-24 08:59:17 +00:00
|
|
|
|
2015-11-30 20:46:40 +00:00
|
|
|
|
|
|
|
// si aucun groupe n'est donné
|
|
|
|
else{
|
|
|
|
|
|
|
|
$inscrits = groupRepo::inscritsMccModule($mccmodule);
|
|
|
|
$success = true;
|
|
|
|
foreach($inscrits as $groupe)
|
|
|
|
$success = $success && userRepo::delModule($utilisateurUID, $mccmodule, $groupe['id']);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-01-08 15:17:16 +00:00
|
|
|
// définit l'utilisateur comme enseignant et retourne le statut
|
|
|
|
return $success && userRepo::setTeacher($utilisateurUID);
|
2015-11-23 22:37:23 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
/**********************************************************/
|
|
|
|
/* _____ _____ ____ _ _ _____ ______ _____ */
|
|
|
|
/* / ____| __ \ / __ \| | | | __ \| ____|/ ____| */
|
|
|
|
/* | | __| |__) | | | | | | | |__) | |__ | (___ */
|
|
|
|
/* | | |_ | _ /| | | | | | | ___/| __| \___ \ */
|
|
|
|
/* | |__| | | \ \| |__| | |__| | | | |____ ____) | */
|
|
|
|
/* \_____|_| \_\\____/ \____/|_| |______|_____/ */
|
|
|
|
/* */
|
|
|
|
/**********************************************************/
|
|
|
|
|
2015-10-22 16:55:26 +00:00
|
|
|
|
|
|
|
/****************************************/
|
|
|
|
/*** création d'un groupe dans la bdd ***/
|
|
|
|
/****************************************/
|
2015-10-22 19:19:52 +00:00
|
|
|
public function creerGroupe($nom){
|
2015-11-09 21:05:57 +00:00
|
|
|
if( groupRepo::creer($nom) ) // si on a bien ajouté un entrée ou qu'elle n'existait pas déjà
|
2015-10-22 19:19:52 +00:00
|
|
|
return 'success';
|
|
|
|
else
|
|
|
|
return 'error';
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************/
|
|
|
|
/*** ajout d'un utilisateur à un groupe dans la bdd ***/
|
|
|
|
/******************************************************/
|
2015-10-28 17:08:12 +00:00
|
|
|
public function ajouterEtudiantGroupe($etudiant, $groupe, $semestre, $annee){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que l'utilisateur, le groupe, le semestre existent
|
2015-11-09 21:05:57 +00:00
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
|
|
|
|
if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID;
|
|
|
|
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
|
2015-10-22 19:19:52 +00:00
|
|
|
|
2015-10-24 08:57:16 +00:00
|
|
|
|
2015-11-09 21:05:57 +00:00
|
|
|
if( groupRepo::ajouterMembre($etudiantUID, $groupeUID, $semestreUID) ) // si on a bien ajouté un entrée
|
2015-10-28 17:08:12 +00:00
|
|
|
return 'success';
|
|
|
|
else
|
|
|
|
return 'error';
|
2015-10-22 19:19:52 +00:00
|
|
|
}
|
|
|
|
|
2015-11-19 22:47:58 +00:00
|
|
|
/******************************************************************/
|
|
|
|
/*** retourne la liste des utilisateurs du groupe d'un étudiant ***/
|
|
|
|
/******************************************************************/
|
2016-01-02 13:21:31 +00:00
|
|
|
public function listeEtudiantsGroupe($etudiant, $semestre){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le groupe et le semestre existent
|
2016-01-02 13:21:31 +00:00
|
|
|
if( !semestreRepo::exists($semestre) ) return 'unknown_semestre';
|
|
|
|
else $semestreUID = $semestre;
|
|
|
|
|
2015-11-19 22:47:58 +00:00
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
|
|
|
|
if( !($groupeObj=groupRepo::forStudent($etudiantUID, $semestreUID)) ) return 'unknown_group';
|
|
|
|
|
|
|
|
$userlist = DataBase::delNumeric( groupRepo::membres($groupeObj['id'], $semestreUID) );
|
|
|
|
$userlist['groupe'] = $groupeObj['nom'];
|
|
|
|
// foreach($userlist as $iter=>$user)
|
|
|
|
// $userlist[$iter]['groupe'] = $groupeObj['nom'];
|
2015-10-28 17:08:12 +00:00
|
|
|
|
2015-11-12 08:18:10 +00:00
|
|
|
// on retourne la liste des utilisateurs et on supprime les doublons à indices numériques
|
2015-11-19 22:47:58 +00:00
|
|
|
return $userlist;
|
2015-10-23 08:04:26 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-04 08:15:35 +00:00
|
|
|
/********************************************************************/
|
|
|
|
/*** retourne la liste des utilisateurs des groupes d'un semestre ***/
|
|
|
|
/********************************************************************/
|
2016-01-02 13:21:31 +00:00
|
|
|
public function listeEtudiantsTousGroupesSemestre($semestre){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le semestre existe
|
2016-01-02 13:21:31 +00:00
|
|
|
if( !semestreRepo::exists($semestre) ) return 'unknown_semestre';
|
|
|
|
else $semestreUID = $semestre;
|
2015-10-23 08:04:26 +00:00
|
|
|
|
2016-01-02 17:43:33 +00:00
|
|
|
$grouplist = groupRepo::forSemestre($semestreUID); // contiendra tout les groupes
|
2015-10-23 08:04:26 +00:00
|
|
|
|
|
|
|
// on parcourt tous les groupes
|
2015-11-12 08:18:10 +00:00
|
|
|
foreach($grouplist as $iter=>$val)
|
|
|
|
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $semestreUID); // on charge la liste des utilisateurs de ce groupe
|
|
|
|
|
2015-10-23 08:04:26 +00:00
|
|
|
return $grouplist; // sinon on retourne le tableau
|
2015-11-04 08:15:35 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************/
|
|
|
|
/*** retourne la liste des utilisateurs des groupes d'une année ***/
|
|
|
|
/******************************************************************/
|
2015-11-17 07:46:39 +00:00
|
|
|
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){
|
2015-11-12 14:52:31 +00:00
|
|
|
// on récupère la liste des groupes
|
2016-01-02 17:43:33 +00:00
|
|
|
$grouplist = groupRepo::forYear($semestre_pair, $annee);
|
2015-11-12 08:18:10 +00:00
|
|
|
|
2015-11-12 14:52:31 +00:00
|
|
|
foreach($grouplist as $iter=>$val) // pour chaque groupe un récupère la liste des utilisateurs
|
2015-11-12 08:18:10 +00:00
|
|
|
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);
|
2015-11-04 08:15:35 +00:00
|
|
|
|
|
|
|
return $grouplist; // sinon on retourne le tableau
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************/
|
|
|
|
/*** retourne la liste des utilisateurs des groupes d'une année ***/
|
|
|
|
/******************************************************************/
|
2015-11-17 07:46:39 +00:00
|
|
|
public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant){
|
2015-11-12 14:52:31 +00:00
|
|
|
/*** on cherche un semestre avec cette année ***/
|
2015-11-10 08:17:41 +00:00
|
|
|
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
|
2015-11-12 14:52:31 +00:00
|
|
|
$checkAnnee->execute(array( ':annee' => $annee ));
|
|
|
|
if( !( $checkAnnee->fetch()['id'] ) ) return 'unknown_year';
|
2015-11-04 08:15:35 +00:00
|
|
|
|
2015-11-12 14:52:31 +00:00
|
|
|
// on cherche si cet enseignant enseigne un semestre courant de cette année
|
|
|
|
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
|
2015-12-01 17:15:44 +00:00
|
|
|
|
2015-11-04 08:15:35 +00:00
|
|
|
|
2015-11-12 14:52:31 +00:00
|
|
|
// on récupère la liste des groupes
|
2015-11-17 07:46:39 +00:00
|
|
|
$grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee) );
|
2015-11-04 08:15:35 +00:00
|
|
|
|
2015-11-12 14:52:31 +00:00
|
|
|
foreach($grouplist as $iter=>$val) // pour chaque groupe un récupère la liste des utilisateurs
|
|
|
|
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);
|
2015-11-04 08:15:35 +00:00
|
|
|
|
|
|
|
return $grouplist; // sinon on retourne le tableau
|
2015-10-22 19:19:52 +00:00
|
|
|
}
|
|
|
|
|
2015-10-25 16:55:18 +00:00
|
|
|
|
2015-12-06 14:05:22 +00:00
|
|
|
/****************************************************************/
|
|
|
|
/***** déplace une liste d'étudiants d'un groupe à un autre *****/
|
|
|
|
/****************************************************************/
|
|
|
|
public function deplacerEtudiantMultiple($etudiants, $groupe, $semestre){
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2015-11-16 09:27:35 +00:00
|
|
|
// on vérifie que le semestre et que le groupe de destination existent
|
2015-11-17 08:07:53 +00:00
|
|
|
if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
|
2015-11-25 23:18:50 +00:00
|
|
|
if( !($destGroupeInfo=groupRepo::info($groupe)) ) return 'unknown_newgroup';
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2015-12-06 14:05:22 +00:00
|
|
|
foreach($etudiants as $etu)
|
|
|
|
if( !(groupRepo::ajouterMembre($etu, $destGroupeInfo['id'], $semestreInfo['id'])) )
|
|
|
|
return 'error';
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2015-12-06 14:05:22 +00:00
|
|
|
return 'success';
|
2015-11-08 21:30:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-25 23:18:50 +00:00
|
|
|
/* retourne la liste exhaustive des groupes de la BDD
|
|
|
|
*
|
|
|
|
* @return grouplist<Array> la liste de tous les groupes de la BDD
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function getExhaustiveGroupList(){
|
|
|
|
$grouplist = groupRepo::getAllGroups();
|
|
|
|
|
|
|
|
// on essaie de supposer le semestre en fonction du nom
|
|
|
|
foreach($grouplist as $i=>$group)
|
|
|
|
if( preg_match('/^(?:.+)?S(\d)(?:.+)?$/', $group['nom'], $m) ) // si le semestre est dans le nom
|
|
|
|
$grouplist[$i]['rang'] = intval($m[1]); // on récupère le rang
|
|
|
|
else
|
|
|
|
$grouplist[$i]['rang'] = null; // sinon rang = null
|
|
|
|
|
|
|
|
|
|
|
|
return $grouplist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-03 10:55:20 +00:00
|
|
|
/* Applique les mentions du jury aux étudiants d'un semestre
|
|
|
|
*
|
|
|
|
* @semestre<int> UID du semestre en question
|
|
|
|
* @jury<Array> Tableau contenant les étudiants et leurs mention
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return success<Boolean> Retourne VRAI si aucune erreur n'occure, sinon retourne FAUX
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function applyJurySemestre($semestre, $jury){
|
|
|
|
$state = true;
|
|
|
|
foreach($jury as $ETU){
|
|
|
|
$state = $state && DataBase::getInstance()->applyJuryTo($ETU->etudiant, $semestre, $ETU->mention) == 'success';
|
|
|
|
}
|
|
|
|
|
|
|
|
return $state;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-02 23:59:18 +00:00
|
|
|
/* Applique la mention du jury à un étudiant d'un semestre
|
|
|
|
*
|
|
|
|
* @etudiant<String> UID de l'étudiant en question
|
|
|
|
* @semestre<int> UID du semestre courant de l'étudiant
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return state<String> SUCCESS => changement effectué
|
|
|
|
* OU fin de formation
|
|
|
|
* * => ERREUR
|
|
|
|
*
|
2016-01-04 16:48:13 +00:00
|
|
|
* ADM => Passage de semestre (admis)
|
|
|
|
* ADJ => Passage de semestre (admis pas jury)
|
|
|
|
* ATT => Passage de semestre (si rang impair) SINON redoublement
|
|
|
|
* NAR/DEM/AJ => Pas pris
|
2016-01-02 23:59:18 +00:00
|
|
|
*/
|
|
|
|
public function applyJuryTo($etudiant, $semestre, $mention){
|
|
|
|
|
2016-01-03 10:55:20 +00:00
|
|
|
// on vérifie que le semestre existe et que l'étudiant est inscrit à ce semestre
|
2016-01-02 23:59:18 +00:00
|
|
|
if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
|
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant, $semestre)) ) return 'unknown_user';
|
|
|
|
|
|
|
|
// on vérifie que la mention est correcte
|
2016-01-04 16:48:13 +00:00
|
|
|
if( !in_array($mention, array('ADM', 'ADJ', 'ATT', 'NAR', 'DEM', 'AJ')) ) return 'unknown_mention';
|
2016-01-02 23:59:18 +00:00
|
|
|
|
|
|
|
/* [1] On définit la mention pour l'utilisateur à ce semestre
|
|
|
|
======================================================*/
|
|
|
|
groupRepo::setMention($etudiantUID, $semestre, $mention);
|
|
|
|
|
|
|
|
/* [2] Gestion du passage de l'étudiant
|
|
|
|
======================================================*/
|
|
|
|
// si ADM/ADJ ou RDB (redoublement) et semestre impair, passage
|
2016-01-04 16:48:13 +00:00
|
|
|
if( in_array($mention, array('ADM', 'ADJ')) || $mention == 'ATT' && $semestreInfo['rang']%2==1 ){
|
2016-01-02 23:59:18 +00:00
|
|
|
/* (1) On récupère le semestre suivant s'il existe */
|
|
|
|
$nextSemestre = semestreRepo::next($semestre);
|
|
|
|
|
|
|
|
/* (2) Si le semestre n'existe pas, on le créé */
|
|
|
|
if( is_array($nextSemestre) )
|
|
|
|
$nextSemestre = semestreRepo::creer($semestreInfo['formation'], $semestreInfo['nom_formation'], null, $nextSemestre['rang'], $nextSemestre['annee']);
|
|
|
|
|
2016-01-03 00:04:28 +00:00
|
|
|
// si le semestre n'est toujours pas créé, on retourne une erreur
|
|
|
|
if( is_bool($nextSemestre) ) return 'error';
|
|
|
|
|
2016-01-02 23:59:18 +00:00
|
|
|
/* (3) On créé l'appartenance */
|
|
|
|
$appartenanceUID = groupRepo::includeAppartenance($etudiant, $nextSemestre);
|
|
|
|
|
|
|
|
/* [3] Gestion du redoublement (début année), rang-2
|
|
|
|
======================================================*/
|
2016-01-04 16:48:13 +00:00
|
|
|
}elseif( $mention == 'ATT' ){
|
2016-01-04 20:15:52 +00:00
|
|
|
/* (1) On récupère le semestre précédent */
|
|
|
|
$rdbSemestre = semestreRepo::prev($semestre);
|
2016-01-02 23:59:18 +00:00
|
|
|
|
|
|
|
/* (2) Si le semestre n'existe pas, on le créé */
|
|
|
|
if( is_array($rdbSemestre) )
|
|
|
|
$rdbSemestre = semestreRepo::creer($semestreInfo['formation'], $semestreInfo['nom_formation'], null, $rdbSemestre['rang'], $rdbSemestre['annee']);
|
|
|
|
|
2016-01-03 00:04:28 +00:00
|
|
|
// si le semestre n'est toujours pas créé, on retourne une erreur
|
|
|
|
if( is_bool($rdbSemestre) ) return 'error';
|
|
|
|
|
2016-01-02 23:59:18 +00:00
|
|
|
/* (3) On créé l'appartenance */
|
|
|
|
$appartenanceUID = groupRepo::includeAppartenance($etudiant, $rdbSemestre);
|
|
|
|
}
|
|
|
|
|
2016-01-03 10:55:20 +00:00
|
|
|
// if( isset($nextSemestre) ) var_dump('nxt: '.$nextSemestre);
|
|
|
|
// if( isset($rdbSemestre) ) var_dump('rdb: '.$rdbSemestre);
|
|
|
|
// if( isset($appartenanceUID) ) var_dump('app: '.$appartenanceUID);
|
2016-01-02 23:59:18 +00:00
|
|
|
return 'success';
|
|
|
|
}
|
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************************************************/
|
|
|
|
/* */
|
|
|
|
/* __ __ ____ _____ _ _ _ ______ _____ */
|
|
|
|
/* | \/ |/ __ \| __ \| | | | | | ____|/ ____| */
|
|
|
|
/* | \ / | | | | | | | | | | | | |__ | (___ */
|
|
|
|
/* | |\/| | | | | | | | | | | | | __| \___ \ */
|
|
|
|
/* | | | | |__| | |__| | |__| | |____| |____ ____) | */
|
|
|
|
/* |_| |_|\____/|_____/ \____/|______|______|_____/ */
|
|
|
|
/* */
|
|
|
|
/**********************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************/
|
|
|
|
/*** retourne les modules d'un étudiant par UEs ***/
|
|
|
|
/**************************************************/
|
2016-01-02 13:21:31 +00:00
|
|
|
public function getModulesByUEByEtudiant($etudiant, $semestre){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le semestre et l'utilisateur existent
|
2016-01-02 13:21:31 +00:00
|
|
|
if( !semestreRepo::exists($semestre) ) return 'unknown_semestre';
|
|
|
|
else $semestreUID = $semestre;
|
|
|
|
|
2015-11-19 22:32:54 +00:00
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2015-11-11 21:54:52 +00:00
|
|
|
// on récupère la liste des UE
|
|
|
|
$UEList = ueRepo::forStudent($etudiantUID, $semestreUID);
|
2015-11-08 21:30:23 +00:00
|
|
|
|
2015-11-11 21:54:52 +00:00
|
|
|
foreach($UEList as $iter=>$UE) // pour chaque UE, on récupère la liste des modules
|
|
|
|
$UEList[$iter]['modules'] = moduleRepo::forStudent($UE['id'], $semestreUID);
|
|
|
|
|
2015-11-03 22:20:54 +00:00
|
|
|
return $UEList;
|
|
|
|
}
|
|
|
|
|
2015-10-25 16:55:18 +00:00
|
|
|
|
2015-10-28 17:08:12 +00:00
|
|
|
/******************************************/
|
|
|
|
/*** retourne les modules d'un étudiant ***/
|
|
|
|
/******************************************/
|
|
|
|
public function getModulesEtudiant($etudiant, $semestre, $annee){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le semestre et l'étudiant existent
|
2015-11-09 21:05:57 +00:00
|
|
|
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
|
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
|
2015-11-10 23:04:56 +00:00
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
// on retourne les modules en supprimant les valeurs à indices numériques
|
2015-11-10 23:04:56 +00:00
|
|
|
return moduleRepo::forStudent($etudiantUID, $semestreUID);
|
2015-10-28 17:08:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-10-29 23:01:35 +00:00
|
|
|
/**************************************/
|
|
|
|
/*** retourne les UEs d'un étudiant ***/
|
|
|
|
/**************************************/
|
|
|
|
public function getUEsEtudiant($etudiant, $semestre, $annee){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le semestre et l'étudiant existent
|
2015-11-09 21:05:57 +00:00
|
|
|
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
|
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
|
2015-10-29 23:01:35 +00:00
|
|
|
|
|
|
|
|
2015-11-10 09:50:43 +00:00
|
|
|
// on retourne la liste d'UEs en supprimant les doublons à clés numériques
|
2015-11-10 23:04:56 +00:00
|
|
|
return ueRepo::forStudent($etudiantUID, $semestreUID);
|
2015-10-29 23:01:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-06 22:00:08 +00:00
|
|
|
|
|
|
|
|
2015-11-18 08:37:36 +00:00
|
|
|
/**********************************************************/
|
|
|
|
/*** retourne la liste exhaustive des MODULES de la BDD ***/
|
|
|
|
/**********************************************************/
|
|
|
|
public function getExhaustiveModuleList(){
|
|
|
|
return moduleRepo::exhaustiveList();
|
|
|
|
}
|
2015-11-06 22:00:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-11 21:54:52 +00:00
|
|
|
/****************************************************/
|
|
|
|
/*** retourne les modules d'un enseignant par UEs ***/
|
|
|
|
/****************************************************/
|
2015-11-11 17:23:37 +00:00
|
|
|
public function getModulesByUEByEnseignant($enseignant, $semestre_pair, $annee){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que l'enseignant enseigne bien cette année
|
2015-11-11 21:02:13 +00:00
|
|
|
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
|
2015-11-06 22:00:08 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
// on récupère les semestres de cette année
|
|
|
|
$semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
|
2015-11-06 22:00:08 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
foreach($semestreList as $iter_s=>$a){
|
|
|
|
$semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
|
2015-11-06 22:00:08 +00:00
|
|
|
|
2015-11-30 20:46:40 +00:00
|
|
|
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
|
2015-11-16 12:28:24 +00:00
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
|
2015-11-30 20:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'] as $iter_m=>$MOD){
|
|
|
|
// on enregistre la liste des groupes inscrits
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['groupes'] = groupRepo::inscritsMccModule($MOD['id_mcc_module']);
|
|
|
|
|
|
|
|
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['groupes'] as $iter_g=>$GROUPE){
|
|
|
|
// on enregistre "true" si l'enseignant les enseigne, sinon "false"
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['groupes'][$iter_g]['enseigne'] = userRepo::enseigne($enseignantUID, $MOD['id_mcc_module'], $GROUPE['id']);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2015-11-06 22:00:08 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
}
|
2015-11-06 22:00:08 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
return $semestreList;
|
2015-11-06 22:00:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-11 21:54:52 +00:00
|
|
|
/***************************************************/
|
|
|
|
/*** retourne les modules des semestres en cours ***/
|
|
|
|
/***************************************************/
|
2015-11-15 18:10:33 +00:00
|
|
|
public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair
|
2015-11-11 21:54:52 +00:00
|
|
|
|
2015-11-16 11:02:03 +00:00
|
|
|
// on récupère les semestres de cette année
|
|
|
|
$semestreList = semestreRepo::forYear($annee);
|
|
|
|
|
2015-11-30 20:46:40 +00:00
|
|
|
foreach($semestreList as $iter_s=>$SEMESTRE){
|
|
|
|
$semestreList[$iter_s]['UElist'] = ueRepo::forYear($SEMESTRE['id']);
|
2015-11-16 11:02:03 +00:00
|
|
|
|
2015-11-30 20:46:40 +00:00
|
|
|
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$UE)
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forYear($UE['id'], $SEMESTRE['id']);
|
2015-11-16 11:02:03 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $semestreList;
|
2015-11-11 21:54:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-06 22:00:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-08 21:30:23 +00:00
|
|
|
/*******************************************/
|
|
|
|
/* _ _ ____ _______ ______ _____ */
|
|
|
|
/* | \ | |/ __ \__ __| ____|/ ____| */
|
|
|
|
/* | \| | | | | | | | |__ | (___ */
|
|
|
|
/* | . ` | | | | | | | __| \___ \ */
|
|
|
|
/* | |\ | |__| | | | | |____ ____) | */
|
|
|
|
/* |_| \_|\____/ |_| |______|_____/ */
|
|
|
|
/* */
|
|
|
|
/*******************************************/
|
2015-11-06 22:00:08 +00:00
|
|
|
|
|
|
|
|
2015-12-01 18:01:05 +00:00
|
|
|
/*********************************************************/
|
|
|
|
/* définie le caractère "publié" des notes d'un contrôle */
|
|
|
|
/*********************************************************/
|
|
|
|
public function publicationControle($controle, $publication){
|
|
|
|
// on vérifie l'existence du contrôle en question
|
|
|
|
if( !($controleObj=controleRepo::info($controle)) ) return 'unknown_controle';
|
|
|
|
|
|
|
|
// on met à jour le caractère "publié" du contrôle
|
|
|
|
return controleRepo::publication($controleObj['id'], $publication);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-06 22:00:08 +00:00
|
|
|
|
2015-10-29 23:01:35 +00:00
|
|
|
/**************************************/
|
|
|
|
/*** retourne les notes par modules ***/
|
|
|
|
/**************************************/
|
|
|
|
public function getNotesByModules($etudiant, $semestre, $annee){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre
|
2015-11-09 21:05:57 +00:00
|
|
|
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
|
2015-11-10 23:04:56 +00:00
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
|
2015-10-29 23:01:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
$notelist = array(); // tableau qui contiendra tout les modules
|
|
|
|
|
|
|
|
$modulelist = $this->getModulesEtudiant($etudiant, $semestre, $annee); // on récupère la liste des modules
|
|
|
|
|
|
|
|
foreach($modulelist as $module){ // pour chaque module
|
|
|
|
|
|
|
|
$notes = $this->getModuleNotes($etudiant, $module['nom'], $semestre, $annee); // on récupère les notes
|
|
|
|
|
|
|
|
$current = array(); // on créé l'entrée qui sera dans le tableau de retour
|
|
|
|
$current['module'] = array();
|
|
|
|
$current['module']['nom'] = $module['nom']; // contenant le nom du module
|
|
|
|
$current['module']['libelle'] = $module['libelle']; // contenant le nom du module
|
|
|
|
$current['notes'] = $notes; // et la liste de notes
|
|
|
|
|
|
|
|
array_push($notelist, $current); // on l'ajoute au résultat
|
|
|
|
}
|
|
|
|
|
|
|
|
return $notelist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-13 18:07:36 +00:00
|
|
|
/****************************************/
|
|
|
|
/*** retourne les notes d'un étudiant ***/
|
|
|
|
/****************************************/
|
2016-01-02 13:21:31 +00:00
|
|
|
public function getNotesEtudiant($etudiant, $semestre){
|
2015-11-10 23:04:56 +00:00
|
|
|
// on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre
|
2016-01-02 13:21:31 +00:00
|
|
|
if( !semestreRepo::exists($semestre) ) return 'unknown_semestre';
|
|
|
|
else $semestreUID = $semestre;
|
|
|
|
|
2015-11-10 23:04:56 +00:00
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
|
2015-10-29 23:01:35 +00:00
|
|
|
|
|
|
|
|
2015-11-11 21:54:52 +00:00
|
|
|
$UEList = ueRepo::forStudent($etudiantUID, $semestreUID);
|
2015-10-29 23:01:35 +00:00
|
|
|
|
2015-11-12 10:19:58 +00:00
|
|
|
foreach($UEList as $iter_ue=>$a){
|
|
|
|
$UEList[$iter_ue]['modules'] = moduleRepo::forStudent($UEList[$iter_ue]['id'], $semestreUID);
|
2015-10-29 23:01:35 +00:00
|
|
|
|
2015-11-12 10:19:58 +00:00
|
|
|
foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){
|
|
|
|
$UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($UEList[$iter_ue]['modules'][$iter_mod]['id'], $semestreUID);
|
|
|
|
|
|
|
|
foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c)
|
|
|
|
$UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($etudiantUID, $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']);
|
|
|
|
}
|
2015-10-29 23:01:35 +00:00
|
|
|
|
2015-11-12 10:19:58 +00:00
|
|
|
}
|
2015-10-29 23:01:35 +00:00
|
|
|
|
2015-11-12 10:19:58 +00:00
|
|
|
return $UEList;
|
2015-10-29 23:01:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-29 22:29:54 +00:00
|
|
|
|
|
|
|
/*************************************************/
|
|
|
|
/* retourne les informations du dossier étudiant */
|
|
|
|
/*************************************************/
|
|
|
|
public function getParcoursEtudiant($etudiant){
|
|
|
|
// on vérifie l'existence de l'étudiant
|
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
|
|
|
|
|
|
|
|
|
|
|
|
$parcours = semestreRepo::getParcours($etudiantUID);
|
2016-01-08 22:34:17 +00:00
|
|
|
|
|
|
|
// contiendra les couples [id_formation, rang] pour les semestres capitalisables
|
2016-01-09 17:10:28 +00:00
|
|
|
$listeSemestresFR = array();
|
2016-01-08 22:34:17 +00:00
|
|
|
|
2016-01-04 11:32:20 +00:00
|
|
|
/* [1] Chaque semestre
|
|
|
|
==========================*/
|
2015-11-29 22:29:54 +00:00
|
|
|
foreach($parcours as $iter_s=>$semestre){
|
2016-01-08 22:34:17 +00:00
|
|
|
// on récupère les id des UEs non pris en compte
|
|
|
|
$inactiveUE = explode(',', $semestre['inactive']);
|
|
|
|
// on supprime les entrées vides
|
|
|
|
foreach($inactiveUE as $i=>$UE)
|
|
|
|
if( strlen($UE) == 0 )
|
|
|
|
unset($inactiveUE[$i]);
|
|
|
|
|
2016-01-09 17:10:28 +00:00
|
|
|
// si pas déjà ajouté, on ajoute le rang+formation à la liste
|
|
|
|
if( !in_array( array($semestre['id_formation'], $semestre['rang']), $listeSemestresFR) )
|
|
|
|
array_push($listeSemestresFR, array($semestre['id_formation'], $semestre['rang']));
|
2016-01-08 22:34:17 +00:00
|
|
|
|
2015-11-29 22:29:54 +00:00
|
|
|
$parcours[$iter_s]['UEs'] = ueRepo::forStudent($etudiantUID, $semestre['id']);
|
|
|
|
|
2016-01-04 11:32:20 +00:00
|
|
|
/* CALCUL DE MOYENNE DU SEMESTRE */
|
|
|
|
$moyenneSemestre = 0; // contiendra la somme des valeurs*coefficients
|
|
|
|
$totalSemestre = 0; // contiendra la somme des coefficients
|
|
|
|
|
2016-01-08 01:16:27 +00:00
|
|
|
// par défaut le semestre est compensable
|
|
|
|
$semestreCompensable = true;
|
|
|
|
// vrai si le semestre est obtenu par compensation des UE
|
|
|
|
$semestreCompensation = false;
|
|
|
|
|
2016-01-04 11:32:20 +00:00
|
|
|
|
|
|
|
/* [2] Chaque UE
|
|
|
|
==========================*/
|
2015-11-29 22:29:54 +00:00
|
|
|
foreach($parcours[$iter_s]['UEs'] as $iter_ue=>$UE){
|
|
|
|
$parcours[$iter_s]['UEs'][$iter_ue]['modules'] = moduleRepo::forStudent($UE['id'], $semestre['id']);
|
|
|
|
|
2016-01-04 11:32:20 +00:00
|
|
|
/* CALCUL DE MOYENNE DE L'UE */
|
|
|
|
$moyenneUE = 0; // contiendra la somme des valeurs*coefficients
|
|
|
|
$totalUE = 0; // contiendra la somme des coefficients
|
|
|
|
|
|
|
|
/* [3] Chaque module
|
|
|
|
==========================*/
|
2015-11-29 22:29:54 +00:00
|
|
|
foreach($parcours[$iter_s]['UEs'][$iter_ue]['modules'] as $iter_mod=>$MOD){
|
|
|
|
$parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($MOD['id'], $semestre['id']);
|
2015-11-30 09:23:34 +00:00
|
|
|
|
|
|
|
$parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['moyenne'] = noteRepo::moyenneModule($etudiantUID, $MOD['id'], $semestre['id']);
|
|
|
|
|
|
|
|
|
2016-01-04 11:32:20 +00:00
|
|
|
|
|
|
|
// on complète la moyenne de l'UE si le module a une moyenne
|
|
|
|
$tmpModule = $parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod];
|
|
|
|
|
|
|
|
if( !is_bool($tmpModule['moyenne']) ){
|
|
|
|
$moyenneUE += $tmpModule['moyenne']['moyenne']/$tmpModule['moyenne']['base'] * $tmpModule['coefficient'];
|
|
|
|
$totalUE += $tmpModule['coefficient'];
|
2015-11-30 09:23:34 +00:00
|
|
|
}
|
2016-01-04 11:32:20 +00:00
|
|
|
|
|
|
|
/* [4] Chaque contrôle
|
|
|
|
==========================*/
|
|
|
|
foreach($parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$CONTROLE)
|
|
|
|
$parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($etudiantUID, $CONTROLE['id']);
|
|
|
|
|
2015-11-30 09:23:34 +00:00
|
|
|
|
2015-11-29 22:29:54 +00:00
|
|
|
}
|
2016-01-04 11:32:20 +00:00
|
|
|
|
|
|
|
/* ENREGISTREMENT DE LA MOYENNE DE L'UE */
|
|
|
|
if( $totalUE == 0 ) // si la somme vaut 0, on retourne FALSE
|
|
|
|
$parcours[$iter_s]['UEs'][$iter_ue]['moyenne'] = false;
|
|
|
|
else
|
|
|
|
$parcours[$iter_s]['UEs'][$iter_ue]['moyenne'] = array('moyenne' => 20*$moyenneUE/$totalUE, 'base' => 20 );
|
|
|
|
|
|
|
|
|
2016-01-08 22:34:17 +00:00
|
|
|
// on complète la moyenne du semestre
|
|
|
|
// SI l'UE a une moyenne
|
2016-01-04 11:32:20 +00:00
|
|
|
$tmpUE = $parcours[$iter_s]['UEs'][$iter_ue];
|
|
|
|
|
|
|
|
if( !is_bool($tmpUE['moyenne']) ){
|
|
|
|
$moyenneSemestre += $tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] * $tmpUE['coefficient'];
|
|
|
|
$totalSemestre += $tmpUE['coefficient'];
|
2016-01-08 01:16:27 +00:00
|
|
|
|
2016-01-08 22:34:17 +00:00
|
|
|
// le semestre est non compensable si la moyenne d'au moins un UE < 8
|
2016-01-09 17:10:28 +00:00
|
|
|
// if( 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] < 8 )
|
|
|
|
// $semestreCompensable = false;
|
2016-01-08 01:16:27 +00:00
|
|
|
|
2016-01-09 17:10:28 +00:00
|
|
|
// // semestreCompensé est VRAI si au moins un semestre est entre 8 et 10
|
|
|
|
// if( 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] >= 8 && 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] < 10 )
|
|
|
|
// $semestreCompensation = true;
|
2016-01-04 11:32:20 +00:00
|
|
|
}
|
|
|
|
|
2015-11-29 22:29:54 +00:00
|
|
|
}
|
2016-01-04 11:32:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* ENREGISTREMENT DE LA MOYENNE DU SEMESTRE */
|
2016-01-08 22:34:17 +00:00
|
|
|
// on enregistre les valeurs du calcul pour pouvoir calculer avec compensation
|
|
|
|
$parcours[$iter_s]['calculMoyenne'] = array( 'sum' => $moyenneSemestre, 'count' => $totalSemestre );
|
|
|
|
|
2016-01-04 11:32:20 +00:00
|
|
|
if( $totalSemestre == 0 ) // si la somme vaut 0, on retourne FALSE
|
|
|
|
$parcours[$iter_s]['moyenne'] = false;
|
2016-01-08 22:34:17 +00:00
|
|
|
else{
|
|
|
|
// on enregistre la moyenne
|
2016-01-04 11:32:20 +00:00
|
|
|
$parcours[$iter_s]['moyenne'] = array('moyenne' => 20*$moyenneSemestre/$totalSemestre, 'base' => 20 );
|
2016-01-08 22:34:17 +00:00
|
|
|
}
|
2016-01-04 11:32:20 +00:00
|
|
|
|
2016-01-08 01:16:27 +00:00
|
|
|
$parcours[$iter_s]['compensable'] = $semestreCompensable;
|
|
|
|
|
|
|
|
// si le semestre est obtenu et utilise la compensation => on le définit
|
|
|
|
if( $semestreCompensable && $semestreCompensation && $parcours[$iter_s]['moyenne']['moyenne'] >= 10 )
|
|
|
|
$parcours[$iter_s]['compensation'] = true;
|
|
|
|
else
|
|
|
|
$parcours[$iter_s]['compensation'] = false;
|
|
|
|
|
2016-01-08 22:34:17 +00:00
|
|
|
// on met la liste des id d'ue inactifs sous forme de tableau
|
|
|
|
$parcours[$iter_s]['inactive'] = $inactiveUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* LISTE DES UES CAPITALISÉES PAR SEMESTRES REGROUPÉS (FORMATION+RANG) */
|
|
|
|
// On ajoute toutes les UE capitalisées
|
2016-01-09 17:10:28 +00:00
|
|
|
foreach($listeSemestresFR as $i=>$formationRang){
|
2016-01-08 22:34:17 +00:00
|
|
|
|
|
|
|
// pour cette formation+rang, on récupère toutes les UEs
|
|
|
|
$listeUEs = array();
|
|
|
|
$UEUIDS = array();
|
|
|
|
$listeSemestresIndexes = array();
|
|
|
|
|
2016-01-09 17:10:28 +00:00
|
|
|
//var_dump('f:'.$formationRang[0].'/'.$formationRang[1]);
|
2016-01-09 17:41:26 +00:00
|
|
|
foreach(array_reverse($parcours, true) as $iter_s=>$semestre){
|
2016-01-08 22:34:17 +00:00
|
|
|
|
|
|
|
// si fait partie de la formation+rang courante
|
|
|
|
if( $formationRang == array( $semestre['id_formation'], $semestre['rang'] ) ){
|
|
|
|
|
|
|
|
// on ajoute l'index du semestre à la liste
|
|
|
|
array_push($listeSemestresIndexes, $iter_s);
|
|
|
|
|
|
|
|
// on ajoute chaque UE de ce semestre s'il est actif
|
|
|
|
foreach($semestre['UEs'] as $UE)
|
|
|
|
if( !in_array($UE['id'], $semestre['inactive']) ){
|
2016-01-08 23:35:41 +00:00
|
|
|
if( array_search($UE['id'], $UEUIDS) === false ){
|
|
|
|
// pour le premier UE (capitalisé) on s'assure de lui attribuer la capitalisation
|
2016-01-09 17:10:28 +00:00
|
|
|
//var_dump(' u:'.$UE['id']);
|
2016-01-08 23:35:41 +00:00
|
|
|
DataBase::getInstance()->capitaliserUE($UE['id'], $semestre['id'], $etudiantUID);
|
2016-01-08 22:34:17 +00:00
|
|
|
array_push( $listeUEs, $UE );
|
|
|
|
array_push( $UEUIDS, $UE['id'] );
|
2016-01-09 17:10:28 +00:00
|
|
|
}
|
|
|
|
}//else
|
|
|
|
//var_dump(' x:'.$UE['id']);
|
2016-01-08 22:34:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// variables utiles pour la moyenne
|
|
|
|
$moyenneSemestre = 0; $totalSemestre = 0;
|
2016-01-09 17:54:25 +00:00
|
|
|
$semestreCompensable = true; $semestreCompensation = false;
|
2016-01-08 22:34:17 +00:00
|
|
|
|
|
|
|
// pour chaque UE capitalisée
|
|
|
|
foreach($listeUEs as $iter_ue=>$UE){
|
|
|
|
// si l'UE a une moyenne
|
|
|
|
if( !is_bool($UE['moyenne']) ){
|
|
|
|
$moyenneSemestre += $UE['moyenne']['moyenne']/$UE['moyenne']['base'] * $UE['coefficient'];
|
|
|
|
$totalSemestre += $UE['coefficient'];
|
|
|
|
|
|
|
|
// le semestre est non compensable si la moyenne d'au moins un UE < 8
|
|
|
|
if( 20*$UE['moyenne']['moyenne']/$UE['moyenne']['base'] < 8 )
|
|
|
|
$semestreCompensable = false;
|
|
|
|
|
|
|
|
// semestreCompensé est VRAI si au moins un semestre est entre 8 et 10
|
2016-01-09 17:54:25 +00:00
|
|
|
elseif( 20*$UE['moyenne']['moyenne']/$UE['moyenne']['base'] < 10 ){
|
2016-01-08 22:34:17 +00:00
|
|
|
$semestreCompensation = true;
|
2016-01-09 17:54:25 +00:00
|
|
|
}
|
2016-01-08 22:34:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// attribution des moyennes aux semestres concernés
|
|
|
|
foreach($listeSemestresIndexes as $index){
|
|
|
|
if( $totalSemestre > 0 )
|
|
|
|
$parcours[$index]['moyenne'] = array( 'moyenne' => 20*$moyenneSemestre/$totalSemestre, 'base' => 20 );
|
|
|
|
else
|
|
|
|
$parcours[$index]['moyenne'] = array( 'moyenne' => 0, 'base' => 20 );
|
|
|
|
|
|
|
|
// on met à jour le semestre compensable, et compensation
|
|
|
|
$parcours[$index]['compensable'] = $semestreCompensable;
|
2016-01-09 17:54:25 +00:00
|
|
|
$parcours[$index]['compensation'] = $semestreCompensation && $parcours[$index]['moyenne']['moyenne'] >= 10;
|
2016-01-08 22:34:17 +00:00
|
|
|
}
|
|
|
|
|
2015-11-29 22:29:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return $parcours;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-13 18:07:36 +00:00
|
|
|
/*******************************************/
|
|
|
|
/*** retourne les notes d'un enseignant ***/
|
|
|
|
/*******************************************/
|
|
|
|
public function getControlesEnseignant($enseignant, $semestre_pair, $annee){
|
|
|
|
// on vérifie que le semestre existe et que l'enseignant y enseigne
|
|
|
|
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
|
2015-12-01 17:15:44 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
// on récupère les semestres de cette année
|
|
|
|
$semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
|
2015-11-13 18:07:36 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
foreach($semestreList as $iter_s=>$a){
|
2015-11-13 18:07:36 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
$semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
|
2015-11-13 18:07:36 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
|
2015-11-13 18:07:36 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'] as $iter_m=>$c){
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] = controleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['id'], $semestreList[$iter_s]['id']);
|
|
|
|
|
|
|
|
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] as $iter_ct=>$c){
|
2015-11-26 17:17:05 +00:00
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['grouplist'] = noteRepo::forControle($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
|
|
|
|
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['moyenne'] = noteRepo::moyenneForControle($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $semestreList;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************/
|
|
|
|
/*** retourne les notes d'une année ***/
|
|
|
|
/***************************************/
|
|
|
|
public function getControlesForYear($annee){
|
|
|
|
// on récupère les semestres de cette année
|
|
|
|
$semestreList = semestreRepo::forYear($annee);
|
|
|
|
|
|
|
|
foreach($semestreList as $iter_s=>$a){
|
|
|
|
$semestreList[$iter_s]['UElist'] = ueRepo::forYear($semestreList[$iter_s]['id']);
|
|
|
|
|
|
|
|
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forYear($semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
|
|
|
|
|
|
|
|
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'] as $iter_m=>$c){
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] = controleRepo::forYear($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['id'], $semestreList[$iter_s]['id']);
|
|
|
|
|
|
|
|
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] as $iter_ct=>$c){
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['grouplist'] = noteRepo::forControle($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
|
2015-11-16 12:28:24 +00:00
|
|
|
|
|
|
|
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['moyenne'] = noteRepo::moyenneForControle($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
|
2015-11-15 23:01:05 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
}
|
2015-11-16 09:34:41 +00:00
|
|
|
|
2015-11-15 23:01:05 +00:00
|
|
|
}
|
|
|
|
|
2015-11-13 18:07:36 +00:00
|
|
|
}
|
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
}
|
2015-11-13 18:07:36 +00:00
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
return $semestreList;
|
2015-11-13 18:07:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-10-29 23:01:35 +00:00
|
|
|
|
2015-11-14 17:33:06 +00:00
|
|
|
|
2015-11-26 18:06:27 +00:00
|
|
|
/***********************************************************/
|
|
|
|
/*** retourne les notes pour un contrôle d'un enseignant ***/
|
|
|
|
/***********************************************************/
|
|
|
|
public function getNotesForControleEnseignant($enseignant, $annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
|
2015-11-14 17:33:06 +00:00
|
|
|
|
2015-12-02 19:12:34 +00:00
|
|
|
// on vérifie que le semestre existe et que l'enseignant y enseigne
|
|
|
|
if( !($enseignantUID=userRepo::UID($enseignant)) ) return 'unknown_teacher';
|
|
|
|
|
2015-11-14 17:33:06 +00:00
|
|
|
// on récupère les informations du contrôle
|
2015-12-01 17:15:44 +00:00
|
|
|
if( !($controlObj=controleRepo::info($controle, $enseignant, $groupe)) ) return 'unknown_controle';
|
2015-11-15 11:15:30 +00:00
|
|
|
|
2015-11-16 09:34:41 +00:00
|
|
|
// on ajoute la moyenne au contrôle
|
|
|
|
$controlObj['moyenne'] = noteRepo::moyenneForControle($controlObj['id']);
|
2015-11-15 23:09:04 +00:00
|
|
|
|
2015-11-15 11:15:30 +00:00
|
|
|
/* [1] si le groupe est donné
|
|
|
|
=======================================*/
|
|
|
|
if( $groupe != null ){
|
2015-11-30 18:32:05 +00:00
|
|
|
if( !($groupeUID=groupRepo::info($groupe)['id']) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID; // on récupère l'UID du groupe
|
2015-11-15 11:15:30 +00:00
|
|
|
|
2016-01-07 22:17:23 +00:00
|
|
|
$controlObj['moyenneGroupe'] = noteRepo::forGroupe($controle, $groupeUID)['moyenne'];
|
|
|
|
|
2015-11-15 11:15:30 +00:00
|
|
|
$controlObj['userlist'] = groupRepo::membres($groupeUID, $controlObj['id_semestre']); // on récupère la liste des étudiants de ce groupe
|
|
|
|
|
|
|
|
foreach($controlObj['userlist'] as $iter=>$note)
|
|
|
|
if( $resultNote = noteRepo::forStudent($controlObj['userlist'][$iter]['identifiant'], $controle) ) // si l'étudiant a une note pour ce controle
|
|
|
|
$controlObj['userlist'][$iter]['note'] = $resultNote[0]['valeur'];
|
|
|
|
else
|
|
|
|
$controlObj['userlist'][$iter]['note'] = null;
|
|
|
|
|
|
|
|
/* [2] si on veut par groupe
|
|
|
|
=======================================*/
|
|
|
|
}else{
|
2015-12-01 17:15:44 +00:00
|
|
|
$controlObj['grouplist'] = groupRepo::forControle($controle, $enseignant);
|
2015-11-15 22:29:39 +00:00
|
|
|
|
|
|
|
foreach($controlObj['grouplist'] as $iter=>$grpe)
|
|
|
|
if( $controleNotes = noteRepo::forGroupe($controle, $grpe['id_groupe']) ) // si le groupe a des notes, on les ajoutes
|
|
|
|
$controlObj['grouplist'][$iter] = array_merge($controlObj['grouplist'][$iter], $controleNotes);
|
|
|
|
|
2015-11-15 11:15:30 +00:00
|
|
|
}
|
2015-11-14 17:33:06 +00:00
|
|
|
|
2015-11-15 11:15:30 +00:00
|
|
|
return $controlObj;
|
2015-11-14 17:33:06 +00:00
|
|
|
}
|
|
|
|
|
2015-11-26 18:06:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************/
|
|
|
|
/*** retourne les notes pour un contrôle ***/
|
|
|
|
/*******************************************/
|
|
|
|
public function getNotesForControle($annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
|
|
|
|
|
|
|
|
// on récupère les informations du contrôle
|
2016-01-02 13:21:31 +00:00
|
|
|
if( !($controlObj=controleRepo::info($controle)) ) return 'unknown_controle';
|
2015-11-26 18:06:27 +00:00
|
|
|
|
|
|
|
// on ajoute la moyenne au contrôle
|
|
|
|
$controlObj['moyenne'] = noteRepo::moyenneForControle($controlObj['id']);
|
|
|
|
|
|
|
|
/* [1] si le groupe est donné
|
|
|
|
=======================================*/
|
|
|
|
if( $groupe != null ){
|
2015-11-30 18:32:05 +00:00
|
|
|
if( !($groupeUID=groupRepo::info($groupe)['id']) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID; // on récupère l'UID du groupe
|
2015-11-26 18:06:27 +00:00
|
|
|
|
2016-01-07 22:17:23 +00:00
|
|
|
$controlObj['moyenneGroupe'] = noteRepo::forGroupe($controle, $groupeUID)['moyenne'];
|
|
|
|
|
2015-11-26 18:06:27 +00:00
|
|
|
$controlObj['userlist'] = groupRepo::membres($groupeUID, $controlObj['id_semestre']); // on récupère la liste des étudiants de ce groupe
|
|
|
|
|
|
|
|
foreach($controlObj['userlist'] as $iter=>$note)
|
|
|
|
if( $resultNote = noteRepo::forStudent($controlObj['userlist'][$iter]['identifiant'], $controle) ) // si l'étudiant a une note pour ce controle
|
|
|
|
$controlObj['userlist'][$iter]['note'] = $resultNote[0]['valeur'];
|
|
|
|
else
|
|
|
|
$controlObj['userlist'][$iter]['note'] = null;
|
|
|
|
|
|
|
|
/* [2] si on veut par groupe
|
|
|
|
=======================================*/
|
|
|
|
}else{
|
|
|
|
$controlObj['grouplist'] = groupRepo::forControle($controle);
|
|
|
|
|
|
|
|
foreach($controlObj['grouplist'] as $iter=>$grpe)
|
|
|
|
if( $controleNotes = noteRepo::forGroupe($controle, $grpe['id_groupe']) ) // si le groupe a des notes, on les ajoutes
|
|
|
|
$controlObj['grouplist'][$iter] = array_merge($controlObj['grouplist'][$iter], $controleNotes);
|
|
|
|
|
|
|
|
// var_dump( $controlObj );
|
|
|
|
debug();
|
|
|
|
}
|
|
|
|
|
|
|
|
return $controlObj;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-14 17:33:06 +00:00
|
|
|
|
2015-11-15 14:12:26 +00:00
|
|
|
/******************************************/
|
|
|
|
/*** saisie note étudiant à un contrôle ***/
|
|
|
|
/******************************************/
|
|
|
|
public function saisieNote($etudiant, $controle, $note){
|
|
|
|
// on vérifie l'existence de l'étudiant et du contrôle, ainsi que la cohérence de la note (pas supérieure à la base)
|
|
|
|
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
|
|
|
|
if( !($controleInfo=controleRepo::info($controle)) ) return 'unknown_controle';
|
|
|
|
if( $note > $controleInfo['base'] ) return 'unknown_note';
|
2015-11-14 17:33:06 +00:00
|
|
|
|
2015-11-15 14:12:26 +00:00
|
|
|
// saisie de la note
|
|
|
|
$rep = noteRepo::creer($etudiantUID, $controleInfo['id'], $controleInfo['id_semestre'], $note);
|
|
|
|
|
2015-11-18 09:05:15 +00:00
|
|
|
// var_dump( $rep );
|
|
|
|
|
2015-11-15 14:12:26 +00:00
|
|
|
if( $rep )
|
|
|
|
return 'success';
|
2015-10-29 23:01:35 +00:00
|
|
|
else
|
2015-11-15 14:12:26 +00:00
|
|
|
return 'error';
|
2015-10-29 23:01:35 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-22 15:34:07 +00:00
|
|
|
|
|
|
|
/******************************/
|
|
|
|
/*** saisie notes multiples ***/
|
|
|
|
/******************************/
|
2015-11-22 16:23:01 +00:00
|
|
|
public function saisieNoteMultiple($controle, $notes){
|
|
|
|
if( !($controleInfo=controleRepo::info($controle)) ) return 'unknown_controle';
|
2015-11-22 15:34:07 +00:00
|
|
|
|
2016-01-03 21:02:46 +00:00
|
|
|
foreach($notes as $iter=>$NOTE){
|
|
|
|
|
|
|
|
$NOTE->valeur = floatval($NOTE->valeur);
|
2015-11-22 15:34:07 +00:00
|
|
|
|
|
|
|
// on vérifie l'existence de l'étudiant et du contrôle, ainsi que la cohérence de la note (pas supérieure à la base)
|
2016-01-03 21:02:46 +00:00
|
|
|
if( !(userRepo::UID($NOTE->etudiant)) ) return 'unknown_user';
|
2015-11-22 15:34:07 +00:00
|
|
|
|
|
|
|
// si la note > base du contrôle, on supprime la note
|
2016-01-03 21:02:46 +00:00
|
|
|
if( $NOTE->valeur > $controleInfo['base'] )
|
2015-11-22 15:34:07 +00:00
|
|
|
unset( $notes[$iter] );
|
|
|
|
}
|
|
|
|
|
|
|
|
// saisie multiple des notes
|
2015-11-22 16:23:01 +00:00
|
|
|
$rep = noteRepo::creerMultiple($controleInfo['id'], $controleInfo['id_semestre'], $notes);
|
2015-11-22 15:34:07 +00:00
|
|
|
|
|
|
|
if( $rep )
|
|
|
|
return 'success';
|
|
|
|
else
|
|
|
|
return 'error';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-01-09 15:02:30 +00:00
|
|
|
/***************************************************************************************************
|
|
|
|
|
|
|
|
** ad88888ba 88888888888 db 88888888ba ,ad8888ba, 88 88 **
|
|
|
|
** d8" "8b 88 d88b 88 "8b d8"' `"8b 88 88 **
|
|
|
|
** Y8, 88 d8'`8b 88 ,8P d8' 88 88 **
|
|
|
|
** `Y8aaaaa, 88aaaaa d8' `8b 88aaaaaa8P' 88 88aaaaaaaa88 **
|
|
|
|
** `"""""8b, 88""""" d8YaaaaY8b 88""""88' 88 88""""""""88 **
|
|
|
|
** `8b 88 d8""""""""8b 88 `8b Y8, 88 88 **
|
|
|
|
** Y8a a8P 88 d8' `8b 88 `8b Y8a. .a8P 88 88 **
|
|
|
|
** "Y88888P" 88888888888 d8' `8b 88 `8b `"Y8888Y"' 88 88 **
|
|
|
|
|
|
|
|
*****************************************************************************************************/
|
|
|
|
|
2016-01-09 16:02:54 +00:00
|
|
|
public function searchForUsers($keyword){
|
2016-01-09 15:02:30 +00:00
|
|
|
|
2016-01-09 16:02:54 +00:00
|
|
|
$results = groupRepo::search($keyword);
|
|
|
|
|
|
|
|
// si aucun erreur, on retourne FAUX
|
|
|
|
if ( !$results ) return false;
|
|
|
|
|
|
|
|
//On classe les résultats en fonction de si c'est un étudiant ou bien un professeur
|
|
|
|
foreach ($results as $num=>$user) {
|
|
|
|
// On supprime tous les non-étudiants
|
|
|
|
if( $user['droits'] != 'student')
|
|
|
|
unset($results[$num]);
|
2016-01-09 15:02:30 +00:00
|
|
|
}
|
2016-01-09 16:02:54 +00:00
|
|
|
|
|
|
|
return $results;
|
2016-01-09 15:02:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-22 12:06:49 +00:00
|
|
|
}
|
|
|
|
|
2015-11-13 13:55:48 +00:00
|
|
|
?>
|