From 4b78463224b4c4ba96b994b169ed115a29961bac Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Wed, 11 Nov 2015 00:04:56 +0100 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20des=20repos=20module.php/ue.php?= =?UTF-8?q?=20+=20augmentation=20de=20userRepo::UID($identifiant,=20$semes?= =?UTF-8?q?tre,=20$annee)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/database.php | 284 ++++---------------------------------- manager/repo/module.php | 122 ++++++++++++++++ manager/repo/semestre.php | 10 ++ manager/repo/ue.php | 121 ++++++++++++++++ manager/repo/user.php | 46 +++++- 5 files changed, 319 insertions(+), 264 deletions(-) create mode 100755 manager/repo/module.php create mode 100755 manager/repo/ue.php diff --git a/manager/database.php b/manager/database.php index 18f9a2e..5988daf 100755 --- a/manager/database.php +++ b/manager/database.php @@ -4,8 +4,8 @@ require_once __ROOT__.'/manager/repo/user.php'; // gestion des utilisateurs (UID, infos, création, modification) require_once __ROOT__.'/manager/repo/group.php'; // gestion des groupes & appartenances (UID, ajouter membres, visu membres, création, modification) require_once __ROOT__.'/manager/repo/semestre.php'; -// require_once __ROOT__.'/manager/repo/module.php'; -// require_once __ROOT__.'/manager/repo/ue.php'; +require_once __ROOT__.'/manager/repo/module.php'; +require_once __ROOT__.'/manager/repo/ue.php'; // require_once __ROOT__.'/manager/repo/note.php'; // debug(); @@ -109,7 +109,7 @@ class DataBase{ /*** on récupère les informations utiles à l'utilisateur lors de la connection ***/ /*********************************************************************************/ public function utilisateurInfo($identifiant){ - // si l'utilisateur n'existe pas on retourne 'unknown_user' + // on vérifie que l'utilisateur existe if( !($utilisateurUID=userRepo::UID($identifiant)) ) return 'unknown_user'; return userRepo::info($utilisateurUID); @@ -156,13 +156,9 @@ class DataBase{ /*** ajout d'un utilisateur à un groupe dans la bdd ***/ /******************************************************/ public function ajouterEtudiantGroupe($etudiant, $groupe, $semestre, $annee){ - // si on trouve pas, on retourne "unknown_user" + // on vérifie que l'utilisateur, le groupe, le semestre existent if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; - - // si on trouve pas, on retourne 'unknown_group' sinon on définit la variable if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID; - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; @@ -176,11 +172,8 @@ class DataBase{ /*** retourne la liste des utilisateurs d'un groupe ***/ /******************************************************/ public function listeEtudiantsGroupe($groupe, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_group' sinon on définit la variable + // on vérifie que le groupe et le semestre existent if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID; - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; @@ -210,7 +203,7 @@ class DataBase{ /*** retourne la liste des utilisateurs des groupes d'un semestre ***/ /********************************************************************/ public function listeEtudiantsTousGroupesSemestre($semestre, $annee){ - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre existe if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; @@ -257,6 +250,7 @@ class DataBase{ $groupeOpt = '%'; if( $pGroupe != null ){ $groupeOpt = $pGroupe; } // si le groupe est donné, on le définit + /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ $checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); $checkAnnee->execute(array( @@ -385,11 +379,8 @@ class DataBase{ /*** retourne le nom du groupe d'un étudiant ***/ /***********************************************/ public function getGroupeEtudiant($etudiant, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre et l'utilisateur existent if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - // si on trouve pas, on retourne "unknown_user" if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; @@ -541,11 +532,8 @@ class DataBase{ /*** retourne les modules d'un étudiant par UEs ***/ /**************************************************/ public function getModulesByUEByEtudiant($etudiant, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre et l'utilisateur existent if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - // si on trouve pas, on retourne "unknown_user" if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; @@ -608,58 +596,12 @@ class DataBase{ /*** retourne les modules d'un étudiant ***/ /******************************************/ public function getModulesEtudiant($etudiant, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre et l'étudiant existent if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - // si on trouve pas, on retourne "unknown_user" if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; - - - - - /*** on cherche le groupe de cet utilisateur ***/ - $getGroupeUID = DataBase::getPDO()->prepare("SELECT g.id_groupe as id ". - "FROM utilisateur as u, groupe as g, appartenance as app, semestre as s ". - "WHERE app.id_etudiant = u.identifiant ". - "AND app.id_groupe = g.id_groupe ". - "AND app.id_semestre = :semestreUID ". - - "AND u.identifiant = :etudiantUID"); - $getGroupeUID->execute(array( - ':etudiantUID' => $etudiantUID, - ':semestreUID' => $semestreUID - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $groupeUID = $getGroupeUID->fetch()['id'] ) - $groupeUID = $groupeUID; - else - return 'unknown_group'; - - // si on a l'UID utilisateur & l'UID groupe => on récupère les modules - $getModuleList = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom as nom, m.libelle as libelle ". - "FROM module as m, groupe as g, semestre as s, ue, appartenance as app, mcc_ue, mcc_module as mcc_m ". - "WHERE app.id_semestre = s.id_semestre ". - "AND app.id_groupe = g.id_groupe ". - "AND app.id_semestre = mcc_ue.id_semestre ". - - "AND mcc_ue.id_ue = ue.id_ue ". - "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". - "AND mcc_m.id_module = m.id_module ". - - "AND g.id_groupe = :groupeUID ". - "AND s.rang = :semestre ". - "AND s.annee = :annee ". - "ORDER BY m.nom, m.libelle ASC"); - $getModuleList->execute(array( - ':groupeUID' => $groupeUID, - ':semestre' => $semestre, - ':annee' => $annee - )); - + // on retourne les modules en supprimant les valeurs à indices numériques - return DataBase::delNumeric( $getModuleList->fetchAll() ); + return moduleRepo::forStudent($etudiantUID, $semestreUID); } @@ -667,58 +609,13 @@ class DataBase{ /*** retourne les UEs d'un étudiant ***/ /**************************************/ public function getUEsEtudiant($etudiant, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre et l'étudiant existent if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - // si on trouve pas, on retourne "unknown_user" if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; - - - /*** on cherche le groupe de cet utilisateur ***/ - $getGroupeUID = DataBase::getPDO()->prepare("SELECT g.id_groupe as id ". - "FROM utilisateur as u, groupe as g, appartenance as app, semestre as s ". - "WHERE app.id_etudiant = u.identifiant ". - "AND app.id_groupe = g.id_groupe ". - "AND app.id_semestre = s.id_semestre ". - - "AND u.identifiant = :etudiantUID ". - "AND app.id_semestre = :semestreUID"); - $getGroupeUID->execute(array( - ':etudiantUID' => $etudiantUID, - ':semestreUID' => $semestreUID, - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $groupeUID = $getGroupeUID->fetch()['id'] ) - $groupeUID = $groupeUID; - else - return 'unknown_group'; - - // si on a l'UID utilisateur & l'UID groupe => on récupère les modules - $getUEList = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.annee as annee, ue.nom as nom, ue.libelle as libelle ". - "FROM module as m, groupe as g, semestre as s, ue, appartenance as app, mcc_ue, mcc_module as mcc_m ". - "WHERE app.id_semestre = s.id_semestre ". - "AND app.id_groupe = g.id_groupe ". - "AND app.id_semestre = mcc_ue.id_semestre ". - - "AND mcc_ue.id_ue = ue.id_ue ". - "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". - - "AND mcc_m.id_module = m.id_module ". - - "AND g.id_groupe = :groupeUID ". - "AND app.id_semestre = :semestreUID ". - "ORDER BY m.nom, m.libelle ASC"); - $getUEList->execute(array( - ':groupeUID' => $groupeUID, - ':semestreUID' => $semestreUID - )); - // on retourne la liste d'UEs en supprimant les doublons à clés numériques - return DataBase::delNumeric( $getUEList->fetchAll() ); + return ueRepo::forStudent($etudiantUID, $semestreUID); } @@ -736,37 +633,8 @@ class DataBase{ /*** retourne les modules d'un étudiant par UEs ***/ /**************************************************/ public function getModulesByUEByEnseignant($enseignant, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); - $getSemestreUID->execute(array( - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( ! $getSemestreUID->fetch() ) - return 'unknown_year'; - - - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEnseignantUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ". - "FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ". - "WHERE u.identifiant = ens.id_enseignant ". - "AND ens.id_mcc_module = mcc_m.id_mcc_module ". - "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". - "AND mcc_ue.id_semestre = s.id_semestre ". - "AND s.annee = :annee ". - "AND u.identifiant = :enseignant"); - $getEnseignantUID->execute(array( - ':annee' => $annee, - ':enseignant' => $enseignant - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $enseignantUID = $getEnseignantUID->fetch()['id'] ) - $enseignantUID = $enseignantUID; - else - return 'unknown_teacher'; - + // on vérifie que l'enseignant enseigne bien cette année + if( !($enseignantUID=userRepo::UID($enseignant, null, $annee)) ) return 'unknown_teacher'; $UEList = $this->getUEsEnseignant($enseignant, $annee); // on récupère la liste des UEs @@ -803,37 +671,8 @@ class DataBase{ /*** retourne les UEs d'un enseignant ***/ /****************************************/ public function getUEsEnseignant($enseignant, $annee){ - /*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ - $getSemestreUID = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); - $getSemestreUID->execute(array( - ':annee' => $annee - )); - - // si on trouve, on le définit, sinon on retourne "unknown_group" - if( ! $getSemestreUID->fetch() ) - return 'unknown_year'; - - - - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEnseignantUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ". - "FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ". - "WHERE u.identifiant = ens.id_enseignant ". - "AND ens.id_mcc_module = mcc_m.id_mcc_module ". - "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". - "AND mcc_ue.id_semestre = s.id_semestre ". - "AND s.annee = :annee ". - "AND u.identifiant = :enseignant"); - $getEnseignantUID->execute(array( - ':annee' => $annee, - ':enseignant' => $enseignant - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $enseignantUID = $getEnseignantUID->fetch()['id'] ) - $enseignantUID = $enseignantUID; - else - return 'unknown_teacher'; + // on vérifie que l'enseignant enseigne bien cette année + if( !($enseignantUID=userRepo::UID($enseignant, null, $annee)) ) return 'unknown_teacher'; @@ -885,26 +724,9 @@ class DataBase{ /*** retourne les notes par modules ***/ /**************************************/ public function getNotesByModules($etudiant, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id FROM utilisateur as u, appartenance as app ". - "WHERE u.identifiant = app.id_etudiant ". - "AND u.identifiant = :etudiant ". - "AND app.id_semestre = :semestreUID"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant, - ':semestreUID' => $semestreUID - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; + if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; $notelist = array(); // tableau qui contiendra tout les modules @@ -932,27 +754,9 @@ class DataBase{ /*** retourne les notes par UE ***/ /*********************************/ public function getNotesByUEs($etudiant, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable - if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; - else $semestreUID = (int) $semestreUID; - - - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id FROM utilisateur as u, appartenance as app ". - "WHERE u.identifiant = app.id_etudiant ". - "AND u.identifiant = :etudiant ". - "AND app.id_semestre = :semestreUID"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant, - ':semestreUID' => $semestreUID - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; + // on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre + if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; + if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; $notelist = array(); // tableau qui contiendra tout les modules @@ -982,26 +786,9 @@ class DataBase{ /*** retourne les notes d'un module ***/ /**************************************/ public function getModuleNotes($etudiant, $module, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur as u, appartenance as app ". - "WHERE u.identifiant = app.id_etudiant ". - "AND u.identifiant = :etudiant ". - "AND app.id_semestre = :semestreUID"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant, - ':semestreUID' => $semestreUID - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; + if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; @@ -1067,26 +854,9 @@ class DataBase{ /*** retourne les notes d'un UE ***/ /**********************************/ public function getUENotes($etudiant, $UE, $semestre, $annee){ - - // si on trouve pas, on retourne 'unknown_semestre', sinon on définit la variable + // on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; - - - /*** on cherche un utilisateur avec cet identifiant ***/ - $getEtudiantUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur as u, appartenance as app ". - "WHERE u.identifiant = app.id_etudiant ". - "AND u.identifiant = :etudiant ". - "AND app.id_semestre = :semestreUID"); - $getEtudiantUID->execute(array( - ':etudiant' => $etudiant, - ':semestreUID' => $semestreUID - )); - - // si on trouve, on le définit, sinon on retourne "unknown_user" - if( $etudiantUID = $getEtudiantUID->fetch()['id'] ) - $etudiantUID = $etudiantUID; - else - return 'unknown_user'; + if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; /*** on cherche un module avec ce nom, en accord avec le semestre et l'étudiant ***/ diff --git a/manager/repo/module.php b/manager/repo/module.php new file mode 100755 index 0000000..ec59538 --- /dev/null +++ b/manager/repo/module.php @@ -0,0 +1,122 @@ + le nom du module recherché + * + * @return UID si le module est dans la BDD, retourne son UID + * @return FALSE 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 l'UID du module duquel on veut les infos + * + * @return module 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 Identifiant de l'étudiant + * @semestre l'UID du semestre + * + * @return modules 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 le nom du nouveau module + * @libelle le libellé du nouveau module + * + * @return UID l'UID du nouveau module s'il a bien été créé + * @return created 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); + + } + + + +} \ No newline at end of file diff --git a/manager/repo/semestre.php b/manager/repo/semestre.php index b8e2b01..106e7bc 100755 --- a/manager/repo/semestre.php +++ b/manager/repo/semestre.php @@ -38,6 +38,16 @@ class semestreRepo extends DBAccess{ } + + + + + + + + + + /* RENVOIE LES INFORMATIONS D'UN SEMESTRE D'UID DONNÉ * * @semestreUID l'UID du semestre duquel on veut les infos diff --git a/manager/repo/ue.php b/manager/repo/ue.php new file mode 100755 index 0000000..1ad4956 --- /dev/null +++ b/manager/repo/ue.php @@ -0,0 +1,121 @@ + le nom de l'UE recherchée + * + * @return UID si l'UE est dans la BDD, retourne son UID + * @return FALSE FAUX si l'UE' n'est pas présent dans la BDD + * + */ + public static function UID($nom){ + $getUEUID = DataBase::getPDO()->prepare("SELECT id_ue as id FROM ue WHERE nom = :nom"); + $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 l'UID de l'UE duquel on veut les infos + * + * @return UE tableau associatif contenant tout les champs de la BDD pour cet UE + * + */ + public static function info($UEUID){ + $getUEInfo = DataBase::getPDO()->prepare("SELECT id_ue, nom, libelle FROM ue WHERE id_ue = :UEUID"); + $getUEInfo->execute(array( ':UEUID' => $UEUID )); + + // on retourne le résultat en supprimant les doublons à indices numériques + return $getUEInfo->fetch(); + } + + + + + /* RENVOIE LA LISTE DES UEs QU'A UN ETUDIANT POUR UN SEMESTRE + * + * @etudiant Identifiant de l'étudiant + * @semestre l'UID du semestre + * + * @return UEs retourne un tableau contenant les UEs de l'utilisateur pour ce semestre + * + */ + public static function forStudent($etudiant, $semestre){ + // on récupère les modules + $getUesForStudent = DataBase::getPDO()->prepare("SELECT ue.id_ue as id, s.annee, ue.nom, ue.libelle ". + "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"); + $getUesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre )); + + return DataBase::delNumeric( $getUesForStudent->fetchAll() ); + } + + + + + + + + + + + + /* CREE UN NOUVEAU MODULE DANS LA BASE DE DONNES + * + * @nom le nom du nouveau module + * @libelle le libellé du nouveau module + * + * @return UID l'UID du nouveau module s'il a bien été créé + * @return created 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); + + } + + + +} \ No newline at end of file diff --git a/manager/repo/user.php b/manager/repo/user.php index aa423e1..659ff47 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -13,17 +13,48 @@ class userRepo extends DBAccess{ /* VERIFIE L'EXISTENCE D'UN UTILISATEUR DANS LA BDD * * @identifiant l'identifiant de l'utilisateur recherché - * + * + * @semestre ***OPTIONNEL*** l'UID du semestre auquel on veut vérifier que l'étudiant est inscrit + * @annee ***OPTIONNEL*** l'année auquelle on veut vérifier si l'enseignant enseigne + * * @return UID si l'utilisateur est dans la BDD, retourne son UID * @return FALSE FAUX si l'utilisateur n'est pas présent dans la BDD * */ - public static function UID($identifiant){ - /*** on cherche un utilisateur avec cet identifiant ***/ - $getUtilisateurUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant"); - $getUtilisateurUID->execute(array( - ':identifiant' => $identifiant - )); + public static function UID($identifiant, $semestre=null, $annee=null){ + if( $semestre == null && $annee == null ){ // on cherche un utilisateur avec cet identifiant + + /* [1] Cas où on cherche juste si l'utilisateur existe + =============================================================*/ + $getUtilisateurUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant"); + $getUtilisateurUID->execute(array( ':identifiant' => $identifiant )); + + }elseif( $semestre != null ){ + + /* [2] Cas où on cherche si un étudiant est inscrit à un semestre + ==============================================================*/ + $getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ". + "FROM utilisateur as u, appartenance as app ". + "WHERE u.identifiant = app.id_etudiant ". + "AND u.identifiant = :identifiant ". + "AND app.id_semestre = :semestre"); + $getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre )); + + }else{ + + /* [2] Cas où on cherche si un enseignant enseigne l'année donnée + ==============================================================*/ + $getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ". + "FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ". + "WHERE u.identifiant = ens.id_enseignant ". + "AND ens.id_mcc_module = mcc_m.id_mcc_module ". + "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". + "AND mcc_ue.id_semestre = s.id_semestre ". + "AND s.annee = :annee ". + "AND u.identifiant = :identifiant"); + $getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':annee' => $annee )); + + } // on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur return $getUtilisateurUID->fetch()['id']; @@ -115,4 +146,5 @@ class userRepo extends DBAccess{ } + } \ No newline at end of file