sid/manager/repo/module.php

122 lines
4.3 KiB
PHP
Executable File

<?php require_once __ROOT__.'/manager/security.php';
/**************************************************************************/
/* __ __ ___ ____ _ _ _ _____ ____ _____ ____ ___ */
/* | \/ |/ _ \| _ \| | | | | | ____| | _ \| ____| _ \ / _ \ */
/* | |\/| | | | | | | | | | | | | _| | |_) | _| | |_) | | | | */
/* | | | | |_| | |_| | |_| | |___| |___ | _ <| |___| __/| |_| | */
/* |_| |_|\___/|____/ \___/|_____|_____| |_| \_\_____|_| \___/ */
/* */
/**************************************************************************/
class moduleRepo extends DBAccess{
/* VERIFIE L'EXISTENCE D'UN MODULE DANS LA BDD
*
* @nom<String> le nom du module recherché
*
* @return UID<int> si le module est dans la BDD, retourne son UID
* @return FALSE<Boolean> FAUX si le module n'est pas présent dans la BDD
*
*/
public static function UID($nom){
$getModuleUID = DataBase::getPDO()->prepare("SELECT id_module as id FROM module WHERE nom = :nom");
$getModuleUID->execute(array( ':nom' => $nom ));
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID du module
return $getModuleUID->fetch()['id'];
}
/* RENVOIE LES INFORMATIONS D'UN MODULE D'UID DONNÉ
*
* @moduleUID<int> l'UID du module duquel on veut les infos
*
* @return module<Array> tableau associatif contenant tout les champs de la BDD pour ce module
*
*/
public static function info($moduleUID){
$getModuleInfo = DataBase::getPDO()->prepare("SELECT id_module, nom, libelle FROM module WHERE id_module = :moduleUID");
$getModuleInfo->execute(array( ':moduleUID' => $moduleUID ));
// on retourne le résultat en supprimant les doublons à indices numériques
return $getModuleInfo->fetch();
}
/* RENVOIE LA LISTE DES MODULES QU'A UN ETUDIANT POUR UN SEMESTRE
*
* @etudiant<String> Identifiant de l'étudiant
* @semestre<int> l'UID du semestre
*
* @return modules<Array> retourne un tableau contenant les modules de l'utilisateur pour ce semestre
*
*/
public static function forStudent($etudiant, $semestre){
// on récupère les modules
$getModulesForStudent = DataBase::getPDO()->prepare("SELECT m.id_module as id, m.nom, m.libelle ".
"FROM module as m, appartenance as app, semestre as s, mcc_ue, mcc_module as mcc_m ".
"WHERE app.id_semestre = s.id_semestre ".
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND mcc_m.id_module = m.id_module ".
"AND app.id_etudiant = :etudiant ".
"AND s.id_semestre = :semestre ".
"ORDER BY m.nom, m.libelle");
$getModulesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForStudent->fetchAll() );
}
/* CREE UN NOUVEAU MODULE DANS LA BASE DE DONNES
*
* @nom<String> le nom du nouveau module
* @libelle<String> le libellé du nouveau module
*
* @return UID<String> l'UID du nouveau module s'il a bien été créé
* @return created<Boolean> VRAI si le module n'existait pas déjà* et qu'il a bien été créé
* (*) Si aucun autre n'avait le même @nom
*/
public static function creer($nom, $libelle){
/* [1] On normalise les données
=================================================================================================*/
$nom = strtoupper($nom); // nom en majuscules
/* [2] On vérifie que le module n'est pas déjà créé
=================================================================================================*/
if( $this->UID($nom) ) // si on a un résultat, c'est qu'un module a déjà cee nom
return false;
/* [3] On créé le nouvel utilisateur
=================================================================================================*/
$creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) ".
"VALUES(DEFAULT, :nom, :libelle)");
$creationModule->execute(array(
':nom' => $nom,
':libelle' => $libelle
));
/* [4] On vérifie que l'utilisateur a bien été créé
=================================================================================================*/
return $this->UID($nom);
}
}