+
l'élément à activer
+ * @param clearParam VRAI si on doit supprimer les variables de l'URL
*
* [1] selectionne l'élément, l'affichage de la page associée est géré par pageManager.js
* [2] déselectionne l'élément précédemment selectioné
*
*/
- function selectSection(section){
+ function selectSection(section, clearParam){
+
+ // si la section est une string, on essaie de trouver l'élémnent associé
+ if( typeof section == 'string' )
+ section = document.querySelector('#MENU span[data-link='+section+']');
// si @subSection est un de type
qui a la propriété "data-link" [ET] section pas déjà active
if( section instanceof Element && section.tagName == 'SPAN' && section.dataset.hasOwnProperty('link') ){
+ if( clearParam === true ) // si clearParam est vrai
+ pageM.vars = new Array(pageM.vars[0]); // on efface les paramètres de l'URL
+
// on charge la page
pageM.setPage( section.dataset.link );
@@ -110,16 +127,16 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
pageM.xhr[pageM.xhr.length-1].addEventListener('load', function(){
// on récupère les sections du document
- var sections = document.querySelectorAll('#CONTAINER section[name]');
+ var sections = document.querySelectorAll('#CONTAINER section[name][data-title]');
if( sections != null ){ // si on en trouve
DOM.SUBSECTIONS.innerHTML = ""; // on efface le #SUBHEADER > nav <=> les liens des sous-parties
for( var i = 0 ; i < sections.length ; i++ ) // pour chaque section, on créé un lien correspondant
if( i == 0 ) // on active le premier
- DOM.SUBSECTIONS.innerHTML += "" +sections[i].title+ "";
+ DOM.SUBSECTIONS.innerHTML += "" +sections[i].getAttribute('data-title')+ "";
else // pas les autres
- DOM.SUBSECTIONS.innerHTML += "" +sections[i].title+ "";
+ DOM.SUBSECTIONS.innerHTML += "" +sections[i].getAttribute('data-title')+ "";
}
// si dans pageManager.js, on a une sous-partie et qu'elle existe physiquement
@@ -146,13 +163,16 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
}
+ // permet de recharger la page courante
+ function reload(){ selectSection(pageM.page); }
+
/* activation au chargement en fonction de la page courante de pageManager.js */
var lastSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
if( lastSection != null )
selectSection(lastSection); // on l'active
/* Gestion des liens du menu */
- DOM.MENU.addEventListener('click', function(e){ selectSection( e.target ); }, false);
+ DOM.MENU.addEventListener('click', function(e){ selectSection( e.target, true); }, false);
@@ -185,7 +205,7 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
remClass(lastSection, 'active'); // on la désactive
// on active la page associée
- var target = document.querySelector('#CONTAINER section[name='+subSection.dataset.sectname+']');
+ var target = document.querySelector('#CONTAINER section[name='+subSection.dataset.sectname+'][data-title]');
if( target != null )
addClass(target, 'active');
@@ -341,16 +361,15 @@ initForm( // initialisation du formulaire de connection
*
*
*/
-Shortcut('ctrl+alt+n', function(){
- pageM.vars[0] = 'notifications';
- selectSection( document.querySelector('#MENU > span[data-link=home]') );
-});
-
-// Shortcut('ctrl+alt+e', function(){
-// console.log(DOM.LOGOUT);
-// DOM.LOGOUT.click();
+// Shortcut('ctrl+alt+n', function(){
+// pageM.vars[0] = 'notifications';
+// selectSection( document.querySelector('#MENU > span[data-link=home]') );
// });
+Shortcut('ctrl+alt+e', function(){
+ addClass(DOM.WRAPPER, 'blurred');
+});
+
/* [6] GESTION DES LIENS SPÉCIFIQUES
==============================================================*/
diff --git a/js/pageManager.js b/js/pageManager.js
index eff3a10..45163bc 100755
--- a/js/pageManager.js
+++ b/js/pageManager.js
@@ -22,23 +22,22 @@ pageManager.prototype = {
ajax: function(pLink, pHandler, pMethod, pForm){
// on efface les requêtes qui sont terminées et on push une nouvelle
for( var i = 0 ; i < this.xhr.length ; i++ ){
- if( this.xhr[i].readyState == 4 ) // si terminée
+ // if( this.xhr[i].readyState == 4 ) // si terminée
this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée
}
- this.xhr.push(true);
- i = this.xhr.length-1;
+ var index;
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
- this.xhr[i] = new XMLHttpRequest();
+ index = this.xhr.push( new XMLHttpRequest() ) -1;
else // IE5, IE6
- this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest');
+ index = this.xhr.push( new ActiveXObject('Microsoft.XMLHttpRequest') ) -1;
var ptrPageManager = this;
- this.xhr[i].onreadystatechange = function(){
- if( ptrPageManager.xhr[i].readyState == 4 ) // si la requête est terminée
- if( [0,200].indexOf(ptrPageManager.xhr[i].status) > -1 ) // si fichier existe et reçu
- pHandler(ptrPageManager.xhr[i].responseText);
+ this.xhr[index].onreadystatechange = function(){
+ if( ptrPageManager.xhr[index].readyState == 4 ) // si la requête est terminée
+ if( [0,200].indexOf(ptrPageManager.xhr[index].status) > -1 ) // si fichier existe et reçu
+ pHandler(ptrPageManager.xhr[index].responseText);
else // si code d'erreur retourne null
pHandler();
}
@@ -49,8 +48,8 @@ pageManager.prototype = {
// gestion du formulaire si la méthode est POST
var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null;
- this.xhr[i].open( method, pLink, true);
- this.xhr[i].send( form );
+ this.xhr[index].open( method, pLink, true );
+ this.xhr[index].send( form );
},
/***************************************************** [APPLICATION] Ajax() ******************************************************/
// EXEMPLES DE FONCTIONS POUR pHandler //
diff --git a/manager/career.php b/manager/career.php
index 65d0348..e1771c5 100755
--- a/manager/career.php
+++ b/manager/career.php
@@ -74,13 +74,118 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
- $UEs = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
+ $semestreList = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
- if( is_array($UEs) ){ // si on a bien un tableau
- $answer->UEs = $UEs; // on renvoie dans answer->UEs
+ if( is_array($semestreList) ){ // si on a bien un tableau
+ $answer->semestres = $semestreList; // on renvoie dans answer->semestreList
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
- $answer->request = $UEs; // on retourne l'erreur
+ $answer->request = $semestreList; // on retourne l'erreur
+ }else
+ $answer->request = 'param_error';
+
+ }else
+ $answer->request = 'permission_error';
+ break;
+
+
+ /************************************/
+ /* liste des notes pour un contrôle */
+ /************************************/
+ case 'getNotesEnseignant': if( permission('teacher') ){
+
+ $areSetParam = isset($request->enseignant) && isset($request->controle); // les arguments existent
+ $typeOkParam = $areSetParam && is_string($request->enseignant); // si c'est des strings
+ $nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->controle); // des bon types
+ $enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
+
+ // paramètre optionnel
+ $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
+
+ // définition (ou pas) du paramètre optionnel
+ if( $optionalGroupe ) $groupe = $request->groupe;
+ else $groupe = null;
+
+ if( $enseignantCheck ){ // si tout les paramètres sont bons
+ $controle = DataBase::getInstance()->getNotesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $_SESSION['annee'], $request->controle, $groupe);
+
+ if( is_array($controle) ){ // si on a bien un tableau
+ $answer->controle = $controle; // on renvoie dans answer->controle
+ $answer->request = 'success'; // et on renvoie success
+ }else // sinon si c'est pas un tableau
+ $answer->request = $controle; // on retourne l'erreur
+ }else
+ $answer->request = 'param_error';
+
+ }else
+ $answer->request = 'permission_error';
+ break;
+
+
+ /**********************************************/
+ /* informations relatives au dossier étudiant */
+ /**********************************************/
+ case 'studentcase': if( permission('teacher') ){
+
+ $areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
+ $typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
+ $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
+ $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
+
+ if( $etudiantCheck ){ // si tout les paramètres sont bons
+ $answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
+ }else
+ $answer->request = 'param_error';
+
+ }else
+ $answer->request = 'permission_error';
+
+ break;
+
+
+
+ /****************************************************/
+ /* saisie d'une note pour un étudiant à un contrôle */
+ /****************************************************/
+ case 'saisieNote': if( permission('teacher') ){
+
+ $areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
+ $typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
+ $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
+ $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
+
+ if( $etudiantCheck ){ // si tout les paramètres sont bons
+ $answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
+ }else
+ $answer->request = 'param_error';
+
+ }else
+ $answer->request = 'permission_error';
+ break;
+
+
+
+
+
+/* _ ____ ___ _____ _____ _ _ ____ _____ ____
+/* / \ | _ \_ _| ___| ___| | | / ___|| ____| _ \
+/* / _ \ | | | | || |_ | |_ | | | \___ \| _| | |_) |
+/* / ___ \ | |_| | || _| | _| | |_| |___) | |___| _ <
+/* /_/ \_\ |____/___|_| |_| \___/|____/|_____|_| \_\
+/*
+
+ /****************************************************/
+ /* saisie d'une note pour un groupe à un contrôle */
+ /****************************************************/
+ case 'saisieNoteGroupe': if( permission('teacher') ){
+
+ $areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
+ $typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
+ $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
+ $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
+
+ if( $etudiantCheck ){ // si tout les paramètres sont bons
+ $answer->request = DataBase::getInstance()->saisieNoteGroupe($request->etudiant, $request->controle, $request->note);
}else
$answer->request = 'param_error';
diff --git a/manager/database.php b/manager/database.php
index b22bffa..a9191fa 100755
--- a/manager/database.php
+++ b/manager/database.php
@@ -38,7 +38,7 @@ class DataBase{
/* retourne une instance de la classe */
public static function getInstance(){
if( DataBase::$instance == null )
- DataBase::$instance = new DataBase("localhost", "sid2", "php", "Qt358nUdyeTxLDM8");
+ DataBase::$instance = new DataBase("localhost", "sid2", "root", "");
return DataBase::$instance;
}
@@ -215,14 +215,7 @@ class DataBase{
/******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
- public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair, $pSemestre=null, $pGroupe=null){ // pSemestre/pGroupe optionnels
- // définition des paramètres optionnels
- $semestreOpt = '%';
- if( $pSemestre != null ) $semestreOpt = $pSemestre; // semestre donné uniquement (si param non null)
-
- $groupeOpt = '%';
- if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit
-
+ public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){
/*** 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( ':annee' => $annee ));
@@ -230,7 +223,7 @@ class DataBase{
// on récupère la liste des groupes
- $grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee, $pSemestre, $pGroupe) );
+ $grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee) );
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']);
@@ -242,15 +235,7 @@ class DataBase{
/******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/
- public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant, $pSemestre, $pGroupe){
- // définition des paramètres optionnels
- $semestreOpt = '%';
- if( $pSemestre != null ) $semestreOpt = $pSemestre; // semestre donné uniquement (si param non null)
-
- $groupeOpt = '%';
- if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit
-
-
+ public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant){
/*** on cherche un semestre avec cette année ***/
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array( ':annee' => $annee ));
@@ -261,7 +246,7 @@ class DataBase{
// on récupère la liste des groupes
- $grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee, $pSemestre, $pGroupe) );
+ $grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee) );
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']);
@@ -278,23 +263,11 @@ class DataBase{
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
-
- // on cherche le groupe associé
- $getNomGroupe = DataBase::getPDO()->prepare("SELECT g.nom ".
- "FROM utilisateur as u, groupe as g, appartenance as app ".
- "WHERE app.id_etudiant = u.identifiant ".
- "AND app.id_groupe = g.id_groupe ".
- "AND u.identifiant = :etudiantUID ".
-
- "AND app.id_semestre = :semestreUID ".
- "ORDER BY g.nom");
- $getNomGroupe->execute(array( ':etudiantUID' => $etudiantUID, ':semestreUID' => $semestreUID ));
-
- // si on a un résultat
- if( $nomGroupe = $getNomGroupe->fetch()['nom'] )
- return $nomGroupe;
- else
- return 'error';
+ // on retourne le nom
+ if( $groupeObj = groupRepo::forStudent($etudiantUID, $semestreUID) )
+ return $groupeObj['nom'];
+ else // si on a pas trouvé de groupe pour cet étudiant à ce semestre
+ return 'unknown_group';
}
@@ -304,98 +277,13 @@ class DataBase{
/******************************************************/
/***** déplace un étudiant d'un groupe à un autre *****/
/******************************************************/
- public function deplacerEtudiant($etudiant, $groupe, $annee){
+ public function deplacerEtudiant($etudiant, $groupe, $semestre){
+ // on vérifie que le semestre et que le groupe de destination existent
+ if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
+ if( !($destGroupeUID=groupRepo::UID($groupe)) ) return 'unknown_newgroup';
- /*** on cherche le nouveau groupe pour cet utilisateur ***/
- $getNouveauGroupeUID = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as semestre, g.id_groupe as id, u.identifiant as etuUID ".
- "FROM groupe as g, appartenance as app, appartenance as myapp, utilisateur as u, semestre as s ".
- "WHERE g.nom = :groupe ".
- "AND u.identifiant = :etudiant ".
-
- "AND myapp.id_etudiant = u.identifiant ".
- "AND myapp.id_semestre = s.id_semestre ".
-
- "AND app.id_groupe = g.id_groupe ".
- "AND app.id_semestre = s.id_semestre");
- $getNouveauGroupeUID->execute(array(
- ':groupe' => $groupe,
- ':etudiant' => $etudiant
- ));
-
- // si on trouve, on le définit, sinon on retourne "unknown_user"
- if( $data = $getNouveauGroupeUID->fetch() ){
- $nouveauGroupeUID = (int) $data['id'];
- $semestreUID = $data['semestre'];
- $etudiantUID = $data['etuUID'];
- }
- else
- return 'unknown_newgroup';
-
-
- /*** 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;
-
- /***************************************************************/
- /*** CAS 1 : l'utilisateur a déjà un groupe pour ce semestre ***/
- /***************************************************************/
-
- // il suffit donc maintenant de modifier l' "appartenance"
- $updateGroupe = DataBase::getPDO()->prepare("UPDATE appartenance SET id_groupe = :nouveauGroupeUID ".
- "WHERE id_etudiant = :etudiantUID ".
- "AND id_groupe = :groupeUID ".
- "AND id_semestre = :semestreUID");
- $updateGroupe->execute(array(
- ':nouveauGroupeUID' => $nouveauGroupeUID,
- ':etudiantUID' => $etudiantUID,
- ':groupeUID' => $groupeUID,
- ':semestreUID' => $semestreUID
- ));
-
- }
- else{
- /****************************************************/
- /*** CAS 2 : l'utilisateur n'a pas encore de groupe */
- /****************************************************/
- $insertGroupe = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_appartenance, id_etudiant, id_groupe, id_semestre) ".
- "VALUES(NULL, :etudiantUID, :nouveauGroupeUID, :semestreUID)");
- $insertGroupe->execute(array(
- ':etudiantUID' => $etudiantUID,
- ':nouveauGroupeUID' => $nouveauGroupeUID,
- ':semestreUID' => $semestreUID
- ));
- }
-
- /* Vérification de l'entrée dans la table */
- $verif = DataBase::getPDO()->prepare("SELECT count(id_appartenance) as count ".
- "FROM appartenance ".
- "WHERE id_etudiant = :etudiantUID ".
- "AND id_groupe = :nouveauGroupeUID ".
- "AND id_semestre = :semestreUID");
- $verif->execute(array(
- ':etudiantUID' => $etudiantUID,
- ':nouveauGroupeUID' => $nouveauGroupeUID,
- ':semestreUID' => $semestreUID
- ));
-
- $verifFetch = $verif->fetch();
-
- if( $verifFetch && $verifFetch['count'] == '1' )
+ if( groupRepo::ajouterMembre($etudiant, $destGroupeUID, $semestreInfo['id']) )
return 'success';
else
return 'error';
@@ -467,8 +355,12 @@ class DataBase{
-
-
+ /**********************************************************/
+ /*** retourne la liste exhaustive des MODULES de la BDD ***/
+ /**********************************************************/
+ public function getExhaustiveModuleList(){
+ return moduleRepo::exhaustiveList();
+ }
@@ -482,66 +374,43 @@ class DataBase{
// on vérifie que l'enseignant enseigne bien cette année
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
- $UEList = $this->getUEsEnseignant($enseignant, $semestre_pair, $annee); // on récupère la liste des UEs
+ // on récupère les semestres de cette année
+ $semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
- foreach($UEList as $iter=>$UE){
+ foreach($semestreList as $iter_s=>$a){
+ $semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
- // si on a l'UID enseignant & l'UE => 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 enseignement as ens, semestre as s, ue, module as m, mcc_ue, mcc_module as mcc_m ".
- "WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
- "AND mcc_m.id_module = m.id_module ".
- "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
- "AND mcc_ue.id_ue = ue.id_ue ".
+ 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']);
- "AND ens.id_enseignant = :enseignantUID ".
- "AND ue.id_ue = :UEUID ".
- "AND s.annee = :annee ".
- "AND s.rang % 2 = :semestre_pair ".
- "ORDER BY m.nom, m.libelle ASC");
- $getModuleList->execute(array(
- ':enseignantUID' => $enseignantUID,
- ':UEUID' => $UE['id'],
- ':annee' => $annee,
- ':semestre_pair' => ($semestre_pair) ? '0' : '1'
- ));
-
- // on ajoute la liste des modules en supprimant les valeurs à indinces numériques
- $UEList[$iter]['modules'] = DataBase::delNumeric( $getModuleList->fetchAll() );
}
- return $UEList;
+ return $semestreList;
}
- /****************************************/
- /*** retourne les UEs d'un enseignant ***/
- /****************************************/
- public function getUEsEnseignant($enseignant, $semestre_pair, $annee){
- // on vérifie que l'enseignant enseigne bien cette année
- if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
-
- // on retourne la liste des UEs en supprimant les doublons à indices numériques
- return ueRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
- }
-
-
-
-
/***************************************************/
/*** retourne les modules des semestres en cours ***/
/***************************************************/
- public function getModulesByUEByYear($semestre_pair, $annee){
- // on récupère la liste des UEs
- $UEList = ueRepo::forYear($semestre_pair, $annee);
+ public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair
- foreach($UEList as $iter=>$UE) // pour chaque UE, on récupère la liste des UEs
- $UEList[$iter]['modules'] = moduleRepo::forYear($UE['id'], $semestre_pair, $annee);
+ // on récupère les semestres de cette année
+ $semestreList = semestreRepo::forYear($annee);
- return $UEList;
+ 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']);
+
+ }
+
+ }
+
+ return $semestreList;
}
@@ -631,156 +500,99 @@ class DataBase{
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';
+ debug();
+ // on récupère les semestres de cette année
+ $semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
+ foreach($semestreList as $iter_s=>$a){
- $UEList = ueRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
+ $semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
- foreach($UEList as $iter_ue=>$a){
- $UEList[$iter_ue]['modules'] = moduleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['id'], $UEList[$iter_ue]['id_semestre']);
+ 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']);
+
+ 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){
+ $semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['grouplist'] = noteRepo::forTeacher($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']);
+
+ }
+
+ }
- foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){
- $UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['modules'][$iter_mod]['id'], $UEList[$iter_ue]['id_semestre']);
-
- foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c)
- $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forTeacher($UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']);
}
- }
+ }
- return $UEList;
+ return $semestreList;
}
- /**************************************/
- /*** retourne les notes d'un module ***/
- /**************************************/
- public function getModuleNotes($etudiant, $module, $semestre, $annee){
- // on vérifie que le module, le semestre existent 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';
- if( !($moduleUID=moduleRepo::UID($module)) ) return 'unknown_module';
+
+ /********************************************/
+ /*** retourne les notes pour un contrôle ***/
+ /********************************************/
+ public function getNotesEnseignant($enseignant, $semestre_pair, $annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
+
+ // on récupère les informations du contrôle
+ if( ! ($controlObj=controleRepo::info($controle)) ) return 'unknown_controle';
+
+ // on ajoute la moyenne au contrôle
+ $controlObj['moyenne'] = noteRepo::moyenneForControle($controlObj['id']);
+
+ /* [1] si le groupe est donné
+ =======================================*/
+ if( $groupe != null ){
+ if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID; // on récupère l'UID du groupe
+
+ $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();
+ }
- /*** on cherche un module avec ce nom, en accord avec le semestre et l'étudiant ***/
- $getModuleUID = DataBase::getPDO()->prepare("SELECT m.id_module as id FROM module as m, appartenance as app, ue, mcc_ue, mcc_module as mcc_m ".
- "WHERE app.id_etudiant = :etudiantUID ".
+ return $controlObj;
+ }
- "AND mcc_ue.id_ue = ue.id_ue ".
- "AND mcc_ue.id_semestre = app.id_semestre ".
- "AND mcc_ue.id_semestre = :semestreUID ".
+
+ /******************************************/
+ /*** 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';
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
-
- "AND mcc_m.id_module = m.id_module ".
-
- "AND m.nom = :module ");
- $getModuleUID->execute(array(
- ':module' => $module,
- ':etudiantUID' => $etudiantUID,
- ':semestreUID' => $semestreUID
- ));
-
- // si on trouve, on le définit, sinon on retourne "unknown_group"
- if( $moduleUID = $getModuleUID->fetch()['id'] )
- $moduleUID = (int) $moduleUID;
+ // saisie de la note
+ $rep = noteRepo::creer($etudiantUID, $controleInfo['id'], $controleInfo['id_semestre'], $note);
+
+ if( $rep )
+ return 'success';
else
- return 'unknown_module';
+ return 'error';
-
-
- $EtudiantInscritAuModule = false; // par défaut on dit que l'étudiant n'est pas inscrit à ce module
- foreach(moduleRepo::forStudent($etudiant, $semestreUID) as $module ) // on récupère parmi les modules auquel est inscrit l'utilisateur
- if( $module['id'] == $moduleUID ){ // s'il est inscrit au module donné
- $EtudiantInscritAuModule = true;
- break;
- }
-
- // si l'étudiant n'a pas ce module dans ceux auxquels il est inscrit
- if( !$EtudiantInscritAuModule ) return 'unknown_module';
-
-
- // si on a l'UID utilisateur & l'UID groupe => on récupère les modules
- $getNoteList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
- "FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
- "WHERE note.id_appartenance = app.id_appartenance ".
- "AND ctrl.id_controle = note.id_controle ".
- "AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
-
- "AND mcc_ue.id_semestre = app.id_semestre ".
- "AND mcc_ue.id_semestre = s.id_semestre ".
-
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
-
- "AND mcc_m.id_module = m.id_module ".
-
- "AND m.id_module = :moduleUID ".
- "AND app.id_etudiant = :etudiantUID ".
- "AND s.id_semestre = :semestreUID ".
- "ORDER BY ctrl.date_publication ASC");
- $getNoteList->execute(array(
- ':moduleUID' => $moduleUID,
- ':etudiantUID' => $etudiantUID,
- ':semestreUID' => $semestreUID
- ));
-
- // on retourne la liste des notes et supprime les doublons à indices numériques
- return DataBase::delNumeric( $getNoteList->fetchAll() );
- }
-
-
-
-
-
- /**********************************/
- /*** retourne les notes d'un UE ***/
- /**********************************/
- public function getUENotes($etudiant, $UE, $semestre, $annee){
- // on vérifie que l'UE, le semestre existent 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';
- if( !($UEUID=ueRepo::UID($UE)) ) return 'unknown_ue';
-
-
- $EtudiantInscritAlUE = false; // par défaut on dit que l'étudiant n'est pas inscrit à cet UE
- foreach(ueRepo::forStudent($etudiant, $semestreUID) as $UE ) // on récupère parmi les UEs auquel est inscrit l'utilisateur
- if( $UE['id'] == $UEUID ){ // s'il est inscrit à l'UE donnée
- $EtudiantInscritAlUE = true;
- break;
- }
-
- // si l'étudiant n'a pas ce module dans ceux auxquels il est inscrit
- if( !$EtudiantInscritAlUE ) return 'unknown_module';
-
- // si on a l'UID utilisateur & l'UID UE => on récupère les notes
- $getNoteList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
- "FROM note, appartenance as app, semestre as s, module as m, ue, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
- "WHERE note.id_appartenance = app.id_appartenance ".
- "AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
- "AND ctrl.id_controle = note.id_controle ".
-
- "AND mcc_ue.id_ue = ue.id_ue ".
- "AND mcc_ue.id_semestre = app.id_semestre ".
- "AND mcc_ue.id_semestre = s.id_semestre ".
-
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
-
- "AND mcc_m.id_module = m.id_module ".
-
- "AND ue.id_ue = :UEUID ".
- "AND app.id_etudiant = :etudiantUID ".
- "AND s.id_semestre = :semestreUID ".
- "ORDER BY m.nom, ctrl.date_publication ASC");
- $getNoteList->execute(array(
- ':UEUID' => $UEUID,
- ':etudiantUID' => $etudiantUID,
- ':semestreUID' => $semestreUID
- ));
-
- // on retourne la liste de notes et supprime les doublons à indices numériques
- return DataBase::delNumeric( $getNoteList->fetchAll() );
}
}
-?>
\ No newline at end of file
+?>
diff --git a/manager/groups.php b/manager/groups.php
index 5dce139..7c252a5 100755
--- a/manager/groups.php
+++ b/manager/groups.php
@@ -168,20 +168,9 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
$enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format
- // paramètres optionnels
- $optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre);
- $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
-
- // définition (ou pas) des paramètres optionnels
- if( $optionalSemestre ) $semestre = $request->semestre;
- else $semestre = null;
-
- if( $optionalGroupe ) $groupe = $request->groupe;
- else $groupe = null;
-
if( $enseignantCheck ){
- $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant, $semestre, $groupe);
+ $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist;
@@ -205,24 +194,10 @@ require_once __ROOT__.'/manager/database.php';
$typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
-
- // paramètres optionnels
- $optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre);
- $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
-
- // définition (ou pas) des paramètres optionnels
- if( $optionalSemestre ) $semestre = $request->semestre;
- else $semestre = null;
-
- if( $optionalGroupe ) $groupe = $request->groupe;
- else $groupe = null;
-
-
-
if( $anneeCheck ){
- // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair'], $semestre, $groupe);
- $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null, $semestre, $groupe);
+ // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']);
+ $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist;
@@ -267,14 +242,14 @@ require_once __ROOT__.'/manager/database.php';
/************************************************/
case 'move': if( permission('admin') ){
- $areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent
+ $areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings
- $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère
+ $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
$groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
if( $groupeCheck ){ // si param ok
- $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $_SESSION['annee']);
+ $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre);
}else
$answer->request = 'param_error';
diff --git a/manager/modules.php b/manager/modules.php
index 1196e04..0fdf249 100755
--- a/manager/modules.php
+++ b/manager/modules.php
@@ -82,16 +82,16 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
- $UEList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
+ $semestreList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
// STRUCTURE
// tableau d'UES contenant un tableau de MODULES
- if( is_array($UEList) ){ // si on a bien un tableau
- $answer->UEs = $UEList; // on renvoie dans answer->ues
+ if( is_array($semestreList) ){ // si on a bien un tableau
+ $answer->semestres = $semestreList; // on renvoie dans answer->ues
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
- $answer->request = $UEList; // on retourne l'erreur
+ $answer->request = $semestreList; // on retourne l'erreur
}else
$answer->request = 'param_error';
@@ -112,13 +112,42 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons
- $UEList = DataBase::getInstance()->getModulesByUEByYear($_SESSION['semestre_pair'], $request->annee);
+ $semestreList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee);
// STRUCTURE
// tableau d'UES contenant un tableau de MODULES
- if( is_array($UEList) ){ // si on a bien un tableau
- $answer->UEs = $UEList; // on renvoie dans answer->ues
+ if( is_array($semestreList) ){ // si on a bien un tableau
+ $answer->semestres = $semestreList; // on renvoie dans answer->ues
+ $answer->request = 'success'; // et on renvoie success
+ }else // sinon si c'est pas un tableau
+ $answer->request = $semestreList; // on retourne l'erreur
+ }else
+ $answer->request = 'param_error';
+
+ }else
+ $answer->request = 'permission_error';
+ break;
+
+
+ /**********************************/
+ /* liste des informations des MCC */
+ /**********************************/
+ case 'getMCC': if( permission('admin') ){
+
+ $areSetParam = isset($request->annee); // les arguments existent
+ $typeOkParam = $areSetParam && is_string($request->annee); // si c'est des strings
+ $nEmptyParam = $typeOkParam && is_numeric($request->annee); // des bon types
+ $anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
+
+ if( $anneeCheck ){ // si tout les paramètres sont bons
+ $semestreList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee);
+
+ // STRUCTURE
+ // tableau d'UES contenant un tableau de MODULES
+
+ if( is_array($semestreList) ){ // si on a bien un tableau
+ $answer->semestres = $semestreList; // on renvoie dans answer->ues
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $UEList; // on retourne l'erreur
diff --git a/manager/repo/controle.php b/manager/repo/controle.php
index 58f28a8..5bc71fc 100755
--- a/manager/repo/controle.php
+++ b/manager/repo/controle.php
@@ -14,12 +14,21 @@ class controleRepo extends DBAccess{
*
* @controleUID l'UID du controle duquel on veut les infos
*
- * @return controle tableau associatif contenant tout les champs de la BDD pour ce controle
+ * @return controle tableau associatif contenant tout les champs de la BDD pour ce controle
*
*/
public static function info($controleUID){
// on considère que le semestre existe
- $getControleInfo = DataBase::getPDO()->prepare("SELECT id_controle as id, id_mcc_module, intitule, base, coefficient, date_publication FROM controle WHERE id_controle = :controleUID");
+ $getControleInfo = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id, ctrl.id_mcc_module, m.nom as module, m.libelle as modulelib, s.id_semestre, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication
+ FROM controle as ctrl, mcc_module as mcc_m, mcc_ue, semestre as s, module as m
+ WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module
+ AND mcc_m.id_module = m.id_module
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
+ AND mcc_ue.id_semestre = s.id_semestre
+
+ AND ctrl.id_controle = :controleUID
+
+ GROUP BY ctrl.id_controle");
$getControleInfo->execute(array(
':controleUID' => $controleUID
));
@@ -42,14 +51,14 @@ class controleRepo extends DBAccess{
*
*/
public static function forStudent($module, $semestre){
- $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
- "FROM controle as ctrl, module as m, mcc_module as mcc_m, mcc_ue, semestre as s ".
- "WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module ".
- "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
- "AND mcc_ue.id_semestre = s.id_semestre ".
+ $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication
+ FROM controle as ctrl, module as m, mcc_module as mcc_m, mcc_ue, semestre as s
+ WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module
+ AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
+ AND mcc_ue.id_semestre = s.id_semestre
- "AND mcc_m.id_module = :module ".
- "AND s.id_semestre = :semestre");
+ AND mcc_m.id_module = :module
+ AND s.id_semestre = :semestre");
$getControleList->execute(array( ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() );
@@ -70,20 +79,21 @@ class controleRepo extends DBAccess{
*
*/
public static function forTeacher($enseignant, $module, $semestre){
- $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
- "FROM enseignement as ens, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
- "WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
- "AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
+ $getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication
+ FROM enseignement as ens, module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl
+ WHERE ens.id_mcc_module = mcc_m.id_mcc_module
+ AND mcc_m.id_mcc_module = ctrl.id_mcc_module
+ AND mcc_m.id_module = m.id_module
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
- "AND ens.id_enseignant = :enseignant ".
- "AND mcc_m.id_module = :module ".
- "AND mcc_ue.id_semestre = :semestre");
+ AND ens.id_enseignant = :enseignant
+ AND mcc_m.id_module = :module
+ AND mcc_ue.id_semestre = :semestre
+
+ GROUP BY ctrl.id_controle");
$getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() );
}
-
-
}
\ No newline at end of file
diff --git a/manager/repo/group.php b/manager/repo/group.php
index 07cd798..f5a2815 100755
--- a/manager/repo/group.php
+++ b/manager/repo/group.php
@@ -60,11 +60,11 @@ class groupRepo extends DBAccess{
*/
public static function appartenanceUID($etudiant, $groupe, $semestre){
/*** on cherche un groupe avec ce nom ***/
- $getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id ".
- "FROM appartenance ".
- "WHERE id_etudiant = :etudiant ".
- "AND id_groupe = :groupe ".
- "AND id_semestre = :semestre");
+ $getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id
+ FROM appartenance
+ WHERE id_etudiant = :etudiant
+ AND id_groupe = :groupe
+ AND id_semestre = :semestre");
$getAppartenanceUID->execute(array(
':etudiant' => $etudiant,
':groupe' => $groupe,
@@ -110,7 +110,7 @@ class groupRepo extends DBAccess{
}
- /* AJOUTER UN MEMBRE A UN GROUPE
+ /* AJOUTER UN MEMBRE A UN GROUPE / DEPLACER UN MEMBRE VERS UN GROUPE DONNE (si déjà dans un groupe)
*
* @etudiant l'identifiant (UID) de l'étudiant à ajouter au groupe
* @groupe l'UID du groupe auquel on veut le ratacher
@@ -121,27 +121,19 @@ class groupRepo extends DBAccess{
*
*/
public static function ajouterMembre($etudiant, $groupe, $semestre){
+ debug();
/* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre
===========================================================================*/
- $dejaMembre = DataBase::getPDO()->prepare("SELECT id_appartenance as id ".
- "FROM appartenance ".
- "WHERE id_etudiant = :etudiant ".
- "AND id_semestre = :semestre ");
- $dejaMembre->execute(array(
- ':etudiant' => $etudiant,
- ':semestre' => $semestre
- ));
-
- if( $appartenanceUID = $dejaMembre->fetch()['id'] ){ // si c'est le cas
+ if( $appartenanceUID = groupRepo::forStudent($etudiant, $semestre)['id_appartenance'] ){ // si c'est le cas
/* [2] On modifie l'appartenance
==============================*/
// création et exécution de la requête de modification de l'appartenance
- $ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance ".
- "SET id_groupe = :groupe ".
- "WHERE id_appartenance = :appartenanceUID");
- $ajouterMembre->execute(array(
- ':groupe' => $groupeUID,
+ $ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance
+ SET id_groupe = :groupe
+ WHERE id_appartenance = :appartenanceUID");
+ $ajouterMembres->execute(array(
+ ':groupe' => $groupe,
':appartenanceUID' => $appartenanceUID
));
@@ -150,15 +142,15 @@ class groupRepo extends DBAccess{
/* [2] On créé l'appartenance
==============================*/
// création et exécution de la requête de création d'appartenance
- $ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre) ".
- "VALUES( ".
- "(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant), ".
- "(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe), ".
- "(SELECT id_semestre FROM semestre WHERE id_semestre = :semestre) ".
- " )");
- $ajouterMembre->execute(array(
- ':etudiant' => $etudiantUID,
- ':groupe' => $groupeUID,
+ $ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre)
+ VALUES(
+ (SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant),
+ (SELECT id_groupe FROM groupe WHERE id_groupe = :groupe),
+ (SELECT id_semestre FROM semestre WHERE id_semestre = :semestre)
+ )");
+ $ajouterMembres->execute(array(
+ ':etudiant' => $etudiant,
+ ':groupe' => $groupe,
':semestre' => $semestre
));
@@ -182,15 +174,16 @@ class groupRepo extends DBAccess{
*/
public static function membres($groupeUID, $semestreUID){
// si le groupe existe => on récupère ses utilisateurs
- $getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre ".
- "FROM utilisateur as u, groupe as g, semestre as s, appartenance as app ".
- "WHERE u.identifiant = app.id_etudiant ".
- "AND g.id_groupe = app.id_groupe ".
- "AND app.id_semestre = app.id_semestre ". // à virer (peut-être)
+ $getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe
+ FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f
+ WHERE s.id_formation = f.id_formation
+ AND u.identifiant = app.id_etudiant
+ AND g.id_groupe = app.id_groupe
+ AND app.id_semestre = app.id_semestre
- "AND g.id_groupe = :groupeUID ".
- "AND s.id_semestre = :semestreUID ".
- "ORDER BY u.prenom, u.nom");
+ AND g.id_groupe = :groupeUID
+ AND s.id_semestre = :semestreUID
+ ORDER BY u.prenom, u.nom");
$getMembres->execute(array(
':groupeUID' => $groupeUID,
':semestreUID' => $semestreUID
@@ -213,17 +206,18 @@ class groupRepo extends DBAccess{
*
*/
public static function forStudent($etudiant, $semestre){
- $getGroupe = DataBase::getPDO()->prepare("SELECT g.id_groupe as id, g.nom, g.libelle ".
- "FROM utilisateur as u, groupe as g, appartenance as app ".
- "WHERE app.id_etudiant = u.identifiant ".
- "AND app.id_groupe = g.id_groupe ".
- "AND u.identifiant = :etudiantUID ".
+ $getGroupe = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_appartenance, g.id_groupe as id, g.nom, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation
+ FROM groupe as g, appartenance as app, formation as f, semestre as s
+ WHERE s.id_formation = f.id_formation
+ AND app.id_groupe = g.id_groupe
+ AND app.id_semestre = s.id_semestre
- "AND app.id_semestre = :semestreUID ".
- "ORDER BY g.nom");
- $getGroupe->execute(array( ':etudiantUID' => $etudiantUID, ':semestreUID' => $semestreUID ));
+ AND app.id_etudiant = :etudiant
+ AND s.id_semestre = :semestre
+ ORDER BY g.nom");
+ $getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
- return DataBase::delNumeric( $getGroupe->fetch() );
+ return $getGroupe->fetch();
}
@@ -233,48 +227,68 @@ class groupRepo extends DBAccess{
/* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE
*
* @enseignant l'UID de l'enseignant recherché
- * @semestre_pair VRAI si le semestre courant est pair
+ * @semestre_pair VRAI si le semestre courant est pair (***OPTIONNEL***)
* @annee l'année recherchée
*
- * @pSemestre ***OPTIONNEL*** le nom du semestre
- * @pGroupe ***OPTIONNEL*** le nom du groupe
- *
*
* @return groupes retourne la liste des groupes correspondant aux critères
*
*/
- public static function forTeacher($enseignant, $semestre_pair, $annee, $pSemestre=null, $pGroupe=null){
- // si le semestre est donné, on cherche uniquement celui-ci, sinon on les affiche tous
- $semestreOpt = '%';
- if( $pSemestre != null ){ $semestreOpt = $pSemestre; }
+ public static function forTeacher($enseignant, $semestre_pair, $annee){
- // si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous
- $groupeOpt = '%';
- if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
-
+ $semestrePair0 = '0'; $semestrePair1 = '1';
+ if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; }
- $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ".
- "FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app ".
- "WHERE mcc_ue.id_semestre = s.id_semestre ".
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
+ $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation
+ FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app, formation as f
+ WHERE s.id_formation = f.id_formation
+ AND mcc_ue.id_semestre = s.id_semestre
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
- "AND mcc_m.id_module = m.id_module ".
- "AND mcc_m.id_mcc_module = ens.id_mcc_module ".
+ AND mcc_m.id_module = m.id_module
+ AND mcc_m.id_mcc_module = ens.id_mcc_module
- "AND ens.id_enseignant = u.identifiant ".
- "AND ens.correcteur = 1 ". // uniquement les groupes pour lesquels il est correcteur
+ AND ens.id_enseignant = u.identifiant
+ AND ens.correcteur = 1
- "AND app.id_etudiant = eleve.identifiant ".
- "AND app.id_semestre = s.id_semestre ".
- "AND app.id_groupe = g.id_groupe ".
+ AND app.id_etudiant = eleve.identifiant
+ AND app.id_semestre = s.id_semestre
+ AND app.id_groupe = g.id_groupe
+
+ AND u.identifiant = :enseignant
+ AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1)
+ AND s.annee = :annee
+ ORDER BY s.rang, g.nom");
+ $getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
+
+ return DataBase::delNumeric( $getGroupeList->fetchAll() );
+ }
+
+
+
+
+
+ /* RETOURNE LES GROUPES INSCRITS A UN CONTROLE
+ *
+ * @controle l'UID du contrôle en question
+ *
+ *
+ * @return groupes retourne un tableau contenant les groupes inscrits à ce contrôle
+ * @return FALSE retourne FALSE si aucun groupe n'y est inscrit
+ *
+ */
+ public static function forControle($controle){
+ $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom
+ FROM groupe as g, appartenance as app, mcc_ue, mcc_module as mcc_m, controle as ctrl
+ WHERE app.id_groupe = g.id_groupe
+ AND ctrl.id_mcc_module = mcc_m.id_mcc_module
+ AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
+ AND app.id_semestre = mcc_ue.id_semestre
+
+ AND ctrl.id_controle = :controle
+ ORDER BY g.nom ASC");
+ $getGroupeList->execute(array( ':controle' => $controle ));
- "AND g.nom LIKE '".$groupeOpt."' ".
- "AND s.nom LIKE '".$semestreOpt."' ".
- "AND u.identifiant = :enseignant ".
- "AND s.rang % 2 = :semestre_pair ".
- "AND s.annee = :annee ".
- "ORDER BY s.rang, g.nom");
- $getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
}
@@ -283,38 +297,27 @@ class groupRepo extends DBAccess{
/* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE
*
- * @semestre_pair VRAI si le semestre courant est pair
+ * @semestre_pair VRAI si le semestre courant est pair (***OPTIONNEL***)
* @annee L'année en cours
*
- * @pSemestre ***OPTIONNEL*** le nom du semestre
- * @pGroupe ***OPTIONNEL*** le nom du groupe
- *
*
* @return groupes retourne la liste des groupes correspondant aux critères
*
*/
- public static function forYear($semestre_pair, $annee, $pSemestre=null, $pGroupe=null){
- // si le semestre est donné, on cherche uniquement celui-ci, sinon on les affiche tous
- $semestreOpt = '%';
- if( $pSemestre != null ){ $semestreOpt = $pSemestre; }
-
- // si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous
- $groupeOpt = '%';
- if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
+ public static function forYear($semestre_pair, $annee){
$semestrePair0 = '0'; $semestrePair1 = '1';
- if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; }
+ if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; }
- $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ".
- "FROM groupe as g, semestre as s, appartenance as app ".
- "WHERE g.id_groupe = app.id_groupe ".
- "AND s.id_semestre = app.id_semestre ".
+ $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation
+ FROM groupe as g, semestre as s, appartenance as app, formation as f
+ WHERE s.id_formation = f.id_formation
+ AND g.id_groupe = app.id_groupe
+ AND s.id_semestre = app.id_semestre
- "AND g.nom LIKE '".$groupeOpt."' ".
- "AND s.nom LIKE '".$semestreOpt."' ".
- "AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
- "AND s.annee = :annee ".
- "ORDER BY g.nom");
+ AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1)
+ AND s.annee = :annee
+ ORDER BY g.nom");
$getGroupeList->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
diff --git a/manager/repo/module.php b/manager/repo/module.php
index b2c08fb..a5c4125 100755
--- a/manager/repo/module.php
+++ b/manager/repo/module.php
@@ -58,15 +58,15 @@ class moduleRepo extends DBAccess{
*/
public static function forStudent($UEUID, $semestre){
// on récupère les modules
- $getModulesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
- "FROM module as m, semestre as s, mcc_ue, mcc_module as mcc_m ".
- "WHERE 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 ".
+ $getModulesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle
+ FROM module as m, semestre as s, mcc_ue, mcc_module as mcc_m
+ WHERE 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 mcc_ue.id_ue = :UEUID ".
- "AND s.id_semestre = :semestre ".
- "ORDER BY m.nom, m.libelle");
+ AND mcc_ue.id_ue = :UEUID
+ AND s.id_semestre = :semestre
+ ORDER BY m.nom, m.libelle");
$getModulesForStudent->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForStudent->fetchAll() );
@@ -87,16 +87,16 @@ class moduleRepo extends DBAccess{
public static function forTeacher($enseignant, $UEUID, $semestre){
// on récupère les modules
- $getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
- "FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens ".
- "WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
- "AND mcc_m.id_module = m.id_module ".
- "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
+ $getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle
+ FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens
+ WHERE ens.id_mcc_module = mcc_m.id_mcc_module
+ AND mcc_m.id_module = m.id_module
+ AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
- "AND ens.id_enseignant = :enseignant ".
- "AND mcc_ue.id_ue = :UEUID ".
- "AND mcc_ue.id_semestre = :semestre ".
- "ORDER BY m.nom, m.libelle");
+ AND ens.id_enseignant = :enseignant
+ AND mcc_ue.id_ue = :UEUID
+ AND mcc_ue.id_semestre = :semestre
+ ORDER BY m.nom, m.libelle");
$getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForTeacher->fetchAll() );
@@ -105,29 +105,27 @@ class moduleRepo extends DBAccess{
- /* RENVOIE LA LISTE DES MODULES D'UN UE D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
+ /* RENVOIE LA LISTE DES MODULES D'UN UE D'UN SEMESTRE PARTICULIER
*
* @UEUID l'UID d'un UE
- * @semestre_pair VRAI si le semestre est pair
- * @annee l'année en cours
+ * @semestre l'UID du semestre en question
*
* @return modules retourne un tableau contenant les modules de l'utilisateur pour ce semestre
* @return existent FAUX si aucun module n'a été trouvé
*
*/
- public static function forYear($UEUID, $semestre_pair, $annee){
+ public static function forYear($UEUID, $semestre){
// on récupère les modules
- $getModulesForYear = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
- "FROM module as m, mcc_module as mcc_m, mcc_ue, semestre as s ".
- "WHERE m.id_module = mcc_m.id_module ".
- "AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
- "AND mcc_ue.id_semestre = s.id_semestre ".
+ $getModulesForYear = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle
+ FROM module as m, mcc_module as mcc_m, mcc_ue, semestre as s
+ WHERE m.id_module = mcc_m.id_module
+ AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
+ AND mcc_ue.id_semestre = s.id_semestre
- "AND mcc_ue.id_ue = :UEUID ".
- "AND s.rang % 2 = :semestre_pair ".
- "AND s.annee = :annee ".
- "ORDER BY s.rang, m.nom, m.libelle");
- $getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
+ AND mcc_ue.id_ue = :UEUID
+ AND s.id_semestre = :semestre
+ ORDER BY s.rang, m.nom, m.libelle");
+ $getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForYear->fetchAll() );
}
@@ -158,8 +156,7 @@ class moduleRepo extends DBAccess{
/* [3] On créé le nouveu module
=================================================================================================*/
- $creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) ".
- "VALUES(DEFAULT, :nom, :libelle)");
+ $creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
$creationModule->execute(array(
':nom' => $nom,
':libelle' => $libelle
@@ -174,4 +171,18 @@ class moduleRepo extends DBAccess{
+
+ /* retourne la liste de tous les modules existants
+ *
+ * @return modules retourne la liste de tous les modules existant
+ *
+ */
+ public static function exhaustiveList(){
+ $getModuleList = DataBase::getPDO()->query("SELECT id_module as id, nom, libelle FROM module ORDER BY nom, libelle");
+
+ return DataBase::delNumeric( $getModuleList->fetchAll() );
+ }
+
+
+
}
\ No newline at end of file
diff --git a/manager/repo/note.php b/manager/repo/note.php
index 13494cb..534662a 100755
--- a/manager/repo/note.php
+++ b/manager/repo/note.php
@@ -15,47 +15,22 @@ class noteRepo extends DBAccess{
* @etudiant l'identifiant de l'étudiant recherché
* @controle l'UID du contrôle
*
- * @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
+ * @return UID l'UID de la note si elle existe pour ces critères
+ * @return FALSE FAUX si aucune note répondant à ces critères n'est pas présente dans la BDD
*
*/
- 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 ));
+ public static function UID($etudiant, $controle){
+ $getNoteUID = DataBase::getPDO()->prepare("SELECT note.id_note as id
+ FROM appartenance as app, note, controle as ctrl
+ WHERE app.id_appartenance = note.id_appartenance
+ AND ctrl.id_controle = note.id_controle
- }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 ));
-
- }
+ AND app.id_etudiant = :etudiant
+ AND ctrl.id_controle = :controle");
+ $getNoteUID->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur
- return $getUtilisateurUID->fetch()['id'];
+ return $getNoteUID->fetch()['id'];
}
@@ -93,18 +68,18 @@ class noteRepo extends DBAccess{
*
*/
public static function forStudent($etudiant, $controle){
- $getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, n.id_appartenance, n.id_controle, n.valeur ".
- "FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m ".
- "WHERE n.id_appartenance = app.id_appartenance ".
- "AND app.id_semestre = s.id_semestre ".
- "AND s.id_semestre = mcc_ue.id_semestre ".
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
- "AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
- "AND n.id_controle = ctrl.id_controle ".
+ $getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, n.id_appartenance, n.id_controle, n.valeur
+ FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m
+ WHERE n.id_appartenance = app.id_appartenance
+ AND app.id_semestre = s.id_semestre
+ AND s.id_semestre = mcc_ue.id_semestre
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
+ AND mcc_m.id_mcc_module = ctrl.id_mcc_module
+ AND n.id_controle = ctrl.id_controle
- "AND app.id_etudiant = :etudiant ".
- "AND ctrl.id_controle = :controle ".
- "ORDER BY n.valeur ASC");
+ AND app.id_etudiant = :etudiant
+ AND ctrl.id_controle = :controle
+ ORDER BY n.valeur ASC");
$getNoteList->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
return DataBase::delNumeric( $getNoteList->fetchAll() );
@@ -114,39 +89,179 @@ class noteRepo extends DBAccess{
- /*
- ** PAS UTILISÉ POUR L'INSTANT
- */
-
-
- /* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
+ /* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
*
+ * [1] Par groupe si aucun groupe spécifié (statistiques: moyenne, min, max, nb notes, ...)
+ * [2] Liste des élèves d'un groupe si aucun groupe spécifié
+ *
+ *
* @controle l'UID du controle concerné
*
- * @return notes retourne les notes des étudiants pour un controle particulier
+ * @groupe ***OPTIONNEL*** l'UID du groupe spécifique
+ *
+ *
+ * @return notes [1] retourne les stats des notes pour les groupes à ce contrôle
+ * [2] retourne les notes des étudiants du groupe spécifié pour ce contrôle
*
*/
- public static function forTeacher($controle){
- $getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes ".
- "FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
- "WHERE n.id_appartenance = app.id_appartenance ".
- "AND app.id_semestre = s.id_semestre ".
- "AND app.id_groupe = g.id_groupe ".
- "AND s.id_semestre = mcc_ue.id_semestre ".
- "AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
- "AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
- "AND n.id_controle = ctrl.id_controle ".
+ public static function forTeacher($controle, $groupe=null){
+ /* [1] Statistiques des groupes
+ ============================================================*/
+ if( !is_int($groupe) ){
- "AND ctrl.id_controle = :controle ".
+ $getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes
+ FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g
+ WHERE n.id_appartenance = app.id_appartenance
+ AND app.id_semestre = s.id_semestre
+ AND app.id_groupe = g.id_groupe
+ AND s.id_semestre = mcc_ue.id_semestre
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
+ AND mcc_m.id_mcc_module = ctrl.id_mcc_module
+ AND n.id_controle = ctrl.id_controle
- "GROUP BY g.id_groupe ".
+ AND ctrl.id_controle = :controle
- "ORDER BY g.nom ASC");
- $getNoteList->execute(array( ':controle' => $controle ));
+ GROUP BY g.id_groupe
+
+ ORDER BY g.nom ASC");
+ $getNoteList->execute(array( ':controle' => $controle ));
+
+
+ /* [2] Notes des étudiants d'un groupe
+ ============================================================*/
+ }else{
+
+ $getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, g.nom as groupe, app.id_etudiant as etudiant, n.id_appartenance, n.id_controle, n.valeur
+ FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g
+ WHERE n.id_appartenance = app.id_appartenance
+ AND app.id_semestre = s.id_semestre
+ AND app.id_groupe = g.id_groupe
+ AND s.id_semestre = mcc_ue.id_semestre
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
+ AND mcc_m.id_mcc_module = ctrl.id_mcc_module
+ AND n.id_controle = ctrl.id_controle
+
+ AND ctrl.id_controle = :controle
+ AND app.id_groupe = :groupe
+
+ ORDER BY g.nom ASC");
+ $getNoteList->execute(array( ':controle' => $controle, ':groupe' => $groupe ));
+
+ }
return DataBase::delNumeric( $getNoteList->fetchAll() );
}
+
+ /* RENVOIE LES STATISTIQUES ASSOCIÉES À UN CONTRÔLE POUR UN GROUPE SPÉCIFIQUE
+ *
+ * @controle l'UID du controle concerné
+ * @groupe l'UID du groupe spécifique
+ *
+ *
+ * @return notes retourne les stats des notes pour les groupes à ce contrôle
+ * @return FALSE retourne FALSE si aucun résultat n'est trouvé
+ *
+ */
+ public static function forGroupe($controle, $groupe){
+ $getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes
+ FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g
+ WHERE n.id_appartenance = app.id_appartenance
+ AND app.id_semestre = s.id_semestre
+ AND app.id_groupe = g.id_groupe
+ AND s.id_semestre = mcc_ue.id_semestre
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
+ AND mcc_m.id_mcc_module = ctrl.id_mcc_module
+ AND n.id_controle = ctrl.id_controle
+
+ AND ctrl.id_controle = :controle
+ AND app.id_groupe = :groupe
+
+ GROUP BY g.id_groupe
+
+ ORDER BY g.nom ASC");
+ $getNoteList->execute(array( ':controle' => $controle, ':groupe' => $groupe ));
+
+ return $getNoteList->fetch();
+ }
+
+
+ /* RETOURNE LA MOYENNE D'UN CONTRÔLE PARTICULIER
+ *
+ * @controle l'UID du contrôle en question
+ *
+ *
+ * @return moyenne retourne la moyenne d'un contrôle
+ * @return NULL retourne NULL s'il y a aucune note à ce contrôle
+ *
+ */
+ public static function moyenneForControle($controle){
+ $getMoyenne = DataBase::getPDO()->prepare("SELECT ctrl.id_controle, AVG(n.valeur) as moyenne
+ FROM controle as ctrl, note as n
+ WHERE ctrl.id_controle = n.id_controle
+ AND ctrl.id_controle = :controle
+
+ GROUP BY ctrl.id_controle");
+ $getMoyenne->execute(array( ':controle' => $controle ));
+
+ if( $fetchObj = $getMoyenne->fetch() )
+ return $fetchObj['moyenne'];
+ else
+ return null;
+ }
+
+
+
+ /* CRÉATION/MODIFICATION D'UNE NOTE POUR UN ETUDIANT À UN CONTRÔLE
+ *
+ * @etudiant l'UID de l'étudiant en question
+ * @controle l'UID du contrôle en question
+ * @semestre l'UID du semestre en question
+ * @valeur valeur de la note à saisir
+ *
+ *
+ * @return noteUID l'UID de la note si elle a bien été créé
+ * @return cree FALSE si la note n'a pas été créé
+ *
+ */
+ public static function creer($etudiant, $controle, $semestre, $valeur){
+ /* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
+ ============================================================================*/
+ if( !($noteUID=noteRepo::UID($etudiant, $controle)) ){
+
+ $creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur)
+ VALUES(
+ DEFAULT,
+ (SELECT id_appartenance FROM appartenance WHERE id_etudiant = :etudiant AND id_semestre = :semestre),
+ :controle,
+ :valeur.
+ )");
+ $creationNote->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $valeur ));
+
+
+ /* [2] Second cas : il faut modifier la note de cet étudiant
+ ============================================================================*/
+ }else{
+
+ $modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :noteUID");
+ $modificationNote->execute(array( ':valeur' => $valeur, ':noteUID' => $noteUID ));
+
+ }
+
+ /* [3] On vérifie que la note a bien été créé pour cet étudiant et ce contrôle
+ =================================================================================*/
+ if( !($noteUID=noteRepo::UID($etudiant, $controle)) ) return false;
+
+
+ /* [4] On vérifie que la note créée a bien la valeur qu'on a attribuée
+ =================================================================================*/
+ $verificationValeur = DataBase::getPDO()->prepare("SELECT note.valeur FROM note WHERE id_note = :noteUID");
+ $verificationValeur->execute(array( ':noteUID' => $noteUID ));
+
+ return ( $verificationValeur->fetch()['valeur'] == $valeur );
+ }
+
+
}
\ No newline at end of file
diff --git a/manager/repo/semestre.php b/manager/repo/semestre.php
index 3955503..af54eba 100755
--- a/manager/repo/semestre.php
+++ b/manager/repo/semestre.php
@@ -57,7 +57,10 @@ class semestreRepo extends DBAccess{
*/
public static function info($semestreUID){
// on considère que le semestre existe
- $getSemestreInfo = DataBase::getPDO()->prepare("SELECT id_semestre as id, nom, rang, annee FROM semestre WHERE id_semestre = :semestreUID");
+ $getSemestreInfo = DataBase::getPDO()->prepare("SELECT s.id_semestre as id, s.nom, s.rang, s.annee, f.id_formation, f.code as formation, f.nom as nom_formation
+ FROM semestre as s, formation as f
+ WHERE s.id_formation = f.id_formation
+ AND s.id_semestre = :semestreUID");
$getSemestreInfo->execute(array( ':semestreUID' => $semestreUID ));
// on retourne le résultat en supprimant les doublons à indices numériques
@@ -86,14 +89,15 @@ class semestreRepo extends DBAccess{
// on formate les variables
$semestre_pair = ($semestre_pair) ? '0' : '1';
- $getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id ".
- "FROM semestre as s, appartenance as app ".
- "WHERE app.id_semestre = s.id_semestre ".
+ $getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation
+ FROM semestre as s, appartenance as app, formation as f
+ WHERE s.id_formation = f.id_formation
+ AND app.id_semestre = s.id_semestre
- "AND app.id_etudiant = :etudiant ".
- "AND s.annee = :annee ".
- "AND s.rang % 2 = :semestre_pair ".
- "ORDER BY s.rang DESC");
+ AND app.id_etudiant = :etudiant
+ AND s.annee = :annee
+ AND s.rang % 2 = :semestre_pair
+ ORDER BY s.rang DESC");
$getSemestreUID->execute(array(
':etudiant' => $etudiant,
':annee' => $annee,
@@ -106,6 +110,56 @@ class semestreRepo extends DBAccess{
+ /* retourne la liste des semestres qu'à un enseignant
+ *
+ * @enseignant l'UID de l'enseignant en question
+ * @semestre_pair VRAI si le semestre en cours est pair
+ * @annee l'année en question
+ *
+ *
+ * @return semestres retourne la liste des semestres répondant aux critères
+ * @return FALSE retourne FALSE si aucun semestre ne correspond aux critères
+ *
+ */
+ public static function forTeacher($enseignant, $semestre_pair, $annee){
+ $getSemestreList = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee
+ FROM semestre as s, formation as f, enseignement as ens, mcc_module as mcc_m, mcc_ue
+ WHERE s.id_semestre = mcc_ue.id_semestre
+ AND s.id_formation = f.id_formation
+ AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
+ AND mcc_m.id_mcc_module = ens.id_mcc_module
+
+ AND ens.id_enseignant = :enseignant
+ AND s.rang % 2 = :semestre_pair
+ AND s.annee = :annee
+ ORDER BY s.rang ASC");
+ $getSemestreList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
+
+ return DataBase::delNumeric( $getSemestreList->fetchAll() );
+ }
+
+
+ /* retourne la liste des semestres d'une année
+ *
+ * @annee l'année en question
+ *
+ *
+ * @return semestres retourne la liste des semestres de cette année
+ * @return FALSE retourne FALSE si aucun semestre ne correspond aux critères
+ *
+ */
+ public static function forYear($annee){
+ $getSemestreList = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee
+ FROM semestre as s, formation as f
+ WHERE s.id_formation = f.id_formation
+ AND annee = :annee
+ ORDER BY rang ASC");
+ $getSemestreList->execute(array( ':annee' => $annee ));
+
+ return DataBase::delNumeric( $getSemestreList->fetchAll() );
+ }
+
+
}
\ No newline at end of file
diff --git a/manager/repo/ue.php b/manager/repo/ue.php
index 8a35824..b3e36c9 100755
--- a/manager/repo/ue.php
+++ b/manager/repo/ue.php
@@ -57,15 +57,15 @@ class ueRepo extends DBAccess{
*/
public static function forStudent($etudiant, $semestre){
// on récupère les modules
- $getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, 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 ".
+ $getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, 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");
+ 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() );
@@ -73,59 +73,55 @@ class ueRepo extends DBAccess{
- /* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UNE ANNEE
+ /* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UN SEMESTRE
*
* @enseignant Identifiant de l'enseignant
- * @semestre_pair VRAI si le semestre est pair
- * @annee l'année en cours
+ * @semestre l'UID du semestre en question
*
- * @return UEs retourne un tableau contenant les UEs de l'enseignant pour cette année
+ * @return UEs retourne un tableau contenant les UEs de l'enseignant pour ce semestre
*
*/
- public static function forTeacher($enseignant, $semestre_pair, $annee){
+ public static function forTeacher($enseignant, $semestre){
// on récupère les modules
- $getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
- "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 ". // si l'enseignant est correcteur uniquement
- "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 ".
+ $getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle
+ 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.rang % 2 = :semestre_pair ".
- "AND s.annee = :annee ".
+ AND ens.id_enseignant = :enseignant
+ AND s.id_semestre = :semestre
- "ORDER BY ue.nom, ue.libelle ASC");
- $getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
+ ORDER BY ue.nom, ue.libelle ASC");
+ $getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre' => $semestre ));
return DataBase::delNumeric( $getUesForTeacher->fetchAll() );
}
- /* RENVOIE LA LISTE DES UEs D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
+ /* RENVOIE LA LISTE DES UEs D'UN SEMESTRE D'UNE ANNEE COURANTE
*
- * @semestre_pair VRAI si le semestre est pair
- * @annee l'année en cours
+ * @semestre l'UID du semestre en question
*
- * @return UEs retourne un tableau contenant les UEs des semestres en cours
+ * @return UEs retourne un tableau contenant les UEs du semestre en question
* @return existent FAUX si aucun UE n'a été trouvé
*
*/
- public static function forYear($semestre_pair, $annee){
+ public static function forYear($semestre){
// on récupère les modules
- $getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
- "FROM ue, mcc_ue, semestre as s ".
- "WHERE ue.id_ue = mcc_ue.id_ue ".
- "AND mcc_ue.id_semestre = s.id_semestre ".
+ $getUEList = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle
+ FROM ue, mcc_ue, semestre as s
+ WHERE ue.id_ue = mcc_ue.id_ue
+ AND mcc_ue.id_semestre = s.id_semestre
- "AND s.rang % 2 = :semestre_pair ".
- "AND s.annee = :annee ".
- "ORDER BY s.rang, ue.nom, ue.libelle");
- $getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
+ AND s.id_semestre = :semestre
+ ORDER BY s.rang, ue.nom, ue.libelle");
+ $getUEList->execute(array( ':semestre' => $semestre ));
- return DataBase::delNumeric( $getUEsForYear->fetchAll() );
+ return DataBase::delNumeric( $getUEList->fetchAll() );
}
@@ -159,8 +155,7 @@ class ueRepo extends DBAccess{
/* [3] On créé le nouvel UE
=================================================================================================*/
- $creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) ".
- "VALUES(DEFAULT, :nom, :libelle)");
+ $creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
$creationUE->execute(array(
':nom' => $nom,
':libelle' => $libelle
diff --git a/manager/repo/user.php b/manager/repo/user.php
index 5fd1adc..ac57665 100755
--- a/manager/repo/user.php
+++ b/manager/repo/user.php
@@ -36,27 +36,27 @@ class userRepo extends DBAccess{
/* [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 = 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 ));
}elseif( is_bool($semestre_pair) && $annee != null ){
/* [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 ".
+ $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 u.identifiant = :identifiant ".
- "AND s.rang % 2 = :semestre_pair ".
- "AND s.annee = :annee");
+ AND u.identifiant = :identifiant
+ AND s.rang % 2 = :semestre_pair
+ AND s.annee = :annee");
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
}else // si les paramètres sont pas bons
@@ -131,8 +131,8 @@ class userRepo extends DBAccess{
/* [3] On créé le nouvel utilisateur
=================================================================================================*/
- $creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) ".
- "VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
+ $creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits)
+ VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
$creationUtilisateur->execute(array(
':identifiant' => $identifiant,
':prenom' => $prenom,
diff --git a/manager/security.php b/manager/security.php
index 62f96ec..b6a348d 100755
--- a/manager/security.php
+++ b/manager/security.php
@@ -54,9 +54,15 @@
error_reporting(-1);
}
- debug();
-
+ // function distinctArray($inArray){
+ // $outArray = array();
+ // foreach($inArray as $value) // pour chaque élément du tableau d'entrée, on l'ajoute uniquement si aucune entrée du tableau de sortie n'a la même valeur
+ // if( !in_array($value, $outArray) )
+ // array_push($outArray, $value);
+
+ // return $outArray;
+ // }
function secure_sha1($text){
@@ -123,77 +129,67 @@
* @return toutOK VRAI si variables bonnes / FAUX sinon
*
*/
- function checkParam($tabVar, $tabType, $tabForm) {
- // FORMAT DE $tabVar
- //
- // $tabVar = array(
- // $stringVar, // chaine de caractères
- // $integerVar, // entier
- // $numericVar, // nombre (sous forme d'entier ou de chaine)
- // $arrayVar // tableau
- // );
+ function checkParam($variable, $type){
+ $checker = isset($variable);
- // FORMAT DE $tabType
- //
- // $tabType = array(
- // 'string', // chaine de caractères
- // 'int', // entier
- // 'numeric', // nombre (sous forme d'entier ou de chaine)
- // 'array' // tableau
- // );
-
-
- // FORMAT DE $tabForm
- //
- // $tabType = array(
- // '/^[a-z0-9]{1,5}$/i', // chaine de caractères
- // '/^[0-9]+$/', // entier
- // '/^[0-9]+$/', // nombre (sous forme d'entier ou de chaine)
- // '??????' // tableau
- // );
-
-
-
-
-
- /* [1] Vérification de l'intégrité des tableaux
- =============================================================================*/
- $areArrays = is_array($tabVar) && is_array($tabForm); // si ce sont bien des tabeaux
- $areNEmpty = $areArrays && count($tabVar) > 0; // si ils ne sont pas vides
- $haveEqLen = $areNEmpty && count($tabVar) == count($tabForm); // si ils ont la même taille
-
- if( !$haveEqLen ) // si toutes les conditions ne sont pas vérifiées
- return false; // on retourne faux, car ne pourra pas être vrai
-
-
- /* [2] Pour chaque variable on vérifie les données
- =============================================================================*/
- $checker = false; // on définit le checker à VRAI
-
- // Vérification des types
-
- // pour chaque variable
- for($i = 0 ; $i < count($tabVar) ; $i++) {
-
- switch($tabType[$i]) {
-
- case 'string': if( is_string($tabForm[$i]) )
- $checker = is_string($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]);
- break;
- case 'int': if( is_string($tabForm[$i]) )
- $checker = is_int($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]);
- break;
- case 'numeric': if( is_string($tabForm[$i]) )
- $checker = is_numeric($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]);
- break;
- case 'array': if( is_numeric($tabForm[$i]) )
- $checker = is_array($tabVar[i]) && count($tabVar[$i]) > 0;
- break;
- }
+ // traitement en fonction du type
+ switch($type){
+ case 'utilisateur.identifiant':
+ return $checker && is_string($variable) && preg_match('/^[\w -]{3,50}$/i', $variable);
+ break;
+ case '':
+ return $checker && is_string($variable);
+ break;
+ case '':
+ return $checker && is_int($variable);
+ break;
+ case '':
+ return $checker && is_numeric($variable);
+ break;
+ case '':
+ return $checker && is_array($variable);
+ break;
+ case '':
+ return $checker && is_bool($variable);
+ break;
}
-
- return $checker;
+
}
+ /*function checkParamBIS( ...$checkIt ) {
+
+
+ // checkIt[] Tableau | checkIT[][] Types des Variables | checkIt[][][] Formats des variables | checkIt[][][][] Valeur des varialbes
+
+
+ $checker = false;
+
+ for( $i = 0; $i < func_num_args(); $i++) {
+
+ for( $j = 0; $j < sizeof( $checkIt[$i] ); $j++) {
+
+ switch ($checkIt[$i][$j]) {
+
+ case 'string': if( is_string( $checkIt[$i][$j][$j][$j] ) )
+ $checker = is_string( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] );
+ break;
+ case 'int': if( is_string( $checkIt[$i][$j][$j][$j]) )
+ $checker = is_int( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] );
+ break;
+ case 'numeric': if( is_string( $checkIt[$i][$j][$j][$j]]) )
+ $checker = is_numeric( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] );
+ break;
+ case 'array': if( is_numeric( $checkIt[$i][$j][$j][$j]) )
+ $checker = is_array( $checkIt[$i][$j][$j][$j] ) && count( $checkIt[$i][$j][$j] ) > 0;
+ break;
+ }
+
+ }
+ }
+
+ return $checker;
+
+ }*/
+
?>
diff --git a/page/_JS/career.js b/page/_JS/career.js
index 96df9bb..f95f7cf 100644
--- a/page/_JS/career.js
+++ b/page/_JS/career.js
@@ -1,21 +1,227 @@
\ No newline at end of file
diff --git a/page/_JS/groups.js b/page/_JS/groups.js
index 6303038..a44140e 100755
--- a/page/_JS/groups.js
+++ b/page/_JS/groups.js
@@ -2,78 +2,13 @@
-// si aucune sous-partie n'est active, on active la première
-if( document.querySelector('#CONTAINER hgroup.active') == null )
- selectSubSection( document.querySelector('#CONTAINER hgroup') );
-
-/* Gestion du déroulement des tableaux des groupes */
-function afficherCacherGroupes(e){
- e.preventDefault();
-
- // s'il s'agit de la case "Voir plus"
- if( e.target.className == 'more' ){
- var thead = e.target.parentNode.parentNode.parentNode.children[0];
- thead.className = (thead.className=='active') ? '' : 'active';
- }
-}
-
-if( !afficherCacherGroupesDefined )
- DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false);
-
-var afficherCacherGroupesDefined = true;
-
-
-
-
-/* on définit le Drag'n'Drop */
-// var dnd = new DragnDrop();
-
-
-
-
-
-
-/* GESTION DU DRAG N DROP */
+/* GESTION DU DEPLACEMENT D'ELEVES */
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin
- // var members = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td:not(.more)');
- // for( var i = 0 ; i < members.length ; i++ )
- // dnd.setDraggable(members[i]);
-
- // var groups = document.querySelectorAll('#CONTAINER section[name=movestudents] table thead th:first-child');
- // for( var i = 0 ; i < groups.length ; i++ )
- // dnd.setDroppable(groups[i]);
-
- // dnd.init(function(input, output){ // on demande un déplacement
- // var id_etudiant = input.children[0].children[0].innerHTML;
- // var nom_groupe = output.children[0].innerHTML;
-
- // var request = { // on définit la requête pour API
- // level_0: 'groups',
- // level_1: 'move',
- // etudiant: id_etudiant,
- // groupe: nom_groupe
- // };
-
- // // l'ordre n'est pas alphabétique mais va à la fin
-
- // API.send(request, function(response){ // on gère la réponse de API
- // if( response.request == 'success' ){
- // input.parentNode.removeChild( input ); // on supprime le membre de l'ancien groupe
-
- // var tableauDestination = output.parentNode.parentNode.parentNode.children[1]; // destination
- // tableauDestination.appendChild( input ); // on ajoute le membre au nouveau groupe
-
- // // selectSection( document.querySelector('#MENU span[data-link=groups]') );
- // }
- // });
- // });
- //
-
/* DEPLACEMENT A L'AIDE DES