2015-11-10 23:04:56 +00:00
|
|
|
<?php require_once __ROOT__.'/manager/security.php';
|
|
|
|
|
|
|
|
/**************************************************/
|
|
|
|
/* _ _ _____ ____ _____ ____ ___ */
|
|
|
|
/* | | | | ____| | _ \| ____| _ \ / _ \ */
|
|
|
|
/* | | | | _| | |_) | _| | |_) | | | | */
|
|
|
|
/* | |_| | |___ | _ <| |___| __/| |_| | */
|
|
|
|
/* \___/|_____| |_| \_\_____|_| \___/ */
|
|
|
|
/* */
|
|
|
|
/**************************************************/
|
|
|
|
|
|
|
|
class ueRepo extends DBAccess{
|
|
|
|
/* VERIFIE L'EXISTENCE D'UN UE DANS LA BDD
|
|
|
|
*
|
|
|
|
* @nom<String> le nom de l'UE recherchée
|
|
|
|
*
|
|
|
|
* @return UID<int> si l'UE est dans la BDD, retourne son UID
|
|
|
|
* @return FALSE<Boolean> FAUX si l'UE' n'est pas présent dans la BDD
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function UID($nom){
|
2015-11-11 20:53:33 +00:00
|
|
|
$getUEUID = DataBase::getPDO()->prepare("SELECT DISTINCT id_ue as id FROM ue WHERE nom = :nom");
|
2015-11-10 23:04:56 +00:00
|
|
|
$getUEUID->execute(array( ':nom' => $nom ));
|
|
|
|
|
|
|
|
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID du module
|
|
|
|
return $getUEUID->fetch()['id'];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* RENVOIE LES INFORMATIONS D'UN UE D'UID DONNÉ
|
|
|
|
*
|
|
|
|
* @UEUID<int> l'UID de l'UE duquel on veut les infos
|
|
|
|
*
|
|
|
|
* @return UE<Array> tableau associatif contenant tout les champs de la BDD pour cet UE
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function info($UEUID){
|
2015-11-11 20:53:33 +00:00
|
|
|
$getUEInfo = DataBase::getPDO()->prepare("SELECT DISTINCT id_ue as id, nom, libelle FROM ue WHERE id_ue = :UEUID");
|
2015-11-10 23:04:56 +00:00
|
|
|
$getUEInfo->execute(array( ':UEUID' => $UEUID ));
|
|
|
|
|
|
|
|
// on retourne le résultat en supprimant les doublons à indices numériques
|
2016-01-02 19:59:31 +00:00
|
|
|
return DataBase::delNumeric( $getUEInfo->fetch(), true );
|
2015-11-10 23:04:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* RENVOIE LA LISTE DES UEs QU'A UN ETUDIANT POUR UN SEMESTRE
|
|
|
|
*
|
|
|
|
* @etudiant<String> Identifiant de l'étudiant
|
|
|
|
* @semestre<int> l'UID du semestre
|
2015-11-11 00:06:24 +00:00
|
|
|
*
|
2015-11-10 23:04:56 +00:00
|
|
|
* @return UEs<Array> retourne un tableau contenant les UEs de l'utilisateur pour ce semestre
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function forStudent($etudiant, $semestre){
|
2016-01-08 22:34:17 +00:00
|
|
|
// on récupère les UEs
|
2015-12-01 19:00:37 +00:00
|
|
|
$getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle, mcc_ue.coefficient
|
2015-11-17 12:00:50 +00:00
|
|
|
FROM appartenance as app, semestre as s, mcc_ue, ue
|
|
|
|
WHERE app.id_semestre = s.id_semestre
|
|
|
|
AND mcc_ue.id_semestre = s.id_semestre
|
|
|
|
AND mcc_ue.id_ue = ue.id_ue
|
|
|
|
|
|
|
|
AND app.id_etudiant = :etudiant
|
|
|
|
AND s.id_semestre = :semestre
|
|
|
|
ORDER BY ue.nom, ue.libelle");
|
2015-11-10 23:04:56 +00:00
|
|
|
$getUesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
|
|
|
|
|
|
|
|
return DataBase::delNumeric( $getUesForStudent->fetchAll() );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-16 12:28:24 +00:00
|
|
|
/* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UN SEMESTRE
|
2015-11-11 17:23:37 +00:00
|
|
|
*
|
|
|
|
* @enseignant<String> Identifiant de l'enseignant
|
2015-11-16 12:28:24 +00:00
|
|
|
* @semestre<int> l'UID du semestre en question
|
2015-11-11 17:23:37 +00:00
|
|
|
*
|
2015-11-16 12:28:24 +00:00
|
|
|
* @return UEs<Array> retourne un tableau contenant les UEs de l'enseignant pour ce semestre
|
2015-11-11 17:23:37 +00:00
|
|
|
*
|
|
|
|
*/
|
2015-11-16 12:28:24 +00:00
|
|
|
public static function forTeacher($enseignant, $semestre){
|
2015-11-11 17:23:37 +00:00
|
|
|
// on récupère les modules
|
2015-12-01 19:00:37 +00:00
|
|
|
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle, mcc_ue.coefficient
|
2015-11-17 12:00:50 +00:00
|
|
|
FROM enseignement as ens, semestre as s, ue, mcc_ue, mcc_module as mcc_m
|
|
|
|
WHERE ens.id_mcc_module = mcc_m.id_mcc_module
|
|
|
|
AND ens.correcteur = 1
|
|
|
|
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
|
|
|
AND mcc_ue.id_semestre = s.id_semestre
|
|
|
|
AND mcc_ue.id_ue = ue.id_ue
|
|
|
|
|
|
|
|
AND ens.id_enseignant = :enseignant
|
|
|
|
AND s.id_semestre = :semestre
|
|
|
|
|
|
|
|
ORDER BY ue.nom, ue.libelle ASC");
|
2015-11-16 12:28:24 +00:00
|
|
|
$getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre' => $semestre ));
|
2015-11-11 17:23:37 +00:00
|
|
|
|
|
|
|
return DataBase::delNumeric( $getUesForTeacher->fetchAll() );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-20 16:13:47 +00:00
|
|
|
/* RENVOIE LA LISTE DES UEs D'UN SEMESTRE (D'UNE ANNEE PARTICULIÈRE)
|
2015-11-11 21:54:52 +00:00
|
|
|
*
|
2015-11-16 11:02:03 +00:00
|
|
|
* @semestre<int> l'UID du semestre en question
|
2015-11-11 21:54:52 +00:00
|
|
|
*
|
2015-11-16 11:02:03 +00:00
|
|
|
* @return UEs<Array> retourne un tableau contenant les UEs du semestre en question
|
2015-11-11 21:54:52 +00:00
|
|
|
* @return existent<Boolean> FAUX si aucun UE n'a été trouvé
|
|
|
|
*
|
|
|
|
*/
|
2015-11-16 11:02:03 +00:00
|
|
|
public static function forYear($semestre){
|
2015-11-11 21:54:52 +00:00
|
|
|
// on récupère les modules
|
2015-12-01 19:00:37 +00:00
|
|
|
$getUEList = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle, mcc_ue.coefficient
|
2015-11-17 12:00:50 +00:00
|
|
|
FROM ue, mcc_ue, semestre as s
|
|
|
|
WHERE ue.id_ue = mcc_ue.id_ue
|
|
|
|
AND mcc_ue.id_semestre = s.id_semestre
|
2015-11-11 21:54:52 +00:00
|
|
|
|
2015-11-17 12:00:50 +00:00
|
|
|
AND s.id_semestre = :semestre
|
2015-12-02 21:01:00 +00:00
|
|
|
ORDER BY s.rang, ue.nom, ue.libelle ASC");
|
2015-11-16 11:02:03 +00:00
|
|
|
$getUEList->execute(array( ':semestre' => $semestre ));
|
2015-11-11 21:54:52 +00:00
|
|
|
|
2015-11-16 11:02:03 +00:00
|
|
|
return DataBase::delNumeric( $getUEList->fetchAll() );
|
2015-11-11 21:54:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-10 23:04:56 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-11 00:06:24 +00:00
|
|
|
/* CREE UN NOUVEL UE DANS LA BASE DE DONNES
|
2015-11-10 23:04:56 +00:00
|
|
|
*
|
2015-11-11 00:06:24 +00:00
|
|
|
* @nom<String> le nom du nouvel UE
|
|
|
|
* @libelle<String> le libellé du nouvel UE
|
2015-11-10 23:04:56 +00:00
|
|
|
*
|
2015-11-11 00:06:24 +00:00
|
|
|
* @return UID<String> l'UID du nouveal UE s'il a bien été créé
|
|
|
|
* @return created<Boolean> VRAI si l'UE n'existait pas déjà* et qu'il a bien été créé
|
2015-11-10 23:04:56 +00:00
|
|
|
* (*) Si aucun autre n'avait le même @nom
|
|
|
|
*/
|
|
|
|
public static function creer($nom, $libelle){
|
|
|
|
/* [1] On normalise les données
|
|
|
|
=================================================================================================*/
|
2015-11-11 00:06:24 +00:00
|
|
|
$nom = strtoupper($nom); // nom en majuscules
|
2015-11-10 23:04:56 +00:00
|
|
|
|
|
|
|
/* [2] On vérifie que le module n'est pas déjà créé
|
|
|
|
=================================================================================================*/
|
2015-11-11 00:06:24 +00:00
|
|
|
if( ueRepo::UID($nom) ) // si on a un résultat, c'est qu'un module a déjà cee nom
|
2015-11-10 23:04:56 +00:00
|
|
|
return false;
|
|
|
|
|
2015-11-11 00:06:24 +00:00
|
|
|
/* [3] On créé le nouvel UE
|
2015-11-10 23:04:56 +00:00
|
|
|
=================================================================================================*/
|
2015-11-17 12:00:50 +00:00
|
|
|
$creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
|
2015-11-11 00:06:24 +00:00
|
|
|
$creationUE->execute(array(
|
|
|
|
':nom' => $nom,
|
|
|
|
':libelle' => $libelle
|
2015-11-10 23:04:56 +00:00
|
|
|
));
|
|
|
|
|
|
|
|
|
2015-11-11 00:06:24 +00:00
|
|
|
/* [4] On vérifie que l'UE a bien été créé
|
2015-11-10 23:04:56 +00:00
|
|
|
=================================================================================================*/
|
2015-11-11 00:06:24 +00:00
|
|
|
return ueRepo::UID($nom);
|
2015-11-10 23:04:56 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-20 16:13:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* retourne l'UID d'un mcc_ue s'il existe sinon créé tout ce qui a besoin et on retourne l'UID
|
|
|
|
*
|
|
|
|
* @semestre<int> l'UID du semestre en question
|
|
|
|
* @nom<String> le code de l'UE en question
|
|
|
|
* @libelle<String> le libellé de l'UE en question
|
|
|
|
* @coefficient<Float> le coefficient de l'UE en question dans le semestre en question
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return UID<int> retourne l'UID du MCC_UE si tout s'est bien passé
|
|
|
|
* @return FALSE<Boolean> retourne FALSE s'il y a eu une erreur
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function forMCC($semestre, $nom, $libelle, $coefficient){
|
|
|
|
$count = 0;
|
|
|
|
|
|
|
|
/* ON VÉRIFIE QUE L'UE EN LUI-MÊME (NOM/LIBELLÉ) EXISTE DANS LA BDD */
|
|
|
|
$getUEUID = DataBase::getPDO()->prepare("SELECT id_ue as id FROM ue WHERE nom = :nom AND libelle = :libelle");
|
|
|
|
$getUEUID->execute(array( ':nom' => $nom, ':libelle' => $libelle ));
|
|
|
|
|
|
|
|
while( !$ueUID = $getUEUID->fetch()['id'] ){ // on vérifie l'existence de cet UE
|
|
|
|
|
|
|
|
/* [1] SI UE N'EXISTE PAS => ON LE CRÉÉ
|
|
|
|
=====================================================*/
|
|
|
|
$creerUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
|
|
|
|
$creerUE->execute(array( ':nom' => $nom, ':libelle' => $libelle ));
|
|
|
|
|
|
|
|
$getUEUID = DataBase::getPDO()->prepare("SELECT id_ue as id FROM ue WHERE nom = :nom AND libelle = :libelle");
|
|
|
|
$getUEUID->execute(array( ':nom' => $nom, ':libelle' => $libelle ));
|
|
|
|
|
|
|
|
if( $count > 10 ) return false;
|
|
|
|
$count++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* ON VÉRIFIE QUE L'UE APPARTIENT AU MCC DE CE SEMESTRE */
|
|
|
|
$getMccUEUID = DataBase::getPDO()->prepare("SELECT mcc_ue.id_mcc_ue as id
|
|
|
|
FROM ue, mcc_ue
|
|
|
|
WHERE mcc_ue.id_ue = ue.id_ue
|
|
|
|
AND mcc_ue.id_semestre = :semestre
|
|
|
|
AND ue.id_ue = :ueUID");
|
|
|
|
$getMccUEUID->execute(array( ':semestre' => $semestre, ':ueUID' => $ueUID ));
|
|
|
|
|
|
|
|
while( !($mccUeUID=$getMccUEUID->fetch()['id']) ){ // si on a pas de résultat ou qu'on a un résultat différent de l'ueUID déjà récupéré
|
|
|
|
|
|
|
|
/* [2] SI LE MCC_UE N'EXISTE PAS => ON LE CRÉÉ
|
|
|
|
==========================================================*/
|
|
|
|
$creeMccUE = DataBase::getPDO()->prepare("INSERT INTO mcc_ue(id_mcc_ue, id_semestre, id_ue, coefficient) VALUES(DEFAULT, :semestre, :ueUID, :coefficient)");
|
|
|
|
$creeMccUE->execute(array( ':semestre' => $semestre, ':ueUID' => $ueUID, ':coefficient' => $coefficient ));
|
|
|
|
|
|
|
|
$getMccUEUID = DataBase::getPDO()->prepare("SELECT mcc_ue.id_mcc_ue as id
|
|
|
|
FROM ue, mcc_ue
|
|
|
|
WHERE mcc_ue.id_ue = ue.id_ue
|
|
|
|
AND mcc_ue.id_semestre = :semestre
|
|
|
|
AND ue.id_ue = :ueUID");
|
|
|
|
$getMccUEUID->execute(array( ':semestre' => $semestre, ':ueUID' => $ueUID ));
|
|
|
|
|
|
|
|
|
|
|
|
if( $count > 10 ) return false;
|
|
|
|
$count++;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [3] ON MET À JOUR LE COEFFICIENT AU CAS OÙ LE MCC_UE EXISTAIT
|
|
|
|
==================================================================*/
|
|
|
|
$updateCoeff = DataBase::getPDO()->prepare("UPDATE mcc_ue SET coefficient = :coefficient WHERE id_mcc_ue = :mccUeUID");
|
|
|
|
$updateCoeff->execute(array( ':coefficient' => $coefficient, ':mccUeUID' => $mccUeUID ));
|
|
|
|
|
|
|
|
// on retourne enfin l'UID du mcc_ue en question
|
|
|
|
return $mccUeUID;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-01-08 22:34:17 +00:00
|
|
|
|
|
|
|
/* DEFINIT SI UN UE EST PRIS EN COMPTE OU NON (CAPITALISATION)
|
|
|
|
*
|
|
|
|
* @semestre<int> UID du semestre en question
|
|
|
|
* @etudiant<String> UID de l'étudiant en question
|
|
|
|
* @ue<int> UID de l'UE en question
|
|
|
|
* @active<Boolean> VRAI si on veut qu'il soit pris en compte, NON sinon
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return state<Boolean> VRAI si les changements sont pris en compte, sinon FAUX
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function capitalisation($semestre, $etudiant, $ue, $active){
|
|
|
|
/* [1] On récupère l'appartenance
|
|
|
|
==========================================================================*/
|
|
|
|
$getUEState = DataBase::getPDO()->prepare("SELECT *
|
|
|
|
FROM appartenance
|
|
|
|
WHERE id_semestre = :semestre
|
|
|
|
AND id_etudiant = :etudiant");
|
|
|
|
$getUEState->execute(array( ':semestre' => $semestre, ':etudiant' => $etudiant ));
|
|
|
|
|
|
|
|
// si on trouve aucune appartenance, on retourne FAUX
|
|
|
|
if( !($ueState=$getUEState->fetch()) ) return false;
|
|
|
|
|
|
|
|
$stateArray = explode(',', $ueState['inactive'] );
|
|
|
|
// on supprime les entrées vides
|
|
|
|
foreach($stateArray as $i=>$state)
|
|
|
|
if( strlen($state) == 0 )
|
|
|
|
unset($stateArray[$i]);
|
|
|
|
|
|
|
|
/* [2] On met à jour "inactive" pour enlever ou mettre l'UE
|
|
|
|
==========================================================================*/
|
|
|
|
if( $active && in_array($ue, $stateArray) ) // si on doit enlever l'ue et qu'il y est
|
|
|
|
array_splice($stateArray, array_search($ue, $stateArray), 1 ); // => on enleve l'ue
|
|
|
|
|
|
|
|
if( !$active && !in_array($ue, $stateArray) ) // si on doit ajouter l'ue et qu'il n'y est pas encore
|
|
|
|
array_push($stateArray, $ue); // => on ajoute l'ue
|
|
|
|
|
|
|
|
$stateString = implode(',', $stateArray);
|
|
|
|
|
|
|
|
/* [3] On met à jour dans la base de données
|
|
|
|
==========================================================================*/
|
|
|
|
$setUEState = DataBase::getPDO()->prepare("UPDATE appartenance
|
|
|
|
SET inactive = :uestate
|
|
|
|
WHERE id_appartenance = :appartenance");
|
|
|
|
$setUEState->execute(array( ':uestate' => $stateString, ':appartenance' => $ueState['id_appartenance'] ));
|
|
|
|
|
|
|
|
/* [4] On vérifie que la modification a bien été faite
|
|
|
|
==========================================================================*/
|
|
|
|
$getVerifState = DataBase::getPDO()->prepare("SELECT inactive FROM appartenance WHERE id_appartenance = :appartenance");
|
|
|
|
$getVerifState->execute(array( ':appartenance' => $ueState['id_appartenance'] ));
|
|
|
|
|
|
|
|
if( !($verifState=$getVerifState->fetch()) ) return false;
|
|
|
|
|
|
|
|
return $verifState['inactive'] == $stateString;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-10 23:04:56 +00:00
|
|
|
}
|