Récupération de la branche dev

This commit is contained in:
Cedric 2015-11-18 09:57:43 +01:00
commit 1d82880956
29 changed files with 2521 additions and 1330 deletions

View File

@ -11,14 +11,35 @@
/* .unstressed */ /* .unstressed */
span.unstressed{ color: #aaa; } span.unstressed{ color: #aaa; }
tr:hover > td > span.unstressed{ color: #ddd; } body.trHoverActivated tr:hover > td > span.unstressed{ color: #ddd; }
span.stressed{ font-weight: bold; } span.stressed{ font-weight: bold; }
thead.normal > tr > th{ font-weight: normal; }
/*************************/
/*** TITLE PERSONALISÉ ***/
/*************************/
#CONTAINER [data-info]:after{
content: attr(data-info);
/* position */
/*display: block;*/ display: none;
position: absolute;
margin-left: 4em;
padding: .3em;
/* border */
border-radius: 3px;
/* background */
background-color: #233342;
/* foreground */
color: #fff;
}
/* INFO SURVOL */
#CONTAINER [data-info]:hover:after{ display: block; }
@ -96,23 +117,22 @@ table.basic table.basic tr > td:first-child { border-left: 10px solid #9e9e9
/* @hover */ /* @hover */
table.basic tr:hover > td{ color: #fff; } body.trHoverActivated table.basic tr:hover > td{ color: #fff; }
table.basic:nth-child(4n+0) tr:hover > td { background-color: #e63c54; } body.trHoverActivated table.basic:nth-child(4n+0) tr:hover > td { background-color: #e63c54; }
table.basic:nth-child(4n+1) tr:hover > td { background-color: #3c73e6; } body.trHoverActivated table.basic:nth-child(4n+1) tr:hover > td { background-color: #3c73e6; }
table.basic:nth-child(4n+2) tr:hover > td { background-color: #e6983c; } body.trHoverActivated table.basic:nth-child(4n+2) tr:hover > td { background-color: #e6983c; }
table.basic:nth-child(4n+3) tr:hover > td { background-color: #2dcc70; } body.trHoverActivated table.basic:nth-child(4n+3) tr:hover > td { background-color: #2dcc70; }
table.basic table.basic tr:hover > td { background-color: #9e9e9e; } body.trHoverActivated table.basic table.basic tr:hover > td { background-color: #9e9e9e; }
/* .noborder */ /* .noborder */
table.basic tr.noborder > td:first-child{ border-left: 1px solid transparent; } table.basic tr.noborder > td:first-child{ border-left: 1px solid transparent; }
table.basic tr:hover td{ background-color: #fff; } body.trHoverActivated table.basic tr:hover td{ background-color: #fff; }
/* .transparentbg */ /* .transparentbg */
table.basic tr.transparentbg > td{ background-color: transparent; } table.basic tr.transparentbg > td{ background-color: transparent; }
table.basic tr.transparentbg:hover > td{ background-color: transparent; } table.basic tr.transparentbg:hover > td{ background-color: transparent; }
table.basic tr.transparentbg .link{ background-color: #fff; }
table.basic tr.transparentbg > td{ color: inherit; } table.basic tr.transparentbg > td{ color: inherit; }
@ -150,7 +170,7 @@ span.link{
box-shadow: inset 0 0 1px #f5f5f5; box-shadow: inset 0 0 1px #f5f5f5;
/* background */ /* background */
background: #eee; background: #fff;
/* foreground */ /* foreground */
color: #333; color: #333;
@ -158,7 +178,7 @@ span.link{
/* extra */ /* extra */
cursor: pointer; cursor: pointer;
} }
table.basic td > span.link{ background: #eee; }
span.link:hover{ color: #000; } span.link:hover{ color: #000; }
/*********************/ /*********************/
@ -166,18 +186,18 @@ span.link:hover{ color: #000; }
/*********************/ /*********************/
select{ select{
/* position */ /* position */
margin: 2em 0; margin: 2em;
padding: 0 1em; padding: 0 1em;
/* border */ /* border */
border-radius: 5px; border-radius: 5px;
border: 1px solid #ddd; border: 1px solid #2dcc70;
/* background */ /* background */
background-color: #fff; background-color: #fff;
/* foreground */ /* foreground */
color: #233342; color: #2dcc70;
/* select */ /* select */
-webkit-appearance:none; -webkit-appearance:none;
@ -185,6 +205,12 @@ select{
appearance:none; appearance:none;
} }
/* select grisé => selection modules existants par exemple */
tr.grayscale select{
border-color: #bdbdbd;
color: #4e4e4e;
}
/* pour déplacement d'élève */ /* pour déplacement d'élève */
td select{ margin: -1em; padding: .5em; } td select{ margin: -1em; padding: .5em; }
@ -196,7 +222,7 @@ select > option{
background-color: #fff; background-color: #fff;
/* foreground */ /* foreground */
color: #233342; color: #555;
text-indent: 1em; text-indent: 1em;
} }
@ -205,31 +231,138 @@ td select > option{ padding: 0; }
/*
select > option:nth-child(4n+0){ color: #e63c54; }
select > option:nth-child(4n+1){ color: #3c73e6; }
select > option:nth-child(4n+2){ color: #e6983c; }
select > option:nth-child(4n+3){ color: #2dcc70; }*/
.confirm{
.valider_deplacement{
/* position */ /* position */
/*display: inline-block;*/ display: none; /*display: inline-block;*/ display: none;
position: absolute; position: absolute;
margin-left: 2em; margin-left: 2em;
margin-top: -.2em; margin-top: -.2em;
width: 1.5em;
height: 1.5em; height: 1.5em;
padding: 0 .7em 0 1.3em;
/* border */
border-radius: 3px;
border: 1px solid #2dcc70;
/* background */ /* background */
background: transparent center center no-repeat; background: transparent center left .2em no-repeat;
background-size: 90% auto; background-size: 1em auto;
/* foreground */
color: #2dcc70;
line-height: 1.5em;
/* extra */ /* extra */
cursor: pointer; cursor: pointer;
} }
.valider_deplacement.active{ display: inline-block; background-image: url(../src/validate.svg); }
tr:hover td .valider_deplacement.active{ background-image: url(../src/validate@hover.svg); }
/* @all */
.confirm.all,
tr.grayscale .confirm{ margin-top: -.7em; }
/* @active */
input.active + .confirm,
select.active + .confirm,
.confirm.active{
display: inline-block;
background-image: url(../src/validate.svg);
}
/* tr@hover */
body.trHoverActivated tr:hover td select.active + .confirm,
body.trHoverActivated tr:hover td input.active + .confirm,
body.trHoverActivated tr:hover td .confirm.active{
border-color: #fff;
background-image: url(../src/validate@hover.svg);
color: #fff;
}
/* saisie note */
.saisie_note,
tr.grayscale input{
/* position */
margin: -.5em;
width: 4em;
padding: .5em 1em;
/* border */
border-radius: 3px;
border: 1px solid #bdbdbd;
}
/* @focus */
.saisie_note:focus,
tr.grayscale input:focus{
border-color: #999;
}
/******************************/
/*** SELECTIONS DES PARTIES ***/
/******************************/
#CONTAINER > section > .partlist{
/* position */
display: table;
margin: 2em;
/* border */
border-spacing: 0;
}
#CONTAINER > section > .partlist td{
/* position */
padding: .7em 2em;
/* border */
border: 1px solid #2dcc70;
border-right: 0;
/* background */
background-color: #fff;
/* foreground */
color: #2dcc70;
/* extra */
cursor: pointer;
/* animation */
transition: .2s ease-in-out;
-moz-transition: .2s ease-in-out;
-webkit-transition: .2s ease-in-out;
-ms-transition: .2s ease-in-out;
-o-transition: .2s ease-in-out;
}
/* @radius */
#CONTAINER > section > .partlist td:first-child{
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
/* @border + @radius */
#CONTAINER > section > .partlist td:last-child{
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
border-right: 1px solid #2dcc70;
}
#CONTAINER > section > .partlist td.active{
background-color: #2dcc70;
color: #fff;
}

View File

@ -33,7 +33,7 @@ $notifNotifNum = 5;
<script type='text/javascript' src='js/dragndrop.js' ></script> <!-- Gestion des raccourcis clavier --> <script type='text/javascript' src='js/dragndrop.js' ></script> <!-- Gestion des raccourcis clavier -->
</head> </head>
<body><!-- CORPS DE LA PAGE --> <body class='trHoverActivated_'><!-- CORPS DE LA PAGE -->
<?php <?php
if( $_SESSION['identifiant'] != null ){ if( $_SESSION['identifiant'] != null ){

View File

@ -65,6 +65,15 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
/* initialisation du gestionnaire */ /* initialisation du gestionnaire */
pageM.setPage(null, 'page', DOM.CONTAINER, ['home', 'groups', 'modules', 'career', 'settings'] ); pageM.setPage(null, 'page', DOM.CONTAINER, ['home', 'groups', 'modules', 'career', 'settings'] );
/* ON REMPLACE "F5" par le rechargement manuel */
// window.addEventListener('keydown', function(e){
// if( e.keyCode == 116 ){ // F5
// e.preventDefault();
// reload();
// }
// }, false);
/* [b] API.js /* [b] API.js
==============================================================*/ ==============================================================*/
@ -93,16 +102,24 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
/* GESTION DES CATEGORIES (SECTIONS) /* GESTION DES CATEGORIES (SECTIONS)
* *
* @param section<Element> l'élément à activer * @param section<Element> l'élément à activer
* @param clearParam<Boolean> 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 * [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é * [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 <Element> de type <li> qui a la propriété "data-link" [ET] section pas déjà active // si @subSection est un <Element> de type <li> 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( 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 // on charge la page
pageM.setPage( section.dataset.link ); 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(){ pageM.xhr[pageM.xhr.length-1].addEventListener('load', function(){
// on récupère les sections du document // 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 if( sections != null ){ // si on en trouve
DOM.SUBSECTIONS.innerHTML = ""; // on efface le #SUBHEADER > nav <=> les liens des sous-parties 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 for( var i = 0 ; i < sections.length ; i++ ) // pour chaque section, on créé un lien correspondant
if( i == 0 ) // on active le premier if( i == 0 ) // on active le premier
DOM.SUBSECTIONS.innerHTML += "<span data-sectname='" +sections[i].getAttribute('name')+ "' class='active'>" +sections[i].title+ "</span>"; DOM.SUBSECTIONS.innerHTML += "<span data-sectname='" +sections[i].getAttribute('name')+ "' class='active'>" +sections[i].getAttribute('data-title')+ "</span>";
else // pas les autres else // pas les autres
DOM.SUBSECTIONS.innerHTML += "<span data-sectname='" +sections[i].getAttribute('name')+ "'>" +sections[i].title+ "</span>"; DOM.SUBSECTIONS.innerHTML += "<span data-sectname='" +sections[i].getAttribute('name')+ "'>" +sections[i].getAttribute('data-title')+ "</span>";
} }
// si dans pageManager.js, on a une sous-partie et qu'elle existe physiquement // 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 */ /* activation au chargement en fonction de la page courante de pageManager.js */
var lastSection = document.querySelector('#MENU span[data-link='+pageM.page+']'); var lastSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
if( lastSection != null ) if( lastSection != null )
selectSection(lastSection); // on l'active selectSection(lastSection); // on l'active
/* Gestion des liens du menu */ /* 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 remClass(lastSection, 'active'); // on la désactive
// on active la page associée // 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 ) if( target != null )
addClass(target, 'active'); addClass(target, 'active');
@ -341,16 +361,15 @@ initForm( // initialisation du formulaire de connection
* *
* *
*/ */
Shortcut('ctrl+alt+n', function(){ // Shortcut('ctrl+alt+n', function(){
pageM.vars[0] = 'notifications'; // pageM.vars[0] = 'notifications';
selectSection( document.querySelector('#MENU > span[data-link=home]') ); // selectSection( document.querySelector('#MENU > span[data-link=home]') );
});
// Shortcut('ctrl+alt+e', function(){
// console.log(DOM.LOGOUT);
// DOM.LOGOUT.click();
// }); // });
Shortcut('ctrl+alt+e', function(){
addClass(DOM.WRAPPER, 'blurred');
});
/* [6] GESTION DES LIENS SPÉCIFIQUES /* [6] GESTION DES LIENS SPÉCIFIQUES
==============================================================*/ ==============================================================*/

View File

@ -22,23 +22,22 @@ pageManager.prototype = {
ajax: function(pLink, pHandler, pMethod, pForm){ ajax: function(pLink, pHandler, pMethod, pForm){
// on efface les requêtes qui sont terminées et on push une nouvelle // on efface les requêtes qui sont terminées et on push une nouvelle
for( var i = 0 ; i < this.xhr.length ; i++ ){ 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 = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée
} }
this.xhr.push(true); var index;
i = this.xhr.length-1;
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
this.xhr[i] = new XMLHttpRequest(); index = this.xhr.push( new XMLHttpRequest() ) -1;
else // IE5, IE6 else // IE5, IE6
this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest'); index = this.xhr.push( new ActiveXObject('Microsoft.XMLHttpRequest') ) -1;
var ptrPageManager = this; var ptrPageManager = this;
this.xhr[i].onreadystatechange = function(){ this.xhr[index].onreadystatechange = function(){
if( ptrPageManager.xhr[i].readyState == 4 ) // si la requête est terminée if( ptrPageManager.xhr[index].readyState == 4 ) // si la requête est terminée
if( [0,200].indexOf(ptrPageManager.xhr[i].status) > -1 ) // si fichier existe et reçu if( [0,200].indexOf(ptrPageManager.xhr[index].status) > -1 ) // si fichier existe et reçu
pHandler(ptrPageManager.xhr[i].responseText); pHandler(ptrPageManager.xhr[index].responseText);
else // si code d'erreur retourne null else // si code d'erreur retourne null
pHandler(); pHandler();
} }
@ -49,8 +48,8 @@ pageManager.prototype = {
// gestion du formulaire si la méthode est POST // gestion du formulaire si la méthode est POST
var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null; var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null;
this.xhr[i].open( method, pLink, true); this.xhr[index].open( method, pLink, true );
this.xhr[i].send( form ); this.xhr[index].send( form );
}, },
/***************************************************** [APPLICATION] Ajax() ******************************************************/ /***************************************************** [APPLICATION] Ajax() ******************************************************/
// EXEMPLES DE FONCTIONS POUR pHandler // // EXEMPLES DE FONCTIONS POUR pHandler //

View File

@ -74,13 +74,118 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons 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 if( is_array($semestreList) ){ // si on a bien un tableau
$answer->UEs = $UEs; // on renvoie dans answer->UEs $answer->semestres = $semestreList; // on renvoie dans answer->semestreList
$answer->request = 'success'; // et on renvoie success $answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau }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 }else
$answer->request = 'param_error'; $answer->request = 'param_error';

View File

@ -38,7 +38,7 @@ class DataBase{
/* retourne une instance de la classe */ /* retourne une instance de la classe */
public static function getInstance(){ public static function getInstance(){
if( DataBase::$instance == null ) if( DataBase::$instance == null )
DataBase::$instance = new DataBase("localhost", "sid2", "php", "Qt358nUdyeTxLDM8"); DataBase::$instance = new DataBase("localhost", "sid2", "root", "");
return DataBase::$instance; return DataBase::$instance;
} }
@ -215,14 +215,7 @@ class DataBase{
/******************************************************************/ /******************************************************************/
/*** retourne la liste des utilisateurs des groupes d'une année ***/ /*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/ /******************************************************************/
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair, $pSemestre=null, $pGroupe=null){ // pSemestre/pGroupe optionnels public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){
// 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
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/ /*** 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 = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array( ':annee' => $annee )); $checkAnnee->execute(array( ':annee' => $annee ));
@ -230,7 +223,7 @@ class DataBase{
// on récupère la liste des groupes // 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 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']); $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 ***/ /*** retourne la liste des utilisateurs des groupes d'une année ***/
/******************************************************************/ /******************************************************************/
public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant, $pSemestre, $pGroupe){ public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant){
// 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
/*** on cherche un semestre avec cette année ***/ /*** on cherche un semestre avec cette année ***/
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee"); $checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$checkAnnee->execute(array( ':annee' => $annee )); $checkAnnee->execute(array( ':annee' => $annee ));
@ -261,7 +246,7 @@ class DataBase{
// on récupère la liste des groupes // 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 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']); $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( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
// on retourne le nom
// on cherche le groupe associé if( $groupeObj = groupRepo::forStudent($etudiantUID, $semestreUID) )
$getNomGroupe = DataBase::getPDO()->prepare("SELECT g.nom ". return $groupeObj['nom'];
"FROM utilisateur as u, groupe as g, appartenance as app ". else // si on a pas trouvé de groupe pour cet étudiant à ce semestre
"WHERE app.id_etudiant = u.identifiant ". return 'unknown_group';
"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';
} }
@ -304,98 +277,13 @@ class DataBase{
/******************************************************/ /******************************************************/
/***** déplace un étudiant d'un groupe à un autre *****/ /***** 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 ***/ if( groupRepo::ajouterMembre($etudiant, $destGroupeUID, $semestreInfo['id']) )
$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' )
return 'success'; return 'success';
else else
return 'error'; 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 // on vérifie que l'enseignant enseigne bien cette année
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher'; 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 foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b)
$getModuleList = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom as nom, m.libelle as libelle ". $semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
"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 ".
"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 ***/ /*** retourne les modules des semestres en cours ***/
/***************************************************/ /***************************************************/
public function getModulesByUEByYear($semestre_pair, $annee){ public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair
// on récupère la liste des UEs
$UEList = ueRepo::forYear($semestre_pair, $annee);
foreach($UEList as $iter=>$UE) // pour chaque UE, on récupère la liste des UEs // on récupère les semestres de cette année
$UEList[$iter]['modules'] = moduleRepo::forYear($UE['id'], $semestre_pair, $annee); $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,154 +500,97 @@ class DataBase{
public function getControlesEnseignant($enseignant, $semestre_pair, $annee){ public function getControlesEnseignant($enseignant, $semestre_pair, $annee){
// on vérifie que le semestre existe et que l'enseignant y enseigne // 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'; 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){ foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
$UEList[$iter_ue]['modules'] = moduleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['id'], $UEList[$iter_ue]['id_semestre']); $semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){ foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'] as $iter_m=>$c){
$UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['modules'][$iter_mod]['id'], $UEList[$iter_ue]['id_semestre']); $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'][$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 ***/ /********************************************/
/**************************************/ /*** retourne les notes pour un contrôle ***/
public function getModuleNotes($etudiant, $module, $semestre, $annee){ /********************************************/
// on vérifie que le module, le semestre existent et que l'étudiant est inscrit à ce semestre public function getNotesEnseignant($enseignant, $semestre_pair, $annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; // on récupère les informations du contrôle
if( !($moduleUID=moduleRepo::UID($module)) ) return 'unknown_module'; 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();
}
return $controlObj;
}
/*** 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 ". /*** saisie note étudiant à un contrôle ***/
"WHERE app.id_etudiant = :etudiantUID ". /******************************************/
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_ue = ue.id_ue ". // saisie de la note
"AND mcc_ue.id_semestre = app.id_semestre ". $rep = noteRepo::creer($etudiantUID, $controleInfo['id'], $controleInfo['id_semestre'], $note);
"AND mcc_ue.id_semestre = :semestreUID ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". if( $rep )
return 'success';
"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;
else 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() );
} }
} }

View File

@ -168,20 +168,9 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $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 $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 ){ 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 if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist; $answer->grouplist = $grouplist;
@ -205,24 +194,10 @@ require_once __ROOT__.'/manager/database.php';
$typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings $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 $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 ){ if( $anneeCheck ){
// $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair'], $semestre, $groupe); // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']);
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null, $semestre, $groupe); $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null);
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
$answer->grouplist = $grouplist; $answer->grouplist = $grouplist;
@ -267,14 +242,14 @@ require_once __ROOT__.'/manager/database.php';
/************************************************/ /************************************************/
case 'move': if( permission('admin') ){ 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 $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 $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 $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
if( $groupeCheck ){ // si param ok 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 }else
$answer->request = 'param_error'; $answer->request = 'param_error';

View File

@ -82,16 +82,16 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons 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 // STRUCTURE
// tableau d'UES contenant un tableau de MODULES // tableau d'UES contenant un tableau de MODULES
if( is_array($UEList) ){ // si on a bien un tableau if( is_array($semestreList) ){ // si on a bien un tableau
$answer->UEs = $UEList; // on renvoie dans answer->ues $answer->semestres = $semestreList; // on renvoie dans answer->ues
$answer->request = 'success'; // et on renvoie success $answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau }else // sinon si c'est pas un tableau
$answer->request = $UEList; // on retourne l'erreur $answer->request = $semestreList; // on retourne l'erreur
}else }else
$answer->request = 'param_error'; $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 $anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons 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 // STRUCTURE
// tableau d'UES contenant un tableau de MODULES // tableau d'UES contenant un tableau de MODULES
if( is_array($UEList) ){ // si on a bien un tableau if( is_array($semestreList) ){ // si on a bien un tableau
$answer->UEs = $UEList; // on renvoie dans answer->ues $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 $answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau }else // sinon si c'est pas un tableau
$answer->request = $UEList; // on retourne l'erreur $answer->request = $UEList; // on retourne l'erreur

View File

@ -14,12 +14,21 @@ class controleRepo extends DBAccess{
* *
* @controleUID<int> l'UID du controle duquel on veut les infos * @controleUID<int> l'UID du controle duquel on veut les infos
* *
* @return controle<Array> tableau associatif contenant tout les champs de la BDD pour ce controle * @return controle<Array> tableau associatif contenant tout les champs de la BDD pour ce controle
* *
*/ */
public static function info($controleUID){ public static function info($controleUID){
// on considère que le semestre existe // 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( $getControleInfo->execute(array(
':controleUID' => $controleUID ':controleUID' => $controleUID
)); ));
@ -42,14 +51,14 @@ class controleRepo extends DBAccess{
* *
*/ */
public static function forStudent($module, $semestre){ 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 ". $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 ". 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 ". WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
"AND mcc_ue.id_semestre = s.id_semestre ". AND mcc_ue.id_semestre = s.id_semestre
"AND mcc_m.id_module = :module ". AND mcc_m.id_module = :module
"AND s.id_semestre = :semestre"); AND s.id_semestre = :semestre");
$getControleList->execute(array( ':module' => $module, ':semestre' => $semestre )); $getControleList->execute(array( ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() ); return DataBase::delNumeric( $getControleList->fetchAll() );
@ -70,20 +79,21 @@ class controleRepo extends DBAccess{
* *
*/ */
public static function forTeacher($enseignant, $module, $semestre){ 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 ". $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 ". 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 ". WHERE ens.id_mcc_module = mcc_m.id_mcc_module
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ". AND mcc_m.id_mcc_module = ctrl.id_mcc_module
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". 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 ens.id_enseignant = :enseignant
"AND mcc_m.id_module = :module ". AND mcc_m.id_module = :module
"AND mcc_ue.id_semestre = :semestre"); AND mcc_ue.id_semestre = :semestre
GROUP BY ctrl.id_controle");
$getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre )); $getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() ); return DataBase::delNumeric( $getControleList->fetchAll() );
} }
} }

View File

@ -60,11 +60,11 @@ class groupRepo extends DBAccess{
*/ */
public static function appartenanceUID($etudiant, $groupe, $semestre){ public static function appartenanceUID($etudiant, $groupe, $semestre){
/*** on cherche un groupe avec ce nom ***/ /*** on cherche un groupe avec ce nom ***/
$getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id ". $getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id
"FROM appartenance ". FROM appartenance
"WHERE id_etudiant = :etudiant ". WHERE id_etudiant = :etudiant
"AND id_groupe = :groupe ". AND id_groupe = :groupe
"AND id_semestre = :semestre"); AND id_semestre = :semestre");
$getAppartenanceUID->execute(array( $getAppartenanceUID->execute(array(
':etudiant' => $etudiant, ':etudiant' => $etudiant,
':groupe' => $groupe, ':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<String> l'identifiant (UID) de l'étudiant à ajouter au groupe * @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
* @groupe<int> l'UID du groupe auquel on veut le ratacher * @groupe<int> l'UID du groupe auquel on veut le ratacher
@ -121,27 +121,19 @@ class groupRepo extends DBAccess{
* *
*/ */
public static function ajouterMembre($etudiant, $groupe, $semestre){ public static function ajouterMembre($etudiant, $groupe, $semestre){
debug();
/* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre /* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre
===========================================================================*/ ===========================================================================*/
$dejaMembre = DataBase::getPDO()->prepare("SELECT id_appartenance as id ". if( $appartenanceUID = groupRepo::forStudent($etudiant, $semestre)['id_appartenance'] ){ // si c'est le cas
"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
/* [2] On modifie l'appartenance /* [2] On modifie l'appartenance
==============================*/ ==============================*/
// création et exécution de la requête de modification de l'appartenance // création et exécution de la requête de modification de l'appartenance
$ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance ". $ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance
"SET id_groupe = :groupe ". SET id_groupe = :groupe
"WHERE id_appartenance = :appartenanceUID"); WHERE id_appartenance = :appartenanceUID");
$ajouterMembre->execute(array( $ajouterMembres->execute(array(
':groupe' => $groupeUID, ':groupe' => $groupe,
':appartenanceUID' => $appartenanceUID ':appartenanceUID' => $appartenanceUID
)); ));
@ -150,15 +142,15 @@ class groupRepo extends DBAccess{
/* [2] On créé l'appartenance /* [2] On créé l'appartenance
==============================*/ ==============================*/
// création et exécution de la requête de création d'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) ". $ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre)
"VALUES( ". VALUES(
"(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant), ". (SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant),
"(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe), ". (SELECT id_groupe FROM groupe WHERE id_groupe = :groupe),
"(SELECT id_semestre FROM semestre WHERE id_semestre = :semestre) ". (SELECT id_semestre FROM semestre WHERE id_semestre = :semestre)
" )"); )");
$ajouterMembre->execute(array( $ajouterMembres->execute(array(
':etudiant' => $etudiantUID, ':etudiant' => $etudiant,
':groupe' => $groupeUID, ':groupe' => $groupe,
':semestre' => $semestre ':semestre' => $semestre
)); ));
@ -182,15 +174,16 @@ class groupRepo extends DBAccess{
*/ */
public static function membres($groupeUID, $semestreUID){ public static function membres($groupeUID, $semestreUID){
// si le groupe existe => on récupère ses utilisateurs // 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 ". $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 ". FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f
"WHERE u.identifiant = app.id_etudiant ". WHERE s.id_formation = f.id_formation
"AND g.id_groupe = app.id_groupe ". AND u.identifiant = app.id_etudiant
"AND app.id_semestre = app.id_semestre ". // à virer (peut-être) AND g.id_groupe = app.id_groupe
AND app.id_semestre = app.id_semestre
"AND g.id_groupe = :groupeUID ". AND g.id_groupe = :groupeUID
"AND s.id_semestre = :semestreUID ". AND s.id_semestre = :semestreUID
"ORDER BY u.prenom, u.nom"); ORDER BY u.prenom, u.nom");
$getMembres->execute(array( $getMembres->execute(array(
':groupeUID' => $groupeUID, ':groupeUID' => $groupeUID,
':semestreUID' => $semestreUID ':semestreUID' => $semestreUID
@ -213,17 +206,18 @@ class groupRepo extends DBAccess{
* *
*/ */
public static function forStudent($etudiant, $semestre){ public static function forStudent($etudiant, $semestre){
$getGroupe = DataBase::getPDO()->prepare("SELECT g.id_groupe as id, g.nom, g.libelle ". $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 utilisateur as u, groupe as g, appartenance as app ". FROM groupe as g, appartenance as app, formation as f, semestre as s
"WHERE app.id_etudiant = u.identifiant ". WHERE s.id_formation = f.id_formation
"AND app.id_groupe = g.id_groupe ". AND app.id_groupe = g.id_groupe
"AND u.identifiant = :etudiantUID ". AND app.id_semestre = s.id_semestre
"AND app.id_semestre = :semestreUID ". AND app.id_etudiant = :etudiant
"ORDER BY g.nom"); AND s.id_semestre = :semestre
$getGroupe->execute(array( ':etudiantUID' => $etudiantUID, ':semestreUID' => $semestreUID )); 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 /* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE
* *
* @enseignant<String> l'UID de l'enseignant recherché * @enseignant<String> l'UID de l'enseignant recherché
* @semestre_pair<Boolean> VRAI si le semestre courant est pair * @semestre_pair<Boolean> VRAI si le semestre courant est pair (***OPTIONNEL***)
* @annee<int> l'année recherchée * @annee<int> l'année recherchée
* *
* @pSemestre<int> ***OPTIONNEL*** le nom du semestre
* @pGroupe<String> ***OPTIONNEL*** le nom du groupe
*
* *
* @return groupes<Array> retourne la liste des groupes correspondant aux critères * @return groupes<Array> retourne la liste des groupes correspondant aux critères
* *
*/ */
public static function forTeacher($enseignant, $semestre_pair, $annee, $pSemestre=null, $pGroupe=null){ public static function forTeacher($enseignant, $semestre_pair, $annee){
// 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 $semestrePair0 = '0'; $semestrePair1 = '1';
$groupeOpt = '%'; if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; }
if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
$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 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 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() );
}
$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 ".
"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 app.id_etudiant = eleve.identifiant ". /* RETOURNE LES GROUPES INSCRITS A UN CONTROLE
"AND app.id_semestre = s.id_semestre ". *
"AND app.id_groupe = g.id_groupe ". * @controle<int> l'UID du contrôle en question
*
*
* @return groupes<Array> retourne un tableau contenant les groupes inscrits à ce contrôle
* @return FALSE<Boolean> 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() ); return DataBase::delNumeric( $getGroupeList->fetchAll() );
} }
@ -283,38 +297,27 @@ class groupRepo extends DBAccess{
/* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE /* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE
* *
* @semestre_pair<Boolean> VRAI si le semestre courant est pair * @semestre_pair<Boolean> VRAI si le semestre courant est pair (***OPTIONNEL***)
* @annee<int> L'année en cours * @annee<int> L'année en cours
* *
* @pSemestre<int> ***OPTIONNEL*** le nom du semestre
* @pGroupe<String> ***OPTIONNEL*** le nom du groupe
*
* *
* @return groupes<Array> retourne la liste des groupes correspondant aux critères * @return groupes<Array> retourne la liste des groupes correspondant aux critères
* *
*/ */
public static function forYear($semestre_pair, $annee, $pSemestre=null, $pGroupe=null){ public static function forYear($semestre_pair, $annee){
// 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; }
$semestrePair0 = '0'; $semestrePair1 = '1'; $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 ". $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 ". FROM groupe as g, semestre as s, appartenance as app, formation as f
"WHERE g.id_groupe = app.id_groupe ". WHERE s.id_formation = f.id_formation
"AND s.id_semestre = app.id_semestre ". AND g.id_groupe = app.id_groupe
AND s.id_semestre = app.id_semestre
"AND g.nom LIKE '".$groupeOpt."' ". AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1)
"AND s.nom LIKE '".$semestreOpt."' ". AND s.annee = :annee
"AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ". ORDER BY g.nom");
"AND s.annee = :annee ".
"ORDER BY g.nom");
$getGroupeList->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee )); $getGroupeList->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() ); return DataBase::delNumeric( $getGroupeList->fetchAll() );

View File

@ -58,15 +58,15 @@ class moduleRepo extends DBAccess{
*/ */
public static function forStudent($UEUID, $semestre){ public static function forStudent($UEUID, $semestre){
// on récupère les modules // on récupère les modules
$getModulesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ". $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 ". FROM module as m, semestre as s, mcc_ue, mcc_module as mcc_m
"WHERE mcc_ue.id_semestre = s.id_semestre ". WHERE mcc_ue.id_semestre = s.id_semestre
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
"AND mcc_m.id_module = m.id_module ". AND mcc_m.id_module = m.id_module
"AND mcc_ue.id_ue = :UEUID ". AND mcc_ue.id_ue = :UEUID
"AND s.id_semestre = :semestre ". AND s.id_semestre = :semestre
"ORDER BY m.nom, m.libelle"); ORDER BY m.nom, m.libelle");
$getModulesForStudent->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre )); $getModulesForStudent->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForStudent->fetchAll() ); return DataBase::delNumeric( $getModulesForStudent->fetchAll() );
@ -87,16 +87,16 @@ class moduleRepo extends DBAccess{
public static function forTeacher($enseignant, $UEUID, $semestre){ public static function forTeacher($enseignant, $UEUID, $semestre){
// on récupère les modules // on récupère les modules
$getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ". $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 ". FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ". WHERE ens.id_mcc_module = mcc_m.id_mcc_module
"AND mcc_m.id_module = m.id_module ". AND mcc_m.id_module = m.id_module
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
"AND ens.id_enseignant = :enseignant ". AND ens.id_enseignant = :enseignant
"AND mcc_ue.id_ue = :UEUID ". AND mcc_ue.id_ue = :UEUID
"AND mcc_ue.id_semestre = :semestre ". AND mcc_ue.id_semestre = :semestre
"ORDER BY m.nom, m.libelle"); ORDER BY m.nom, m.libelle");
$getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre )); $getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForTeacher->fetchAll() ); 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<int> l'UID d'un UE * @UEUID<int> l'UID d'un UE
* @semestre_pair<Boolean> VRAI si le semestre est pair * @semestre<int> l'UID du semestre en question
* @annee<int> l'année en cours
* *
* @return modules<Array> retourne un tableau contenant les modules de l'utilisateur pour ce semestre * @return modules<Array> retourne un tableau contenant les modules de l'utilisateur pour ce semestre
* @return existent<Boolean> FAUX si aucun module n'a été trouvé * @return existent<Boolean> 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 // on récupère les modules
$getModulesForYear = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ". $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 ". FROM module as m, mcc_module as mcc_m, mcc_ue, semestre as s
"WHERE m.id_module = mcc_m.id_module ". WHERE m.id_module = mcc_m.id_module
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
"AND mcc_ue.id_semestre = s.id_semestre ". AND mcc_ue.id_semestre = s.id_semestre
"AND mcc_ue.id_ue = :UEUID ". AND mcc_ue.id_ue = :UEUID
"AND s.rang % 2 = :semestre_pair ". AND s.id_semestre = :semestre
"AND s.annee = :annee ". ORDER BY s.rang, m.nom, m.libelle");
"ORDER BY s.rang, m.nom, m.libelle"); $getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
$getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getModulesForYear->fetchAll() ); return DataBase::delNumeric( $getModulesForYear->fetchAll() );
} }
@ -158,8 +156,7 @@ class moduleRepo extends DBAccess{
/* [3] On créé le nouveu module /* [3] On créé le nouveu module
=================================================================================================*/ =================================================================================================*/
$creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) ". $creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
"VALUES(DEFAULT, :nom, :libelle)");
$creationModule->execute(array( $creationModule->execute(array(
':nom' => $nom, ':nom' => $nom,
':libelle' => $libelle ':libelle' => $libelle
@ -174,4 +171,18 @@ class moduleRepo extends DBAccess{
/* retourne la liste de tous les modules existants
*
* @return modules<Array> 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() );
}
} }

View File

@ -15,47 +15,22 @@ class noteRepo extends DBAccess{
* @etudiant<String> l'identifiant de l'étudiant recherché * @etudiant<String> l'identifiant de l'étudiant recherché
* @controle<int> l'UID du contrôle * @controle<int> l'UID du contrôle
* *
* @return UID<String> si l'utilisateur est dans la BDD, retourne son UID * @return UID<String> l'UID de la note si elle existe pour ces critères
* @return FALSE<Boolean> FAUX si l'utilisateur n'est pas présent dans la BDD * @return FALSE<Boolean> 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){ public static function UID($etudiant, $controle){
if( $semestre == null && $annee == null ){ // on cherche un utilisateur avec cet identifiant $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
/* [1] Cas on cherche juste si l'utilisateur existe AND app.id_etudiant = :etudiant
=============================================================*/ AND ctrl.id_controle = :controle");
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant"); $getNoteUID->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant ));
}elseif( $semestre != null ){
/* [2] Cas on cherche si un étudiant est inscrit à un semestre
==============================================================*/
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ".
"FROM utilisateur as u, appartenance as app ".
"WHERE u.identifiant = app.id_etudiant ".
"AND u.identifiant = :identifiant ".
"AND app.id_semestre = :semestre");
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
}else{
/* [2] Cas on cherche si un enseignant enseigne l'année donnée
==============================================================*/
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ".
"FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ".
"WHERE u.identifiant = ens.id_enseignant ".
"AND ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND s.annee = :annee ".
"AND u.identifiant = :identifiant");
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':annee' => $annee ));
}
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur // 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){ 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 ". $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 ". 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 ". WHERE n.id_appartenance = app.id_appartenance
"AND app.id_semestre = s.id_semestre ". AND app.id_semestre = s.id_semestre
"AND s.id_semestre = mcc_ue.id_semestre ". AND s.id_semestre = mcc_ue.id_semestre
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ". AND mcc_m.id_mcc_module = ctrl.id_mcc_module
"AND n.id_controle = ctrl.id_controle ". AND n.id_controle = ctrl.id_controle
"AND app.id_etudiant = :etudiant ". AND app.id_etudiant = :etudiant
"AND ctrl.id_controle = :controle ". AND ctrl.id_controle = :controle
"ORDER BY n.valeur ASC"); ORDER BY n.valeur ASC");
$getNoteList->execute(array( ':etudiant' => $etudiant, ':controle' => $controle )); $getNoteList->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
return DataBase::delNumeric( $getNoteList->fetchAll() ); return DataBase::delNumeric( $getNoteList->fetchAll() );
@ -114,39 +89,179 @@ class noteRepo extends DBAccess{
/* /* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
** PAS UTILISÉ POUR L'INSTANT *
*/ * [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é
*
/* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
* *
* @controle<int> l'UID du controle concerné * @controle<int> l'UID du controle concerné
* *
* @return notes<Array> retourne les notes des étudiants pour un controle particulier * @groupe<int> ***OPTIONNEL*** l'UID du groupe spécifique
*
*
* @return notes<Array> [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){ public static function forTeacher($controle, $groupe=null){
$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 ". /* [1] Statistiques des groupes
"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 ". if( !is_int($groupe) ){
"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 ". $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"); GROUP BY g.id_groupe
$getNoteList->execute(array( ':controle' => $controle ));
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() ); return DataBase::delNumeric( $getNoteList->fetchAll() );
} }
/* RENVOIE LES STATISTIQUES ASSOCIÉES À UN CONTRÔLE POUR UN GROUPE SPÉCIFIQUE
*
* @controle<int> l'UID du controle concerné
* @groupe<int> l'UID du groupe spécifique
*
*
* @return notes<Array> retourne les stats des notes pour les groupes à ce contrôle
* @return FALSE<Boolean> 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<int> l'UID du contrôle en question
*
*
* @return moyenne<Float> 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<String> l'UID de l'étudiant en question
* @controle<int> l'UID du contrôle en question
* @semestre<int> l'UID du semestre en question
* @valeur<number> valeur de la note à saisir
*
*
* @return noteUID<int> l'UID de la note si elle a bien été créé
* @return cree<Boolean> 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 );
}
} }

View File

@ -57,7 +57,10 @@ class semestreRepo extends DBAccess{
*/ */
public static function info($semestreUID){ public static function info($semestreUID){
// on considère que le semestre existe // 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 )); $getSemestreInfo->execute(array( ':semestreUID' => $semestreUID ));
// on retourne le résultat en supprimant les doublons à indices numériques // on retourne le résultat en supprimant les doublons à indices numériques
@ -86,14 +89,15 @@ class semestreRepo extends DBAccess{
// on formate les variables // on formate les variables
$semestre_pair = ($semestre_pair) ? '0' : '1'; $semestre_pair = ($semestre_pair) ? '0' : '1';
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id ". $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 ". FROM semestre as s, appartenance as app, formation as f
"WHERE app.id_semestre = s.id_semestre ". WHERE s.id_formation = f.id_formation
AND app.id_semestre = s.id_semestre
"AND app.id_etudiant = :etudiant ". AND app.id_etudiant = :etudiant
"AND s.annee = :annee ". AND s.annee = :annee
"AND s.rang % 2 = :semestre_pair ". AND s.rang % 2 = :semestre_pair
"ORDER BY s.rang DESC"); ORDER BY s.rang DESC");
$getSemestreUID->execute(array( $getSemestreUID->execute(array(
':etudiant' => $etudiant, ':etudiant' => $etudiant,
':annee' => $annee, ':annee' => $annee,
@ -106,6 +110,56 @@ class semestreRepo extends DBAccess{
/* retourne la liste des semestres qu'à un enseignant
*
* @enseignant<String> l'UID de l'enseignant en question
* @semestre_pair<Boolean> VRAI si le semestre en cours est pair
* @annee<int> l'année en question
*
*
* @return semestres<Array> retourne la liste des semestres répondant aux critères
* @return FALSE<Boolean> 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<int> l'année en question
*
*
* @return semestres<Array> retourne la liste des semestres de cette année
* @return FALSE<Boolean> 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() );
}
} }

View File

@ -57,15 +57,15 @@ class ueRepo extends DBAccess{
*/ */
public static function forStudent($etudiant, $semestre){ public static function forStudent($etudiant, $semestre){
// on récupère les modules // 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 ". $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 ". FROM appartenance as app, semestre as s, mcc_ue, ue
"WHERE app.id_semestre = s.id_semestre ". WHERE app.id_semestre = s.id_semestre
"AND mcc_ue.id_semestre = s.id_semestre ". AND mcc_ue.id_semestre = s.id_semestre
"AND mcc_ue.id_ue = ue.id_ue ". AND mcc_ue.id_ue = ue.id_ue
"AND app.id_etudiant = :etudiant ". AND app.id_etudiant = :etudiant
"AND s.id_semestre = :semestre ". AND s.id_semestre = :semestre
"ORDER BY ue.nom, ue.libelle"); ORDER BY ue.nom, ue.libelle");
$getUesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre )); $getUesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
return DataBase::delNumeric( $getUesForStudent->fetchAll() ); 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<String> Identifiant de l'enseignant * @enseignant<String> Identifiant de l'enseignant
* @semestre_pair<Boolean> VRAI si le semestre est pair * @semestre<int> l'UID du semestre en question
* @annee<int> l'année en cours
* *
* @return UEs<Array> retourne un tableau contenant les UEs de l'enseignant pour cette année * @return UEs<Array> 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 // 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 ". $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 ". 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 ". WHERE ens.id_mcc_module = mcc_m.id_mcc_module
"AND ens.correcteur = 1 ". // si l'enseignant est correcteur uniquement AND ens.correcteur = 1
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
"AND mcc_ue.id_semestre = s.id_semestre ". AND mcc_ue.id_semestre = s.id_semestre
"AND mcc_ue.id_ue = ue.id_ue ". AND mcc_ue.id_ue = ue.id_ue
"AND ens.id_enseignant = :enseignant ". AND ens.id_enseignant = :enseignant
"AND s.rang % 2 = :semestre_pair ". AND s.id_semestre = :semestre
"AND s.annee = :annee ".
"ORDER BY ue.nom, ue.libelle ASC"); ORDER BY ue.nom, ue.libelle ASC");
$getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); $getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre' => $semestre ));
return DataBase::delNumeric( $getUesForTeacher->fetchAll() ); 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<Boolean> VRAI si le semestre est pair * @semestre<int> l'UID du semestre en question
* @annee<int> l'année en cours
* *
* @return UEs<Array> retourne un tableau contenant les UEs des semestres en cours * @return UEs<Array> retourne un tableau contenant les UEs du semestre en question
* @return existent<Boolean> FAUX si aucun UE n'a été trouvé * @return existent<Boolean> 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 // 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 ". $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 ". FROM ue, mcc_ue, semestre as s
"WHERE ue.id_ue = mcc_ue.id_ue ". WHERE ue.id_ue = mcc_ue.id_ue
"AND mcc_ue.id_semestre = s.id_semestre ". AND mcc_ue.id_semestre = s.id_semestre
"AND s.rang % 2 = :semestre_pair ". AND s.id_semestre = :semestre
"AND s.annee = :annee ". ORDER BY s.rang, ue.nom, ue.libelle");
"ORDER BY s.rang, ue.nom, ue.libelle"); $getUEList->execute(array( ':semestre' => $semestre ));
$getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getUEsForYear->fetchAll() ); return DataBase::delNumeric( $getUEList->fetchAll() );
} }
@ -159,8 +155,7 @@ class ueRepo extends DBAccess{
/* [3] On créé le nouvel UE /* [3] On créé le nouvel UE
=================================================================================================*/ =================================================================================================*/
$creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) ". $creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
"VALUES(DEFAULT, :nom, :libelle)");
$creationUE->execute(array( $creationUE->execute(array(
':nom' => $nom, ':nom' => $nom,
':libelle' => $libelle ':libelle' => $libelle

View File

@ -36,27 +36,27 @@ class userRepo extends DBAccess{
/* [2] Cas on cherche si un étudiant est inscrit à un semestre /* [2] Cas on cherche si un étudiant est inscrit à un semestre
==============================================================*/ ==============================================================*/
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ". $getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id
"FROM utilisateur as u, appartenance as app ". FROM utilisateur as u, appartenance as app
"WHERE u.identifiant = app.id_etudiant ". WHERE u.identifiant = app.id_etudiant
"AND u.identifiant = :identifiant ". AND u.identifiant = :identifiant
"AND app.id_semestre = :semestre"); AND app.id_semestre = :semestre");
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre )); $getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
}elseif( is_bool($semestre_pair) && $annee != null ){ }elseif( is_bool($semestre_pair) && $annee != null ){
/* [2] Cas on cherche si un enseignant enseigne l'année donnée /* [2] Cas on cherche si un enseignant enseigne l'année donnée
==============================================================*/ ==============================================================*/
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ". $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 ". FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue
"WHERE u.identifiant = ens.id_enseignant ". WHERE u.identifiant = ens.id_enseignant
"AND ens.id_mcc_module = mcc_m.id_mcc_module ". AND ens.id_mcc_module = mcc_m.id_mcc_module
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ". AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
"AND mcc_ue.id_semestre = s.id_semestre ". AND mcc_ue.id_semestre = s.id_semestre
"AND u.identifiant = :identifiant ". AND u.identifiant = :identifiant
"AND s.rang % 2 = :semestre_pair ". AND s.rang % 2 = :semestre_pair
"AND s.annee = :annee"); AND s.annee = :annee");
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); $getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
}else // si les paramètres sont pas bons }else // si les paramètres sont pas bons
@ -131,8 +131,8 @@ class userRepo extends DBAccess{
/* [3] On créé le nouvel utilisateur /* [3] On créé le nouvel utilisateur
=================================================================================================*/ =================================================================================================*/
$creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(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)"); VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
$creationUtilisateur->execute(array( $creationUtilisateur->execute(array(
':identifiant' => $identifiant, ':identifiant' => $identifiant,
':prenom' => $prenom, ':prenom' => $prenom,

View File

@ -54,9 +54,15 @@
error_reporting(-1); 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){ function secure_sha1($text){
@ -123,77 +129,67 @@
* @return toutOK<Boolean> VRAI si variables bonnes / FAUX sinon * @return toutOK<Boolean> VRAI si variables bonnes / FAUX sinon
* *
*/ */
function checkParam($tabVar, $tabType, $tabForm) { function checkParam($variable, $type){
// FORMAT DE $tabVar $checker = isset($variable);
//
// $tabVar = array(
// $stringVar, // chaine de caractères
// $integerVar, // entier
// $numericVar, // nombre (sous forme d'entier ou de chaine)
// $arrayVar // tableau
// );
// FORMAT DE $tabType // traitement en fonction du type
// switch($type){
// $tabType = array( case 'utilisateur.identifiant':
// 'string', // chaine de caractères return $checker && is_string($variable) && preg_match('/^[\w -]{3,50}$/i', $variable);
// 'int', // entier break;
// 'numeric', // nombre (sous forme d'entier ou de chaine) case '<string>':
// 'array' // tableau return $checker && is_string($variable);
// ); break;
case '<int>':
return $checker && is_int($variable);
break;
case '<numeric>':
return $checker && is_numeric($variable);
break;
case '<array>':
return $checker && is_array($variable);
break;
case '<boolean>':
return $checker && is_bool($variable);
break;
}
// FORMAT DE $tabForm }
//
// $tabType = array( /*function checkParamBIS( ...$checkIt ) {
// '/^[a-z0-9]{1,5}$/i', // chaine de caractères
// '/^[0-9]+$/', // entier
// '/^[0-9]+$/', // nombre (sous forme d'entier ou de chaine)
// '??????' // tableau
// );
// checkIt[] Tableau | checkIT[][] Types des Variables | checkIt[][][] Formats des variables | checkIt[][][][] Valeur des varialbes
$checker = false;
/* [1] Vérification de l'intégrité des tableaux for( $i = 0; $i < func_num_args(); $i++) {
=============================================================================*/
$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 for( $j = 0; $j < sizeof( $checkIt[$i] ); $j++) {
return false; // on retourne faux, car ne pourra pas être vrai
switch ($checkIt[$i][$j]) {
/* [2] Pour chaque variable on vérifie les données 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] );
$checker = false; // on définit le checker à VRAI 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;
}
// 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;
} }
} }
return $checker; return $checker;
} }*/
?> ?>

View File

@ -1,21 +1,227 @@
<!-- <!--
/********************************/
/* GESTION DE L'AFFINAGE PAR UE */
/********************************/
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], #CONTAINER > section[name] > table.partlist[name=semestre], #CONTAINER > section[name] > table.partlist[name=formation]");
for( var i = 0 ; i < partList.length ; i++ ){
partList[i].addEventListener('click', function(e){
var tableauParent = e.target.parentNode.parentNode.parentNode;
if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){
/* SI c'est une affinage par FORMATION */
if( tableauParent.getAttribute('name') == 'formation' ){
pageM.vars[1] = 'f:'+e.target.dataset.value;
if( pageM.vars.length > 2 ) // si un deuxième affinage existe, on le supprime lors du choix de la formation
pageM.vars.pop();
}
/* SI c'est une affinage par SEMESTRE */
if( tableauParent.getAttribute('name') == 'semestre' )
pageM.vars[2] = 's:'+e.target.dataset.value;
/* SI c'est un affinage par UE */
if( tableauParent.getAttribute('name') == 'UE' )
pageM.vars[2] = 'u:'+e.target.dataset.value;
// si la formation n'est pas définie, on l'active
if( !/^f:/.test(pageM.vars[1]) )
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop();
reload();
}
}, false);
}
/***********************************************/ /***********************************************/
/* GESTION DE LE FILTRAGE POUR LES ENSEIGNANTS */ /* GESTION DE LE FILTRAGE POUR LES ENSEIGNANTS */
/***********************************************/ /***********************************************/
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
// on récupère les liens
var groupLinks = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table.basic table.basic tr td span.link.group');
for( var i = 0 ; i < groupLinks.length ; i++ ) // on active un évènement pour le clic sur les nom de groupes controlesenseignantSection = document.querySelector('#CONTAINER section[name=controlesenseignants]');
groupLinks[i].addEventListener('click', function(e){ if( controlesenseignantSection != null ){ // si la section enseignant est présente sur la page
controlesenseignantSection.addEventListener('click', function(e){ // on créé l'évènement
/* LIENS POUR LES GROUPES ET CONTRÔLES */
if( e.target.className == 'link grp ctrl' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){
pageM.vars[1] = 'c:'+e.target.dataset.ctrl;
pageM.vars[2] = 'g:'+e.target.dataset.grp;
reload();
}
/* LIENS POUR LES GROUPES */
if( e.target.className == 'link grp' && e.target.dataset.hasOwnProperty('grp') ){
pageM.vars[2] = 'g:'+e.target.dataset.grp;
reload();
}
/* LIENS POUR LES CONTRÔLES */
if( e.target.className == 'link ctrl' && e.target.dataset.hasOwnProperty('ctrl') ){
pageM.vars[1] = 'c:'+e.target.dataset.ctrl;
if( pageM.vars[2] != null )
pageM.vars.pop();
reload();
}
/* LIENS POUR LES DOSSIER ETUDIANT */
if( e.target.className == 'link etu' && e.target.dataset.hasOwnProperty('etu') ){
pageM.vars[1] = 'e:'+e.target.dataset.etu;
if( pageM.vars[2] != null )
pageM.vars.pop();
pageM.vars[0] = 'studentcase'; // on redirige vers la page dossier étudiant
reload();
}
}, false);
}
}
/* GESTION DE LA SAISIE DE NOTES */
var nombreModification = 0; // contiendra le nombre de notes saisies
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != null ){ // si c'set l'admin
/* SAISIE A L'AIDE DES <INPUT> */
var saisieInput = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table tr td input[type=number][data-ctrl].saisie_note');
var saisieObj = [];
/* BOUTON "TOUT ENREGISTRER" */
var toutEnregistrerBtn = document.querySelector("#CONTAINER section[name=controlesenseignants] table tr td:last-child .confirm.all");
// on référencie tous les input dans un objet
for( var i = 0 ; i < saisieInput.length ; i++ ){
saisieInput[i].dataset.i = i; // le rang du <input> dans la liste
saisieObj[i] = {
inputEl: saisieInput[i], // le <input> en question
initval: parseFloat( saisieInput[i].value.replace(',', '.') ), // la valeur initiale du <input>
button: saisieInput[i].parentNode.children[1], // le bouton de validation pour ce <input>
ctrlid: saisieInput[i].dataset.ctrl, // on récupère l'id du contrôle
userid: saisieInput[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce <input>
};
// on créé l'évènement qui affiche le validateur dès le changement de valeur
saisieObj[i].inputEl.addEventListener('change', function(e){
// on récupère le rang dans la liste et qu'il s'agit du même élément
if( e.target.dataset.hasOwnProperty('i') && saisieObj[e.target.dataset.i].inputEl == e.target){
var obj = saisieObj[e.target.dataset.i];
var isActive = /active/.test(obj.inputEl.className); // VRAI si l'élément est actif
// si c'est une nouvelle valeur (nouvelle note), on active le validateur (bouton)
if( obj.initval != parseFloat(obj.inputEl.value.replace(',', '.')) )
addClass( obj.inputEl, 'active' );
else
remClass( obj.inputEl, 'active' );
// si changement du caractère "actif", et plus particulièrement
if( /active/.test(obj.inputEl.className) != isActive )
if( !isActive ) // si activation
nombreModification += 1;
else
nombreModification -= 1;
// si plus d'une modification, on affiche le bouton 'tout enregistrer'
if( nombreModification > 1 )
addClass( toutEnregistrerBtn, 'active' );
else
remClass( toutEnregistrerBtn, 'active' );
if( e.target.className == 'link group' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){ // s'il s'agit bien d'un nom de groupe
console.log('id_groupe: '+ e.target.dataset.grp +', id_controle: '+ e.target.dataset.ctrl );
} }
}, false); }, false);
console.log(groupLinks);
// on créé l'évènement de confirmation de la saisie
saisieObj[i].button.addEventListener('click', function(e){
// s'il s'agit bien d'un bouton de validation, que le <input> associé a data-i existante et que ça match correctement
if( /confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && saisieObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
var obj = saisieObj[e.target.parentNode.children[0].dataset.i];
var request = { // on définit la requête pour API
level_0: 'career',
level_1: 'saisieNote',
etudiant: obj.userid,
controle: obj.ctrlid,
note: obj.inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
};
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
if( response.request == 'success' ) reload();
});
}
}, false);
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
toutEnregistrerBtn.addEventListener('click', function(e){
var nbRequest = 0;
var nbSuccess = 0;
// on sélectionne toutes les valeurs contenues dans les lignes actives
for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
nbRequest += 1;
var request = { // on définit la requête pour API
level_0: 'career',
level_1: 'saisieNote',
etudiant: saisieObj[i].userid,
controle: saisieObj[i].ctrlid,
note: saisieObj[i].inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
};
API.send(request, function(response){ // on gère la réponse de API
if( response.request == 'success' ) nbSuccess += 1; // si on a une réponse positive, on incrémente le nombre de succès
// si tout est validé, on recharge la page
if( nbSuccess == nbRequest) reload();
});
}}
}, false);
}
} }
@ -27,7 +233,4 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ /
--> -->

View File

@ -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 DEPLACEMENT D'ELEVES */
/* 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 */
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin 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]; // <tbody> destination
// tableauDestination.appendChild( input ); // on ajoute le membre au nouveau groupe
// // selectSection( document.querySelector('#MENU span[data-link=groups]') );
// }
// });
// });
//
/* DEPLACEMENT A L'AIDE DES <SELECT> */ /* DEPLACEMENT A L'AIDE DES <SELECT> */
var deplacementElements = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td select'); var deplacementElements = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td select');
var deplacementObj = []; var deplacementObj = [];
@ -87,6 +22,7 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
select: deplacementElements[i], // le <select> en question select: deplacementElements[i], // le <select> en question
initval: deplacementElements[i].value, // la valeur initiale du <select> initval: deplacementElements[i].value, // la valeur initiale du <select>
button: deplacementElements[i].parentNode.children[1], // le bouton de validation pour ce <select> button: deplacementElements[i].parentNode.children[1], // le bouton de validation pour ce <select>
streid: deplacementElements[i].dataset.stre, // l'UID du semestre associé au groupe
userid: deplacementElements[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce <select> userid: deplacementElements[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce <select>
}; };
@ -97,9 +33,9 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
var obj = deplacementObj[e.target.dataset.i]; var obj = deplacementObj[e.target.dataset.i];
if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton) if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton)
addClass( obj.button, 'active' ); addClass( obj.select, 'active' );
else else
remClass( obj.button, 'active' ); remClass( obj.select, 'active' );
} }
}, false); }, false);
@ -108,18 +44,19 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
// on créé l'évènement de confirmation du déplacement // on créé l'évènement de confirmation du déplacement
deplacementObj[i].button.addEventListener('click', function(e){ deplacementObj[i].button.addEventListener('click', function(e){
// s'il s'agit bien d'un bouton de validation, que le <select> associé a data-i existante et que ça match correctement // s'il s'agit bien d'un bouton de validation, que le <select> associé a data-i existante et que ça match correctement
if( /^valider_deplacement/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && deplacementObj[e.target.parentNode.children[0].dataset.i].button == e.target ){ if( /^confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && deplacementObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
var obj = deplacementObj[e.target.parentNode.children[0].dataset.i]; var obj = deplacementObj[e.target.parentNode.children[0].dataset.i];
var request = { // on définit la requête pour API var request = { // on définit la requête pour API
level_0: 'groups', level_0: 'groups',
level_1: 'move', level_1: 'move',
etudiant: obj.userid, etudiant: obj.userid,
groupe: obj.select.value groupe: obj.select.value,
semestre: obj.streid
}; };
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
if( response.request == 'success' ) selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') ); if( response.request == 'success' ) reload();
}); });
} }
@ -130,27 +67,71 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
} }
/***************************************************/
/*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/ /**********************************************************************/
/***************************************************/ /*** GESTION DES SELECT/TABLES D'AFFINAGES POUR AFFINER LES GROUPES ***/
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select"); /**********************************************************************/
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select[name=groupe]");
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=semestre], #CONTAINER > section[name] > table.partlist[name=formation]");
// GESTION DE L'AFFINAGE PAR SEMESTRE //
for( var i = 0 ; i < partList.length ; i++ ){
partList[i].addEventListener('click', function(e){
var tableauParent = e.target.parentNode.parentNode.parentNode;
if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){
/* SI c'est une affinage par FORMATION */
if( tableauParent.getAttribute('name') == 'formation' ){
pageM.vars[1] = 'f:'+e.target.dataset.value;
if( pageM.vars.length > 2 ) // si un deuxième affinage existe, on le supprime lors du choix de la formation
pageM.vars.pop();
}
/* SI c'est une affinage par SEMESTRE */
if( tableauParent.getAttribute('name') == 'semestre' )
pageM.vars[2] = 's:'+e.target.dataset.value;
// si la formation n'est pas définie, on l'active
if( !/^f:/.test(pageM.vars[1]) )
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop();
reload();
}
}, false);
}
// GESTION DE LA PRISE EN COMPTE DES SELECT // // GESTION DE L'AFFINAGE PAR GROUPE //
DOM.CONTAINER.addEventListener('change', function(e){ for( var i = 0 ; i < selectList.length ; i++ ){
if( e.target.tagName == 'SELECT' && ['semestre', 'groupe'].indexOf(e.target.getAttribute('name')) > -1 ){
if( e.target.getAttribute('name') == 'semestre' ){ // SI modifie le semestre selectList[i].addEventListener('change', function(e){
pageM.vars[1] = e.target.value; // on selectionne semestre
pageM.vars[2] = '*'; // on désactive le groupe if( e.target.tagName == 'SELECT' && e.target.getAttribute('name') == 'groupe' ){
}else{ // SINON pageM.vars[2] = 'g:'+e.target.value;
pageM.vars[1] = '*'; // on désactive le semestre
pageM.vars[2] = e.target.value; // on active le groupe // si la formation n'est pas définie, on l'active
if( !/^f:/.test(pageM.vars[1]) )
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop();
reload();
} }
selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') ); }, false);
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
} }
}, false);

48
page/_JS/modules.js Normal file
View File

@ -0,0 +1,48 @@
<!--
/********************************/
/* GESTION DE L'AFFINAGE PAR UE */
/********************************/
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], #CONTAINER > section[name] > table.partlist[name=semestre], #CONTAINER > section[name] > table.partlist[name=formation]");
for( var i = 0 ; i < partList.length ; i++ ){
partList[i].addEventListener('click', function(e){
var tableauParent = e.target.parentNode.parentNode.parentNode;
if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){
/* SI c'est une affinage par FORMATION */
if( tableauParent.getAttribute('name') == 'formation' ){
pageM.vars[1] = 'f:'+e.target.dataset.value;
if( pageM.vars.length > 2 ) // si un deuxième affinage existe, on le supprime lors du choix de la formation
pageM.vars.pop();
}
/* SI c'est une affinage par SEMESTRE */
if( tableauParent.getAttribute('name') == 'semestre' )
pageM.vars[2] = 's:'+e.target.dataset.value;
/* SI c'est un affinage par UE */
if( tableauParent.getAttribute('name') == 'UE' )
pageM.vars[2] = 'u:'+e.target.dataset.value;
// si la formation n'est pas définie, on l'active
if( !/^f:/.test(pageM.vars[1]) )
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop();
reload();
}
}, false);
}
-->

View File

@ -5,22 +5,45 @@ require_once __ROOT__.'/manager/modules.php';
require_once __ROOT__.'/manager/career.php'; require_once __ROOT__.'/manager/career.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/ /*** GESTION DES PARAMETRES OPTIONNELS ***/
$postVars = array(); // on récupère les variables post // on initialise les paramètres optionnels
$controleOpt = null;
$groupeOpt = null;
$etudiantOpt = null;
$ueOpt = null;
$semestreOpt = null;
$formationOpt = null;
foreach($_POST as $k=>$v) // on cherche dans toutes les variables _get si on trouve des paramètres
array_push($postVars, $k); foreach($_POST as $k=>$v){
/* GESTION GROUPE OPTIONNEL */ if( preg_match('/^g:(.+)$/', $k, $m) ) // g:nomGroupe
if( isset($postVars[1]) && is_string($postVars[1]) && strlen($postVars[1]) > 1 ) $groupeOpt = $m[1];
$groupeOpt = $postVars[1];
else
$groupeOpt = null;
if( preg_match('/^c:(.+)$/', $k, $m) ) // c:idControle
$controleOpt = $m[1];
if( preg_match('/^e:(.+)$/', $k, $m) ) // e:idEtudiant
$etudiantOpt = $m[1];
if( preg_match('/^u:(.+)$/', $k, $m) ) // u:nomUe
$ueOpt = $m[1];
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
$semestreOpt = $m[1];
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
}
$controleOpt = ($controleOpt == null || $controleOpt == '*') ? null : $controleOpt;
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
$etudiantOpt = ($etudiantOpt == null || $etudiantOpt == '*') ? null : $etudiantOpt;
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/**************************************** /****************************************
* * * *
@ -39,16 +62,15 @@ require_once __ROOT__.'/manager/career.php';
<!-- mes UEs --> <!-- mes contrôles -->
<?php <?php
/**********************************/ /****************************************/
/*** MES UEs (version étudiant) ***/ /*** MES CONTRÔLES (version étudiant) ***/
/**********************************/ /****************************************/
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
debug();
$request->level_1 = 'getNotesEtudiant'; $request->level_1 = 'getNotesEtudiant';
$request->etudiant = $_SESSION['identifiant']; $request->etudiant = $_SESSION['identifiant'];
@ -59,42 +81,52 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='marksbyue' title='Mes Notes' class='basic'>"; echo "<section name='marksbyue' data-title='Mes Notes' class='basic'>";
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
foreach($answer->UEs as $UE)
if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$UE['nom']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['nom']."'>".$UE['nom'].'</td>';
echo "</tr></tbody></table>";
foreach($answer->UEs as $UE){ // pour chaque UE foreach($answer->UEs as $UE){ // pour chaque UE
echo "<table class='basic col4'>";
echo "<thead>";
echo '<tr>';
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead></table>'; if( $ueOpt == null || $UE['nom'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
foreach($UE['modules'] as $module){ // pour chaque module
echo '<table class=basic><thead>';
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
foreach($module['controles'] as $controle){ // pour chaque contrôle echo '</thead></table>';
echo '<tr>'; foreach($UE['modules'] as $module){ // pour chaque module
echo '<td><span class=link>'.$controle['intitule'].'</span></td>'; echo '<table class=basic><thead class=normal>';
echo '<tr><th colspan=5><strong>'.$UE['nom'].'</strong> - '.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note' foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<td><span class=unstressed>Pas de note</span></td>'; echo '<tr>';
else // si une note, alors on l'affiche echo '<td><span class=link>'.$controle['intitule'].'</span></td>';
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>"; if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>'; echo '<td><span class=unstressed>Pas de note</span></td>';
echo '</tr>'; else // si une note, alors on l'affiche
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
}
echo '</tbody>';
} }
echo '</tbody>'; echo '</table>';
} }
echo '</table>';
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';
}else }else
echo "<section name='marksbyue' title='Mes Notes' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>"; echo "<section name='marksbyue' data-title='Mes Notes' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>";
} }
@ -112,97 +144,385 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
/***********************************/ /******************************************/
/*** LES UE (version enseignant) ***/ /*** LES CONTRÔLES (version enseignant) ***/
/***********************************/ /******************************************/
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève /*
*
* [1] Tous les contrôles
* [2] Un contrôle particulier( avec ou sans groupe particulier )
*
*/
/* [1] Tous les contrôles
==================================================================*/
if( permission('teacher') && $controleOpt == null ){ // si c'est un enseignant et qu'aucun contrôle n'est spécifié
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
debug();
$request->level_1 = 'getControlesEnseignant'; $request->level_1 = 'getControlesEnseignant';
$request->enseignant = $_SESSION['identifiant']; $request->enseignant = $_SESSION['identifiant'];
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
career_switch_level_1($request, $answer); career_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='controlesenseignants' title='Contrôles' class='basic'>"; echo "<section name='controlesenseignants' data-title='Contrôles' class='basic'>";
if( count($answer->UEs) > 0 ){ // si au moins un UE
foreach($answer->UEs as $UE){ // pour chaque UE /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
echo "<table class='basic col4'>"; $ListeUIDFormations = array();
echo "<thead>"; $ListeUIDSemestres = array();
echo '<tr>'; $ListeUIDUE = array();
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead></table>'; // Vérification de la formation si elle est définie
if( count($UE['modules']) > 0 ){ // s'il y a au moins un module $verificationUIDFormations = array();
foreach($answer->semestres as $semestre) // on récupère la liste des UID de FORMATIONS
if( !in_array($semestre['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $semestre['id_formation']);
foreach($UE['modules'] as $module){ // pour chaque module // si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
echo "<table class='basic col4'><thead>"; if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
echo '<tr><th colspan=4>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>'; $formationOpt = $verificationUIDFormations[0];
if( count($module['controles']) > 0 ){ // s'il y a au moins un contrôle pour ce module
foreach($module['controles'] as $controle){ // pour chaque contrôle /**************************/
echo '<tr>'; /* AFFINAGE PAR FORMATION */
echo '<td><span class=link>'.$controle['intitule'].'</span></td>'; /**************************/
echo "<table class='partlist' name='formation'><tbody><tr>";
foreach($answer->semestres as $semestre){ if( !in_array($semestre['id_formation'], $ListeUIDFormations) ){
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
if( count($controle['notes']) == 0 ) // si il y a au moins une note pour ce contrôle if( $semestre['id_formation'] == $formationOpt ) // si c'est la formation séléctionnée
echo '<td><span class=unstressed>Pas noté</span></td>'; echo "<td data-value='".$semestre['id_formation']."' class='active'>".$semestre['formation'].'</td>';
else else // sinon on affiche normalement
echo '<td><span class=unstressed>Moyenne de</span> 10 <span class=unstressed>/</span> 20</td>'; echo "<td data-value='".$semestre['id_formation']."'>".$semestre['formation'].'</td>';
// echo '<td>'.number_format($controle['moyenne'], 2).'</td>';
echo '<td><span class=unstressed>Coefficient</span> '.number_format($controle['coefficient'], 2).'</td>'; // on ajoute la formation à la liste pour ne pas la répéter
echo '</tr>'; array_push($ListeUIDFormations, $semestre['id_formation']);
echo "<tr class='noborder transparentbg'><td></td><td colspan=3><table class='basic col4'><tbody>"; }}
echo "</tr></tbody></table>";
foreach($controle['notes'] as $note){ // on affiche la liste des élèves avec leurs notes
echo "<tr>";
echo "<td><span class='link group' data-grp='".$note['id_groupe']."' data-ctrl='".$controle['id']."'>".$note['groupe']."</span></td>";
if( $note['nb_notes'] == 1 )
echo "<td>".$note['nb_notes']." <span class=unstressed>note</span></td>";
else
echo "<td>".$note['nb_notes']." <span class=unstressed>notes</span></td>";
echo "<td><span class=unstressed>Allant de</span> ".$note['min']." <span class=unstressed>à</span> ".$note['max']."</td>";
echo "<td><span class=unstressed>Moyenne de </span>".number_format($note['moyenne'], 2)." <span class=unstressed>/</span> ".$controle['base']."</td>";
echo "</tr>"; /*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && !in_array($semestre['id'], $ListeUIDSemestres) ){
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $semestre['id']);
}}
echo "</tr></tbody></table>";
/*******************/
/* AFFINAGE PAR UE */
/*******************/
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
// on ajoute l'UE à la liste pour ne pas le répéter
array_push($ListeUIDUE, $UE['id']);
}}
}}
echo "</tr></tbody></table>";
if( count($answer->semestres) > 0 ){ // si au moins un UE
foreach($answer->semestres as $semestre){
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
foreach($semestre['UElist'] as $UE){ // pour chaque UE
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
if( count($UE['modules']) > 0 ){ // s'il y a au moins un module
foreach($UE['modules'] as $module){ // pour chaque module
echo "<table class='basic col5'><thead>";
echo '<tr><th colspan=4><strong>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th></tr></thead><tbody>';
if( count($module['controles']) > 0 ){ // s'il y a au moins un contrôle pour ce module
foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<tr>';
echo "<td><span class='link ctrl' data-ctrl='".$controle['id']."'>".$controle['intitule']."</span></td>";
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo "<td>".$UE['nom']." - ".$UE['libelle']."</td>";
if( $controle['moyenne'] == null ) // si il y a au moins une note pour ce contrôle
echo '<td><span class=unstressed>Pas noté</span></td>';
else
echo '<td><span class=unstressed>Moyenne de</span> '.number_format($controle['moyenne'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
// echo '<td>'.number_format($controle['moyenne'], 2).'</td>';
echo '<td><span class=unstressed>Coefficient</span> '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
// echo "<tr class='noborder transparentbg'><td></td><td colspan=3><table class='basic col4'><tbody>";
// echo '</tbody></table></td></tr>';
}
}else // si aucun contrôle pour ce module
echo "<tr><td colspan=5>Aucun contrôle trouvé</td></tr>";
echo '</tbody>';
} }
echo '</tbody></table></td></tr>';
} }
echo '</table>';
}else // si aucun contrôle pour ce module }
echo "<tr><td colspan=5>Aucun contrôle trouvé</td></tr>";
echo '</tbody>';
} }
} }
echo '</table>';
} }
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';
}else }else
echo "<section name='controlesenseignants' title='Contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>"; echo "<section name='controlesenseignants' data-title='Contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
}
/* [2] Un contrôle particulier( avec ou sans groupe particulier )
==================================================================*/
elseif( permission('teacher') ){ // si enseignant et qu'un contrôle est spécifié
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'getNotesEnseignant';
$request->enseignant = $_SESSION['identifiant'];
$request->controle = $controleOpt;
if( $groupeOpt != null ) $request->groupe = $groupeOpt; // on définit le groupe s'il est spécifié
career_switch_level_1($request, $answer);
if( $answer->request == 'success' ){
echo "<section name='controlesenseignants' data-title='Contrôles' class='basic'>";
// bouton retour
// echo "<table class='basic'><thead><tr><th><span class='link'>Retour</span></th></tr></thead></table>";
// echo "<table class='basic'><thead><tr><th></th></tr></thead></table>";
echo "<table class='basic col4'><thead>";
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$answer->controle['module'].' - '.$answer->controle['intitule'].'</th>';
echo '<tr>';
echo "<th><span class='link ctrl' data-ctrl='".$answer->controle['id']."'>".$answer->controle['intitule']."</span></th>";
echo "<th>".$answer->controle['module']." - ".$answer->controle['modulelib']."</th>";
/* [1] Affichage par groupes
====================================================================================*/
if( $groupeOpt == null ){
if( $answer->controle['moyenne'] == null ) // si il y a au moins une note pour ce contrôle
echo '<th><span class=unstressed>Pas noté</span></th>';
else
echo '<th><span class=unstressed>Moyenne de</span> '.number_format($answer->controle['moyenne'], 2).' <span class=unstressed>/</span> '.$answer->controle['base'].'</th>';
/* [2] Affichage par élèves
====================================================================================*/
}else{
if( count($answer->controle['userlist']) == 0 ) // si il y a au moins une note pour ce contrôle
echo '<th><span class=unstressed>Pas noté</span></th>';
else
echo '<th><span class=unstressed>Moyenne de</span> '.number_format($answer->controle['moyenne'], 2).' <span class=unstressed>/</span> '.$answer->controle['base'].'</th>';
}
echo '<th><span class=unstressed>Coefficient</span> '.number_format($answer->controle['coefficient'], 2).'</th>';
echo '</tr></thead>';
echo "<tbody>";
/* [1] Affichage par groupes
====================================================================================*/
if( $groupeOpt == null ){
foreach($answer->controle['grouplist'] as $groupe){ // on affiche la liste des groupes avec leurs stats
echo "<tr>";
echo "<td><span class='link grp ctrl' data-grp='".$groupe['nom']."' data-ctrl='".$answer->controle['id']."'>".$groupe['nom']."</span></td>";
if( isset($groupe['nb_notes']) ){ // si ce groupe a des notes
if( $groupe['nb_notes'] == 1 ) echo "<td>".$groupe['nb_notes']." <span class=unstressed>note</span></td>";
else echo "<td>".$groupe['nb_notes']." <span class=unstressed>notes</span></td>";
echo "<td><span class=unstressed>Allant de</span> ".number_format($groupe['min'], 2)." <span class=unstressed>à</span> ".number_format($groupe['max'], 2)."</td>";
echo "<td><span class=unstressed>Moyenne de </span>".number_format($groupe['moyenne'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
}else{ // si le groupe n'a aucune note
echo "<td><span class=unstressed>Pas de note</span></td>";
echo "<td></td>";
echo "<td></td>";
}
echo "</tr>";
}
/* [2] Affichage par élèves
====================================================================================*/
}else{
foreach($answer->controle['userlist'] as $user){ // on affiche la liste des élèves avec leurs notes
echo "<tr>";
echo "<td><span class='link etu' data-etu='".$user['identifiant']."' data-ctrl='".$answer->controle['id']."' data-info='".$user['prenom'].' '.$user['nom']."'>".$user['identifiant']."</span></td>";
echo "<td><span class='link grp' data-grp='".$user['groupe']."'>".$user['groupe']."</span></td>";
if( $user['note'] != null ) // si on a une note
echo "<td>".number_format($user['note'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
else // si noté
echo "<td><span class=unstressed>Pas noté</span></td>";
echo "<td>";
if( $user['note'] != null ) // s'il a déjà une note, on la met par défaut
echo "<input class='saisie_note' data-ctrl='".$answer->controle['id']."' type='number' step='.25' min='0' max='".$answer->controle['base']."' placeholder='Note' value='".$user['note']."'>";
else // sinon on laisse le champ vide
echo "<input class='saisie_note' data-ctrl='".$answer->controle['id']."' type='number' step='.25' min='0' max='".$answer->controle['base']."' placeholder='Note'>";
echo "<div class='confirm'>enregistrer</div>";
echo "</td>";
echo "</tr>";
}
echo "<tr>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "<td><div class='confirm all'>tout enregistrer</div></td>";
echo "</tr>";
}
echo '</tbody></table>';
}
} }
/***************************************************/
/*** LES DOSSIERS ETUDIANTS (version enseignant) ***/
/***************************************************/
/*
*
* [1] Toutes les notes d'un enseignant
*
*/
if( permission('teacher') && $etudiantOpt != null ){
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'getNotesEtudiant';
$request->etudiant = $etudiantOpt;
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
career_switch_level_1($request, $answer);
var_dump( $answer );
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentcase' data-title='Dossier étudiant' class='basic'>";
foreach($answer->UEs as $UE){ // pour chaque UE
echo "<table class='basic col4'>";
echo "<thead><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
echo '</thead></table>';
foreach($UE['modules'] as $module){ // pour chaque module
echo '<table class=basic><thead>';
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<tr>';
echo '<td><span class=link>'.$controle['intitule'].'</span></td>';
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
echo '<td><span class=unstressed>Pas de note</span></td>';
else // si une note, alors on l'affiche
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
}
echo '</tbody>';
}
echo '</table>';
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}else
echo "<section name='studentcase' data-title='Dossier étudiant' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>";
}

View File

@ -18,25 +18,28 @@ require_once __ROOT__.'/manager/groups.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/ /*** GESTION DES PARAMETRES OPTIONNELS ***/
$postVars = array(); // on récupère les variables post // on initialise les paramètres optionnels
$semestreOpt = null;
$groupeOpt = null;
$formationOpt = null;
foreach($_POST as $k=>$v) // on cherche dans toutes les variables _get si on trouve des paramètres
array_push($postVars, $k); foreach($_POST as $k=>$v){
if( preg_match('/^g:(.+)$/', $k, $m) ) // g:nomGroupe
$groupeOpt = $m[1];
/* GESTION SEMESTRE OPTIONNEL */ if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
if( isset($postVars[1]) && preg_match('/^S[0-9]{1}$/', $postVars[1]) ) $semestreOpt = $m[1];
$semestreOpt = $postVars[1];
else
$semestreOpt = null;
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
/* GESTION GROUPES OPTIONNEL */ }
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
$groupeOpt = $postVars[2];
else
$groupeOpt = null;
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/************************/ /************************/
/*** TOUS LES GROUPES ***/ /*** TOUS LES GROUPES ***/
@ -58,7 +61,7 @@ if( permission('student') ){ // si connecté && utilisateur
if( $answer->request == 'success' ){ // si pas d'erreur if( $answer->request == 'success' ){ // si pas d'erreur
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
echo "<section name='studentallgroups' title='tous les groupes' class='basic'>"; echo "<section name='studentallgroups' data-title='tous les groupes' class='basic'>";
echo "<table class='basic col5'><thead><tr>"; echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>'; echo '<th>Identifiant</td>';
@ -99,115 +102,12 @@ if( permission('student') ){ // si connecté && utilisateur
echo '</section>'; echo '</section>';
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
}else }else
echo "<section name='studentallgroups' title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>"; echo "<section name='studentallgroups' data-title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} }
/************************/
/*** TOUS LES GROUPES ***/
/************************/
/*
* PROFESSEUR -> affichage des semestres en cours
* ADMINISTRATEUR -> affichage des semestres en cours
*
*
*/
if( false && permission('teacher') ){ // si connecté && prof
$request = new stdClass();
$answer = new stdClass();
$request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<section name='allgroups' title='tous les groupes' class='basic'>";
/* select pour SEMESTRES */
$lastSemestre = null;
echo "<select name='semestre'>";
echo "<option value='*'>Tous les semestres</option>";
foreach($answer->grouplist as $group){
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>';
else // sinon on affiche normalement
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>';
$lastSemestre = $group['semestre'];
}
}
echo "<select>";
/* select pour GROUPES */
$lastGroupe = null;
echo "<select name='groupe'>";
echo "<option value='*'>Tous les groupes</option>";
foreach($answer->grouplist as $group){
if( $lastGroupe == null || $lastGroupe != $group->nom ){
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>';
else
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
$lastGroupe = $group['nom'];
}
}
echo "<select>";
echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>';
echo '<th>Prenom</td>';
echo '<th>Nom</td>';
echo '<th>Semestre</td>';
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
foreach($answer->grouplist as $group){ // pour chaque groupe
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
echo "<table class='basic margin col5'>";
echo '<tbody>';
// pour chaque utilisateur
foreach($group['userlist'] as $user){
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td>'.$group['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$group['nom'].'</span></td>';
echo '</tr>';
}
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>';
}
}
echo '</section>';
////////////////////////////////////////////////////////
}else
echo "<section name='allgroups' title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} ?>
@ -216,11 +116,6 @@ if( false && permission('teacher') ){ // si connecté && prof
<!-- mon groupe -->
<?php
/******************/ /******************/
/*** MON GROUPE ***/ /*** MON GROUPE ***/
/******************/ /******************/
@ -252,7 +147,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentsgroup' title='Mon groupe' class='basic'>"; echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'>";
echo "<table class='basic col1'><thead>"; echo "<table class='basic col1'><thead>";
echo '<tr>'; echo '<tr>';
@ -283,9 +178,9 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
echo '</section>'; echo '</section>';
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
}else }else
echo "<section name='studentsgroup' title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>"; echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
}else }else
echo "<section name='studentsgroup' title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>"; echo "<section name='studentsgroup' data-title='Mon groupe' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
echo '</section>'; echo '</section>';
} ?> } ?>
@ -308,64 +203,121 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
*/ */
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer); $request->level_1 = 'grouplistForTeacher';
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
if( $answer->request == 'success' && count($answer->grouplist) > 0 ){ // si on a bien récupéré les membres du groupe groups_switch_level_1($request, $answer);
////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersgroups' title='Mes groupes' class='basic'>";
/* select pour SEMESTRES */ if( $answer->request == 'success' && $answer->request == 'success' && count($answer->grouplist) > 0 ){ // si on a bien récupéré les membres du groupe
$lastSemestre = null; ////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'>";
echo "<select name='semestre'>";
echo "<option value='*'>Tous les semestres</option>";
foreach($answer->grouplist as $group){
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>'; $ListeUIDFormations = array();
else // sinon on affiche normalement $ListeUIDSemestres = array();
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>'; $ListeUIDGroupes = array();
$lastSemestre = $group['semestre']; // Vérification de la formation si elle est définie
} $verificationUIDFormations = array();
} foreach($answer->grouplist as $groupe) // on récupère la liste des UID de FORMATIONS
echo "<select>"; if( !in_array($groupe['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $groupe['id_formation']);
/* select pour GROUPES */ // si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
$lastGroupe = null; if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
$formationOpt = $verificationUIDFormations[0];
echo "<select name='groupe'>";
echo "<option value='*'>Tous les groupes</option>";
foreach($answer->grouplist as $group){
if( $lastGroupe == null || $lastGroupe != $group->nom ){
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>';
else
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
$lastGroupe = $group['nom'];
}
}
echo "<select>";
echo "<table class='basic col5'><thead><tr>"; /**************************/
echo '<th>Identifiant</td>'; /* AFFINAGE PAR FORMATION */
echo '<th>Prenom</td>'; /**************************/
echo '<th>Nom</td>'; echo "<table class='partlist' name='formation'><tbody><tr>";
echo '<th>Semestre</td>'; foreach($answer->grouplist as $groupe){ if( !in_array($groupe['id_formation'], $ListeUIDFormations) ){
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
foreach($answer->grouplist as $group){ // pour chaque groupe
if( $groupe['id_formation'] == $formationOpt ) // si c'est la formation séléctionnée
echo "<td data-value='".$groupe['id_formation']."' class='active'>".$groupe['formation'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$groupe['id_formation']."'>".$groupe['formation'].'</td>';
// on ajoute la formation à la liste pour ne pas la répéter
array_push($ListeUIDFormations, $groupe['id_formation']);
}}
echo "</tr></tbody></table>";
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && !in_array($groupe['id_semestre'], $ListeUIDSemestres) ){
if( $groupe['id_semestre'] == $semestreOpt ) // si c'est le groupe séléctionné
echo "<td data-value='".$groupe['id_semestre']."' class='active'>".$groupe['semestre'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$groupe['id_semestre']."'>".$groupe['semestre'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id']);
}}
echo "</tr></tbody></table>";
/***********************/
/* AFFINAGE PAR GROUPE */
/***********************/
echo "<select name='groupe'>";
if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
else echo "<option value='*'>Tous les groupes</option>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
if( $groupe['id'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$groupe['id']."' selected>".$groupe['nom'].'</option>';
else // sinon on affiche normalement
echo "<option value='".$groupe['id']."'>".$groupe['nom'].'</option>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id']);
}}
echo "</select>";
echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>';
echo '<th>Prenom</td>';
echo '<th>Nom</td>';
echo '<th>Semestre</td>';
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
foreach($answer->grouplist as $group){ // pour chaque groupe
if( $group['id_formation'] == $formationOpt && ($semestreOpt==null || $semestreOpt==$group['id_semestre']) && ($groupeOpt==null || $groupeOpt==$group['id']) ){
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
@ -392,10 +344,12 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
} }
} }
echo '</section>';
//////////////////////////////////////////////////////////////////////////////// }
}else echo '</section>';
echo "<section name='teachersgroups' title='Mes groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>"; ////////////////////////////////////////////////////////////////////////////////
}else
echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} ?> } ?>
@ -419,63 +373,93 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
$request = new stdClass(); $request = new stdClass();
$answer = new stdClass(); $answer = new stdClass();
/* ce jeu de données sert à récupérer la liste des groupes (même quand on applique un filtrage) */
$requestPourListeGroupes = new stdClass();
$answerPourListeGroupes = new stdClass();
$request->level_1 = 'grouplistForYear'; $request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
$requestPourListeGroupes->level_1 = 'grouplistForYear'; if( $answer->request == 'success' && $answer->request == 'success' ){ // si pas d'erreur
$requestPourListeGroupes->annee = $_SESSION['annee'];
groups_switch_level_1($requestPourListeGroupes, $answerPourListeGroupes); // on fait la requête pour avoir la liste des groupes quel que soit le filtrage
if( $answer->request == 'success' && $answerPourListeGroupes->request == 'success' ){ // si pas d'erreur
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
echo "<section name='movestudents' title='Tous les groupes' class='basic'>"; echo "<section name='movestudents' data-title='Tous les groupes' class='basic'>";
/* select pour SEMESTRES */ /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$lastSemestre = null; $ListeUIDFormations = array();
$ListeUIDSemestres = array();
$ListeUIDGroupes = array();
echo "<select name='semestre'>"; // Vérification de la formation si elle est définie
echo "<option value='*'>Tous les semestres</option>"; $verificationUIDFormations = array();
foreach($answer->grouplist as $group){ foreach($answer->grouplist as $groupe) // on récupère la liste des UID de FORMATIONS
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){ if( !in_array($groupe['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $groupe['id_formation']);
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné // si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>'; if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
else // sinon on affiche normalement $formationOpt = $verificationUIDFormations[0];
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>';
$lastSemestre = $group['semestre'];
}
}
echo "<select>";
/* select pour GROUPES */
$lastGroupe = null;
/**************************/
/* AFFINAGE PAR FORMATION */
/**************************/
echo "<table class='partlist' name='formation'><tbody><tr>";
foreach($answer->grouplist as $groupe){ if( !in_array($groupe['id_formation'], $ListeUIDFormations) ){
// si c'est la formation séléctionnée
if( $groupe['id_formation'] == $formationOpt ) echo "<td data-value='".$groupe['id_formation']."' class='active'>".$groupe['formation'].'</td>';
else echo "<td data-value='".$groupe['id_formation']."'>".$groupe['formation'].'</td>';
// on ajoute la formation à la liste pour ne pas la répéter
array_push($ListeUIDFormations, $groupe['id_formation']);
}}
echo "</tr></tbody></table>";
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && !in_array($groupe['id_semestre'], $ListeUIDSemestres) ){
// si c'est le semestre séléctionné
if( $groupe['id_semestre'] == $semestreOpt ) echo "<td data-value='".$groupe['id_semestre']."' class='active'>".$groupe['semestre'].'</td>';
else echo "<td data-value='".$groupe['id_semestre']."'>".$groupe['semestre'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id_semestre']);
}}
echo "</tr></tbody></table>";
/***********************/
/* AFFINAGE PAR GROUPE */
/***********************/
echo "<select name='groupe'>"; echo "<select name='groupe'>";
echo "<option value='*'>Tous les groupes</option>"; if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
foreach($answer->grouplist as $group){ else echo "<option value='*'>Tous les groupes</option>";
if( $lastGroupe == null || $lastGroupe != $group['nom'] ){
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné /* On récupère la liste des GROUPES en accord avec la FORMATION et le SEMESTRE sélectionnée */
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>'; foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
else
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
$lastGroupe = $group['nom']; // si c'est le groupe sélectionné
} if( $groupe['id'] == $groupeOpt ) echo "<option value='".$groupe['id']."' selected>".$groupe['nom'].'</option>';
} else echo "<option value='".$groupe['id']."'>".$groupe['nom'].'</option>';
echo "<select>";
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDGroupes, $groupe['id']);
}}
echo "</select>";
@ -483,57 +467,63 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
foreach($answer->grouplist as $group){ // pour chaque groupe foreach($answer->grouplist as $group){ // pour chaque groupe
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs if( $group['id_formation'] == $formationOpt && ($semestreOpt==null || $semestreOpt==$group['id_semestre']) && ($groupeOpt==null || $groupeOpt==$group['id']) ){
echo "<table class='basic col4'>"; if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
echo '<thead>'; echo "<table class='basic col4'>";
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe <span>'.$group['nom'].'</span>';
echo '</th>';
echo '</tr>';
echo '</thead>';
echo '<thead>';
echo '<tbody>';
// pour chaque utilisateur
foreach($group['userlist'] as $user){
echo '<tr>'; echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>'; echo '<th colspan=5>';
echo '<td>'.$user['prenom'].'</td>'; echo 'Groupe <span>'.$group['nom'].'</span>';
echo '<td>'.$user['nom'].'</td>'; echo '</th>';
// echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
// changement de groupe
echo '<td>';
echo "<select class='deplacement_groupe'>";
foreach($answerPourListeGroupes->grouplist as $groupemodif) // pour tous les groupes
if( $groupemodif['semestre'] == $group['semestre'] ) // si c'est un groupe du même semestre
if( $groupemodif['nom'] == $group['nom'] ) // s'il s'agit du groupe courant, on met en sélection
echo "<option value='".$groupemodif['nom']."' selected>".$groupemodif['nom']."</option>";
else // s'il s'agit d'un autre groupe, c'est normal
echo "<option value='".$groupemodif['nom']."'>".$groupemodif['nom']."</option>";
echo '</select>';
echo "<div class='valider_deplacement' data-info='cliquer pour valider'></div>";
echo '</td>';
echo '</tr>'; echo '</tr>';
} echo '</thead>';
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>'; echo '<tbody>';
// pour chaque utilisateur
foreach($group['userlist'] as $user){
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
// echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
// changement de groupe
echo '<td>';
echo "<select data-stre='".$group['id_semestre']."' class='deplacement_groupe'>";
foreach($answer->grouplist as $groupemodif) // pour tous les groupes
if( $groupemodif['semestre'] == $group['semestre'] ) // si c'est un groupe du même semestre uniquement
if( $groupemodif['nom'] == $group['nom'] ) // si c'est le groupe en cours, on le pré-sélectionne
echo "<option value='".$groupemodif['nom']."' selected>".$groupemodif['nom']."</option>";
else
echo "<option value='".$groupemodif['nom']."'>".$groupemodif['nom']."</option>";
echo '</select>';
echo "<div class='confirm'>déplacer</div>";
echo '</td>';
echo '</tr>';
}
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>';
}
} }
} }
echo '</section>'; echo '</section>';
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
}else }else
echo "<section name='movestudents' title='Tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>"; echo "<section name='movestudents' data-title='Tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} }
} ?> } ?>
@ -544,6 +534,7 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
/*********************************/ /*********************************/
/*** IMPORTATION FICHIER EXCEL ***/ /*** IMPORTATION FICHIER EXCEL ***/
/*********************************/ /*********************************/
if( permission('admin') ){ if( permission('admin') ){
require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("manager", "xlsx.php")); require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("manager", "xlsx.php"));

View File

@ -16,7 +16,7 @@ require_once __ROOT__.'/manager/groups.php';
?> ?>
<section name='presentation' title='Présentation'> <section name='presentation' data-title='Présentation'>
<p>Bienvenue sur la plateforme de gestion des étudiants de l'IUT Informatique de l'université Paul Sabatier, Toulouse 3<br> <p>Bienvenue sur la plateforme de gestion des étudiants de l'IUT Informatique de l'université Paul Sabatier, Toulouse 3<br>
Seuls les étudiants et enseignants du département ont un accès à cette plateforme. Seuls les étudiants et enseignants du département ont un accès à cette plateforme.
Si vous êtes étudiant ou enseignant et que vous n'avez pas de compte, veuillez contacter le chef de département.</p> Si vous êtes étudiant ou enseignant et que vous n'avez pas de compte, veuillez contacter le chef de département.</p>
@ -37,7 +37,7 @@ require_once __ROOT__.'/manager/groups.php';
<?php /* [2] Notifications <?php /* [2] Notifications
=======================================================*/ =======================================================*/
if( connected() ){ // si on est connecté ?> if( connected() ){ // si on est connecté ?>
<section name='notifications' title='Notifications'> <section name='notifications' data-title='Notifications'>
<p>Notification 3</p> <p>Notification 3</p>
<p>Notification 2</p> <p>Notification 2</p>
<p>Notification 1</p> <p>Notification 1</p>

View File

@ -3,6 +3,33 @@ require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/groups.php'; require_once __ROOT__.'/manager/groups.php';
require_once __ROOT__.'/manager/modules.php'; require_once __ROOT__.'/manager/modules.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/
// on initialise les paramètres optionnels
$ueOpt = null;
$semestreOpt = null;
$formationOpt = null;
// on cherche dans toutes les variables _get si on trouve des paramètres
foreach($_POST as $k=>$v){
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
$semestreOpt = $m[1];
if( preg_match('/^u:(.+)$/', $k, $m) ) // u:nomUE
$ueOpt = $m[1];
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
}
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/**************************************** /****************************************
* * * *
* SECTION "MODULES" * * SECTION "MODULES" *
@ -35,35 +62,73 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentsmodules' title='Mes modules' class='basic'>"; echo "<section name='studentsmodules' data-title='Mes modules' class='basic'>";
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
foreach($answer->UEs as $UE)
if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$UE['nom']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['nom']."'>".$UE['nom'].'</td>';
echo "</tr></tbody></table>";
foreach($answer->UEs as $UE){ foreach($answer->UEs as $UE){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
}
echo '</tbody>'; if( $ueOpt == null || $UE['nom'] == $ueOpt ){
echo '</table>';
echo "<table class='basic'>";
echo "<thead class='normal'>";
echo '<tr>';
echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';
}else }else
echo "<section name='studentsmodules' title='Mes modules' class='basic'><table class=basic><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>"; echo "<section name='studentsmodules' data-title='Mes modules' class='basic'><table class=basic><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";
} ?> } ?>
<!-- mes modules --> <!-- mes modules -->
<?php <?php
@ -82,36 +147,159 @@ if( permission('teacher') ){ // si l'utilisateur est un prof
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersmodules' title='Mes modules' class='basic'>"; echo "<section name='teachersmodules' data-title='Mes modules' class='basic'>";
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$ListeUIDFormations = array();
$ListeUIDSemestres = array();
$ListeUIDUE = array();
// Vérification de la formation si elle est définie
$verificationUIDFormations = array();
foreach($answer->semestres as $semestre) // on récupère la liste des UID de FORMATIONS
if( !in_array($semestre['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $semestre['id_formation']);
// si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
$formationOpt = $verificationUIDFormations[0];
/**************************/
/* AFFINAGE PAR FORMATION */
/**************************/
echo "<table class='partlist' name='formation'><tbody><tr>";
foreach($answer->semestres as $semestre){ if( !in_array($semestre['id_formation'], $ListeUIDFormations) ){
if( $semestre['id_formation'] == $formationOpt ) // si c'est la formation séléctionnée
echo "<td data-value='".$semestre['id_formation']."' class='active'>".$semestre['formation'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id_formation']."'>".$semestre['formation'].'</td>';
// on ajoute la formation à la liste pour ne pas la répéter
array_push($ListeUIDFormations, $semestre['id_formation']);
}}
echo "</tr></tbody></table>";
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && !in_array($semestre['id'], $ListeUIDSemestres) ){
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $semestre['id']);
}}
echo "</tr></tbody></table>";
/*******************/
/* AFFINAGE PAR UE */
/*******************/
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
// on ajoute l'UE à la liste pour ne pas le répéter
array_push($ListeUIDUE, $UE['id']);
}}
}}
echo "</tr></tbody></table>";
foreach($answer->semestres as $semestre){
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
foreach($semestre['UElist'] as $UE){
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche les UEs en fonction de l'affinage
echo "<table class='basic'>";
echo "<thead>";
echo '<tr>';
echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
foreach($answer->UEs as $UE){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
} }
}
}
echo '</tbody>';
echo '</table>';
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';
}else }else
echo "<section name='teachersmodules' title='Mes modules' class='basic'><table class=basic><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>"; echo "<section name='teachersmodules' data-title='Mes modules' class='basic'><table class=basic><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";
} ?> } ?>
<!-- tous les modules --> <!-- tous les modules -->
<?php <?php
@ -127,33 +315,156 @@ if( permission('admin') ){ // si l'utilisateur est un admin
modules_switch_level_1($request, $answer); modules_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='allmodules' title='Tous les modules' class='basic'>"; echo "<section name='allmodules' data-title='Tous les modules' class='basic'>";
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$ListeUIDFormations = array();
$ListeUIDSemestres = array();
$ListeUIDUE = array();
// Vérification de la formation si elle est définie
$verificationUIDFormations = array();
foreach($answer->semestres as $semestre) // on récupère la liste des UID de FORMATIONS
if( !in_array($semestre['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $semestre['id_formation']);
// si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
$formationOpt = $verificationUIDFormations[0];
/**************************/
/* AFFINAGE PAR FORMATION */
/**************************/
echo "<table class='partlist' name='formation'><tbody><tr>";
foreach($answer->semestres as $semestre){ if( !in_array($semestre['id_formation'], $ListeUIDFormations) ){
if( $semestre['id_formation'] == $formationOpt ) // si c'est la formation séléctionnée
echo "<td data-value='".$semestre['id_formation']."' class='active'>".$semestre['formation'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id_formation']."'>".$semestre['formation'].'</td>';
// on ajoute la formation à la liste pour ne pas la répéter
array_push($ListeUIDFormations, $semestre['id_formation']);
}}
echo "</tr></tbody></table>";
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && !in_array($semestre['id'], $ListeUIDSemestres) ){
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $semestre['id']);
}}
echo "<td data-value='+'>+</td>"; // ajouter un semestre
echo "</tr></tbody></table>";
/*******************/
/* AFFINAGE PAR UE */
/*******************/
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
// on ajoute l'UE à la liste pour ne pas le répéter
array_push($ListeUIDUE, $UE['id']);
}}
}}
echo "<td data-value='+'>+</td>"; // ajouter un UE
echo "</tr></tbody></table>";
foreach($answer->semestres as $semestre){
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
foreach($semestre['UElist'] as $UE){
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche les UEs en fonction de l'affinage
echo "<table class='basic'>";
echo "<thead>";
echo '<tr>';
echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
echo '</tr>';
}
require_once __ROOT__.'/manager/database.php';
debug();
$completeModuleList = DataBase::getInstance()->getExhaustiveModuleList();
// saisie d'un nouveau module
echo "<tr class='grayscale'><td>";
echo "<select name='modules'>";
foreach($completeModuleList as $module)
echo "<option value='".$module['id']."'>".$module['nom']." - ".$module['libelle']."</option>";
echo "</select>";
echo "</td><td>";
echo "<input style='min-width:20%;' type='text' placeholder='Nom'>";
echo "<input style='min-width:50%;' type='text' placeholder='Libellé'>";
echo "</td><td>";
echo "<div class='confirm active'>Ajouter le module</div>";
echo "</td></tr>";
echo '</tbody>';
echo '</table>';
foreach($answer->UEs as $UE){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
} }
}
}
echo '</tbody>';
echo '</table>';
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';
}else }else
echo "<section name='allmodules' title='Tous les modules' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>"; echo "<section name='allmodules' data-title='Tous les modules' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";
} ?> }
?>

View File

@ -6,7 +6,7 @@ require_once __ROOT__.'/manager/security.php';
/*** PROFILE ***/ /*** PROFILE ***/
/***************/ /***************/
if( connected() ){ // si l'utilisateur est connecté if( connected() ){ // si l'utilisateur est connecté
echo "<section name='myprofile' title='Profil'>"; echo "<section name='myprofile' data-title='Profil'>";
echo 'profil'; echo 'profil';
echo '</section>'; echo '</section>';

BIN
src/nouveau_modele.xlsx Normal file

Binary file not shown.

View File

@ -37,7 +37,7 @@
fit-margin-right="0" fit-margin-right="0"
fit-margin-bottom="0" fit-margin-bottom="0"
inkscape:zoom="1.3244222" inkscape:zoom="1.3244222"
inkscape:cx="410.94807" inkscape:cx="264.4691"
inkscape:cy="117.90095" inkscape:cy="117.90095"
inkscape:window-x="0" inkscape:window-x="0"
inkscape:window-y="24" inkscape:window-y="24"
@ -55,5 +55,5 @@
transform="translate(-17.600012,-17.6)" /><polygon transform="translate(-17.600012,-17.6)" /><polygon
points="170.4,436.6 264.1,530.3 447.2,347.3 416,316 264.1,467.8 201.6,405.3 " points="170.4,436.6 264.1,530.3 447.2,347.3 416,316 264.1,467.8 201.6,405.3 "
id="polygon5" id="polygon5"
style="fill:#666666" style="fill:#2dcc70;fill-opacity:1"
transform="translate(-17.600012,-17.6)" /></svg> transform="translate(-17.600012,-17.6)" /></svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,11 +1,11 @@
| css | 954 | | css | 1036 |
| js | 822 | | js | 866 |
| manager | 2011 | | manager | 1774 |
| repo | 407 | | repo | 1248 |
| page | 919 | | page | 1235 |
| _JS | 98 | | _JS | 250 |
| API.js | 77 | | API.js | 77 |
| API.php | 104 | | API.php | 104 |
| index.php | 141 | | index.php | 141 |
+-----------+-------+ +-----------+-------+
| TOTAL | 5533 | | TOTAL | 6731 |

BIN
xdoc/nouveau_modele.xlsx Normal file

Binary file not shown.

View File

@ -3,7 +3,7 @@
-- http://www.phpmyadmin.net -- http://www.phpmyadmin.net
-- --
-- Client: localhost -- Client: localhost
-- Généré le: Lun 09 Novembre 2015 à 12:49 -- Généré le: Lun 16 Novembre 2015 à 21:41
-- Version du serveur: 5.5.46-0ubuntu0.14.04.2 -- Version du serveur: 5.5.46-0ubuntu0.14.04.2
-- Version de PHP: 5.5.9-1ubuntu4.14 -- Version de PHP: 5.5.9-1ubuntu4.14
@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS `appartenance` (
KEY `id_etudiant_2` (`id_etudiant`), KEY `id_etudiant_2` (`id_etudiant`),
KEY `id_groupe_2` (`id_groupe`), KEY `id_groupe_2` (`id_groupe`),
KEY `id_semestre_2` (`id_semestre`) KEY `id_semestre_2` (`id_semestre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=103 ; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=104 ;
-- --
-- RELATIONS POUR LA TABLE `appartenance`: -- RELATIONS POUR LA TABLE `appartenance`:
@ -56,15 +56,15 @@ CREATE TABLE IF NOT EXISTS `appartenance` (
-- --
INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_semestre`) VALUES INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_semestre`) VALUES
(1, 'mrd1609a', 6, 2), (1, 'mrd1609a', 2, 2),
(2, 'ihf1991a', 16, 4), (2, 'ihf1991a', 8, 4),
(3, 'mma1990a', 13, 1), (3, 'mma1990a', 13, 1),
(4, 'lme1952a', 15, 3), (4, 'lme1952a', 15, 3),
(5, 'imf1922a', 9, 1), (5, 'imf1922a', 21, 1),
(6, 'gyy1983a', 4, 4), (6, 'gyy1983a', 4, 4),
(7, 'otm1902a', 14, 2), (7, 'otm1902a', 14, 2),
(8, 'tnx1949a', 12, 4), (8, 'tnx1949a', 12, 4),
(9, 'sjl1937a', 12, 4), (9, 'sjl1937a', 4, 4),
(10, 'anj1991a', 16, 4), (10, 'anj1991a', 16, 4),
(11, 'xdh1989a', 20, 4), (11, 'xdh1989a', 20, 4),
(12, 'agl1956a', 3, 3), (12, 'agl1956a', 3, 3),
@ -74,14 +74,14 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
(16, 'pdi1904a', 19, 3), (16, 'pdi1904a', 19, 3),
(17, 'cuk1947a', 10, 2), (17, 'cuk1947a', 10, 2),
(18, 'non1968a', 22, 2), (18, 'non1968a', 22, 2),
(19, 'hmn1970a', 21, 1), (19, 'hmn1970a', 1, 1),
(20, 'hth1975a', 5, 1), (20, 'hth1975a', 5, 1),
(21, 'liw1940a', 6, 2), (21, 'liw1940a', 6, 2),
(22, 'dtg1946a', 18, 2), (22, 'dtg1946a', 18, 2),
(23, 'oxz1985a', 7, 3), (23, 'oxz1985a', 7, 3),
(24, 'ono1984a', 14, 2), (24, 'ono1984a', 14, 2),
(25, 'auy1966a', 3, 3), (25, 'auy1966a', 15, 3),
(26, 'dui1946a', 9, 1), (26, 'dui1946a', 1, 1),
(27, 'cyw1979a', 24, 4), (27, 'cyw1979a', 24, 4),
(28, 'pfv1965a', 3, 3), (28, 'pfv1965a', 3, 3),
(29, 'oqz1937a', 24, 4), (29, 'oqz1937a', 24, 4),
@ -95,21 +95,21 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
(37, 'zgy1948a', 10, 2), (37, 'zgy1948a', 10, 2),
(38, 'vau1957a', 23, 3), (38, 'vau1957a', 23, 3),
(39, 'hsx1927a', 19, 3), (39, 'hsx1927a', 19, 3),
(40, 'eca1977a', 11, 3), (40, 'eca1977a', 3, 3),
(41, 'wpa1966a', 20, 4), (41, 'wpa1966a', 20, 4),
(42, 'qoe1974a', 20, 4), (42, 'qoe1974a', 20, 4),
(43, 'tkz1955a', 11, 3), (43, 'tkz1955a', 11, 3),
(44, 'wnx1995a', 16, 4), (44, 'wnx1995a', 16, 4),
(45, 'sft1994a', 2, 2), (45, 'sft1994a', 2, 2),
(46, 'vgb1979a', 3, 3), (46, 'vgb1979a', 11, 3),
(47, 'wbt1993a', 19, 3), (47, 'wbt1993a', 19, 3),
(48, 'xtb1903a', 11, 3), (48, 'xtb1903a', 11, 3),
(49, 'msj1985a', 13, 1), (49, 'msj1985a', 13, 1),
(50, 'wvn1982a', 9, 1), (50, 'wvn1982a', 9, 1),
(51, 'psg1965a', 8, 4), (51, 'psg1965a', 4, 4),
(52, 'hpa1908a', 5, 1), (52, 'hpa1908a', 5, 1),
(53, 'maq1980a', 19, 3), (53, 'maq1980a', 19, 3),
(54, 'agq1929a', 5, 1), (54, 'agq1929a', 13, 1),
(55, 'gwe1975a', 18, 2), (55, 'gwe1975a', 18, 2),
(56, 'gdb1939a', 7, 3), (56, 'gdb1939a', 7, 3),
(57, 'jrc1974a', 10, 2), (57, 'jrc1974a', 10, 2),
@ -117,8 +117,8 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
(59, 'buz1982a', 24, 4), (59, 'buz1982a', 24, 4),
(60, 'mhr1952a', 7, 3), (60, 'mhr1952a', 7, 3),
(61, 'pos1958a', 11, 3), (61, 'pos1958a', 11, 3),
(62, 'xdi1926a', 7, 3), (62, 'xdi1926a', 3, 3),
(63, 'awl1901a', 1, 1), (63, 'awl1901a', 17, 1),
(64, 'uix1942a', 7, 3), (64, 'uix1942a', 7, 3),
(65, 'ngz1932a', 19, 3), (65, 'ngz1932a', 19, 3),
(66, 'kpf1942a', 15, 3), (66, 'kpf1942a', 15, 3),
@ -138,10 +138,10 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
(80, 'kfx1995a', 18, 2), (80, 'kfx1995a', 18, 2),
(81, 'jgd1966a', 3, 3), (81, 'jgd1966a', 3, 3),
(82, 'rwg1909a', 14, 2), (82, 'rwg1909a', 14, 2),
(83, 'ngw1997a', 1, 1), (83, 'ngw1997a', 17, 1),
(84, 'obg1973a', 2, 2), (84, 'obg1973a', 2, 2),
(85, 'hzg1935a', 12, 4), (85, 'hzg1935a', 12, 4),
(86, 'iyh1918a', 11, 3), (86, 'iyh1918a', 3, 3),
(87, 'tdc1978a', 13, 1), (87, 'tdc1978a', 13, 1),
(88, 'swd1951a', 2, 2), (88, 'swd1951a', 2, 2),
(89, 'vdj1905a', 22, 2), (89, 'vdj1905a', 22, 2),
@ -153,9 +153,10 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
(95, 'bky1924a', 22, 2), (95, 'bky1924a', 22, 2),
(96, 'vul1953a', 5, 1), (96, 'vul1953a', 5, 1),
(97, 'ssr1906a', 9, 1), (97, 'ssr1906a', 9, 1),
(98, 'yjh1944a', 3, 3), (98, 'yjh1944a', 11, 3),
(99, 'ste1994a', 10, 2), (99, 'ste1994a', 10, 2),
(100, 'ypo1964a', 7, 3); (100, 'ypo1964a', 7, 3),
(103, 'mrd1609a', 1, 1);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -166,13 +167,13 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
CREATE TABLE IF NOT EXISTS `controle` ( CREATE TABLE IF NOT EXISTS `controle` (
`id_controle` int(11) NOT NULL AUTO_INCREMENT, `id_controle` int(11) NOT NULL AUTO_INCREMENT,
`id_mcc_module` int(11) NOT NULL, `id_mcc_module` int(11) NOT NULL,
`intitule` varchar(50) NOT NULL, `intitule` varchar(50) CHARACTER SET utf32 COLLATE utf32_unicode_ci NOT NULL,
`base` int(11) NOT NULL, `base` int(11) NOT NULL,
`coefficient` float NOT NULL, `coefficient` float NOT NULL,
`date_publication` date NOT NULL, `date_publication` date NOT NULL,
PRIMARY KEY (`id_controle`), PRIMARY KEY (`id_controle`),
KEY `id_mcc_module` (`id_mcc_module`) KEY `id_mcc_module` (`id_mcc_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
-- --
-- RELATIONS POUR LA TABLE `controle`: -- RELATIONS POUR LA TABLE `controle`:
@ -185,14 +186,17 @@ CREATE TABLE IF NOT EXISTS `controle` (
-- --
INSERT INTO `controle` (`id_controle`, `id_mcc_module`, `intitule`, `base`, `coefficient`, `date_publication`) VALUES INSERT INTO `controle` (`id_controle`, `id_mcc_module`, `intitule`, `base`, `coefficient`, `date_publication`) VALUES
(1, 5, 'Partiel 1', 20, 1, '2015-11-09'), (1, 1, 'Partiel 1', 20, 1, '2015-11-09'),
(2, 5, 'Partiel 2', 20, 1, '2015-11-10'), (2, 1, 'Partiel 2', 20, 1, '2015-11-10'),
(3, 6, 'Partiel 3', 20, 1, '2015-11-11'), (3, 2, 'Partiel 3', 20, 1, '2015-11-11'),
(4, 6, 'Partiel 4', 20, 1, '2015-11-12'), (4, 2, 'Partiel 4', 20, 1, '2015-11-12'),
(5, 7, 'Partiel 5', 20, 1, '2015-11-13'), (5, 3, 'Partiel 5', 20, 1, '2015-11-13'),
(6, 7, 'Partiel 6', 20, 1, '2015-11-14'), (6, 3, 'Partiel 6', 20, 1, '2015-11-14'),
(7, 8, 'Partiel 7', 20, 1, '2015-11-15'), (7, 4, 'Partiel 7', 20, 1, '2015-11-15'),
(8, 8, 'Partiel 8', 20, 1, '2015-11-16'); (8, 4, 'Partiel 8', 20, 1, '2015-11-16'),
(9, 5, 'Partiel 9', 20, 9, '2015-11-17'),
(10, 10, 'Partiel 10', 20, 10, '2015-11-18'),
(11, 9, 'Controle de TP', 20, 20, '2015-11-19');
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -208,7 +212,7 @@ CREATE TABLE IF NOT EXISTS `enseignement` (
PRIMARY KEY (`id_enseignement`), PRIMARY KEY (`id_enseignement`),
KEY `id_enseignant` (`id_enseignant`), KEY `id_enseignant` (`id_enseignant`),
KEY `id_mcc_module` (`id_mcc_module`) KEY `id_mcc_module` (`id_mcc_module`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
-- --
-- RELATIONS POUR LA TABLE `enseignement`: -- RELATIONS POUR LA TABLE `enseignement`:
@ -223,8 +227,32 @@ CREATE TABLE IF NOT EXISTS `enseignement` (
-- --
INSERT INTO `enseignement` (`id_enseignement`, `id_enseignant`, `id_mcc_module`, `correcteur`) VALUES INSERT INTO `enseignement` (`id_enseignement`, `id_enseignant`, `id_mcc_module`, `correcteur`) VALUES
(1, 'lbh1609a', 5, 0), (1, 'lbh1609a', 5, 1),
(2, 'lbh1609a', 10, 0); (2, 'lbh1609a', 10, 1),
(3, 'admin', 9, 1),
(4, 'admin', 1, 1);
-- --------------------------------------------------------
--
-- Structure de la table `formation`
--
CREATE TABLE IF NOT EXISTS `formation` (
`id_formation` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nom` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nb_semestres` int(11) NOT NULL,
PRIMARY KEY (`id_formation`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Contenu de la table `formation`
--
INSERT INTO `formation` (`id_formation`, `code`, `nom`, `nb_semestres`) VALUES
(1, 'ITINN1', 'DUT 1A INFORMATIQUE', 2),
(2, 'ITINN2', 'DUT 2A INFORMATIQUE', 2);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -286,10 +314,10 @@ CREATE TABLE IF NOT EXISTS `mcc_module` (
-- --
-- RELATIONS POUR LA TABLE `mcc_module`: -- RELATIONS POUR LA TABLE `mcc_module`:
-- `id_module`
-- `module` -> `id_module`
-- `id_mcc_ue` -- `id_mcc_ue`
-- `mcc_ue` -> `id_mcc_ue` -- `mcc_ue` -> `id_mcc_ue`
-- `id_module`
-- `module` -> `id_module`
-- --
-- --
@ -332,10 +360,10 @@ CREATE TABLE IF NOT EXISTS `mcc_ue` (
-- --
-- RELATIONS POUR LA TABLE `mcc_ue`: -- RELATIONS POUR LA TABLE `mcc_ue`:
-- `id_ue`
-- `ue` -> `id_ue`
-- `id_semestre` -- `id_semestre`
-- `semestre` -> `id_semestre` -- `semestre` -> `id_semestre`
-- `id_ue`
-- `ue` -> `id_ue`
-- --
-- --
@ -401,14 +429,14 @@ CREATE TABLE IF NOT EXISTS `note` (
PRIMARY KEY (`id_note`), PRIMARY KEY (`id_note`),
KEY `id_appartenance` (`id_appartenance`), KEY `id_appartenance` (`id_appartenance`),
KEY `id_controle` (`id_controle`) KEY `id_controle` (`id_controle`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=57 ;
-- --
-- RELATIONS POUR LA TABLE `note`: -- RELATIONS POUR LA TABLE `note`:
-- `id_controle`
-- `controle` -> `id_controle`
-- `id_appartenance` -- `id_appartenance`
-- `appartenance` -> `id_appartenance` -- `appartenance` -> `id_appartenance`
-- `id_controle`
-- `controle` -> `id_controle`
-- --
-- --
@ -416,14 +444,52 @@ CREATE TABLE IF NOT EXISTS `note` (
-- --
INSERT INTO `note` (`id_note`, `id_appartenance`, `id_controle`, `valeur`) VALUES INSERT INTO `note` (`id_note`, `id_appartenance`, `id_controle`, `valeur`) VALUES
(11, 1, 1, 1), (11, 103, 1, 15.25),
(12, 1, 2, 2), (12, 54, 2, 5),
(13, 1, 3, 3), (13, 103, 3, 3),
(14, 1, 4, 4), (14, 103, 4, 4),
(15, 1, 5, 5), (15, 103, 5, 5),
(16, 1, 6, 6), (16, 103, 6, 6),
(17, 1, 7, 7), (17, 103, 7, 7),
(18, 1, 8, 8); (18, 103, 8, 8),
(19, 103, 9, 9),
(20, 20, 1, 19),
(21, 77, 1, 19.75),
(22, 83, 1, 2.5),
(23, 91, 1, 3.5),
(24, 19, 1, 4.5),
(25, 58, 1, 5.25),
(26, 49, 2, 6),
(27, 87, 2, 7),
(28, 3, 2, 8),
(29, 74, 1, 14.75),
(30, 26, 1, 1.9),
(31, 97, 1, 10),
(32, 32, 1, 10),
(33, 50, 1, 10),
(34, 73, 1, 20),
(35, 52, 1, 20),
(36, 4, 10, 10),
(37, 56, 10, 1),
(38, 94, 10, 3),
(39, 64, 10, 2),
(40, 100, 10, 4),
(41, 23, 10, 5),
(42, 30, 10, 6),
(43, 103, 2, 1),
(44, 83, 2, 2),
(45, 91, 2, 3),
(46, 13, 1, 2),
(47, 67, 1, 0),
(48, 70, 1, 0.5),
(49, 5, 1, 1.75),
(50, 46, 11, 1),
(51, 33, 11, 2),
(52, 61, 11, 3),
(53, 48, 11, 4),
(54, 43, 11, 5),
(55, 98, 11, 6),
(56, 56, 11, 1);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -433,26 +499,34 @@ INSERT INTO `note` (`id_note`, `id_appartenance`, `id_controle`, `valeur`) VALUE
CREATE TABLE IF NOT EXISTS `semestre` ( CREATE TABLE IF NOT EXISTS `semestre` (
`id_semestre` int(11) NOT NULL AUTO_INCREMENT, `id_semestre` int(11) NOT NULL AUTO_INCREMENT,
`id_formation` int(11) NOT NULL,
`nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `nom` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`rang` tinyint(4) NOT NULL, `rang` tinyint(4) NOT NULL,
`annee` year(4) NOT NULL, `annee` year(4) NOT NULL,
PRIMARY KEY (`id_semestre`), PRIMARY KEY (`id_semestre`),
UNIQUE KEY `rang` (`rang`,`annee`) UNIQUE KEY `rang` (`rang`,`annee`),
KEY `id_formation` (`id_formation`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- RELATIONS POUR LA TABLE `semestre`:
-- `id_formation`
-- `formation` -> `id_formation`
--
-- --
-- Contenu de la table `semestre` -- Contenu de la table `semestre`
-- --
INSERT INTO `semestre` (`id_semestre`, `nom`, `rang`, `annee`) VALUES INSERT INTO `semestre` (`id_semestre`, `id_formation`, `nom`, `rang`, `annee`) VALUES
(1, 'S1', 1, 2015), (1, 1, 'S1', 1, 2015),
(2, 'S2', 2, 2015), (2, 1, 'S2', 2, 2015),
(3, 'S3', 3, 2015), (3, 2, 'S3', 3, 2015),
(4, 'S4', 4, 2015), (4, 2, 'S4', 4, 2015),
(5, 'S1', 1, 2016), (5, 1, 'S1', 1, 2016),
(6, 'S2', 2, 2016), (6, 1, 'S2', 2, 2016),
(7, 'S3', 3, 2016), (7, 2, 'S3', 3, 2016),
(8, 'S4', 4, 2016); (8, 2, 'S4', 4, 2016);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -500,6 +574,7 @@ CREATE TABLE IF NOT EXISTS `utilisateur` (
INSERT INTO `utilisateur` (`identifiant`, `prenom`, `nom`, `mail`, `mdp`, `droits`) VALUES INSERT INTO `utilisateur` (`identifiant`, `prenom`, `nom`, `mail`, `mdp`, `droits`) VALUES
('admin', 'monsieur', 'administrateur', 'admin@iut-tlse3.fr', 'lkjdsqlkjdlqksjdlqksjdqlksdjlqksjdqj', 'admin,teacher'), ('admin', 'monsieur', 'administrateur', 'admin@iut-tlse3.fr', 'lkjdsqlkjdlqksjdlqksjdqlksdjlqksjdqj', 'admin,teacher'),
('admin2', 'madame', 'administratrice', 'mme.admin@iut-tlse3.fr', 'lkjdsqlkjdlqksjdlqksjdqlksdjlqksjdqj', 'admin'),
('aft1950a', 'Rachel', 'DAVENPORT', 'rachel.davenport@etu.iut-tlse3.fr', '68724b2da1b628fd37116d3abae9c4233aa9fa56', 'student'), ('aft1950a', 'Rachel', 'DAVENPORT', 'rachel.davenport@etu.iut-tlse3.fr', '68724b2da1b628fd37116d3abae9c4233aa9fa56', 'student'),
('agl1956a', 'Cruz', 'HOWE', 'cruz.howe@etu.iut-tlse3.fr', 'c3f22ac779a9e0e276acdc9933cdcdb2f054e317', 'student'), ('agl1956a', 'Cruz', 'HOWE', 'cruz.howe@etu.iut-tlse3.fr', 'c3f22ac779a9e0e276acdc9933cdcdb2f054e317', 'student'),
('agq1929a', 'Althea', 'POOLE', 'althea.poole@etu.iut-tlse3.fr', 'f20feea8f16e481683d420f8c97c4366d4941f4c', 'student'), ('agq1929a', 'Althea', 'POOLE', 'althea.poole@etu.iut-tlse3.fr', 'f20feea8f16e481683d420f8c97c4366d4941f4c', 'student'),
@ -632,22 +707,28 @@ ALTER TABLE `enseignement`
-- Contraintes pour la table `mcc_module` -- Contraintes pour la table `mcc_module`
-- --
ALTER TABLE `mcc_module` ALTER TABLE `mcc_module`
ADD CONSTRAINT `mcc_module_id_module` FOREIGN KEY (`id_module`) REFERENCES `module` (`id_module`), ADD CONSTRAINT `mcc_module_id_mcc_ue` FOREIGN KEY (`id_mcc_ue`) REFERENCES `mcc_ue` (`id_mcc_ue`),
ADD CONSTRAINT `mcc_module_id_mcc_ue` FOREIGN KEY (`id_mcc_ue`) REFERENCES `mcc_ue` (`id_mcc_ue`); ADD CONSTRAINT `mcc_module_id_module` FOREIGN KEY (`id_module`) REFERENCES `module` (`id_module`);
-- --
-- Contraintes pour la table `mcc_ue` -- Contraintes pour la table `mcc_ue`
-- --
ALTER TABLE `mcc_ue` ALTER TABLE `mcc_ue`
ADD CONSTRAINT `mcc_ue_id_ue` FOREIGN KEY (`id_ue`) REFERENCES `ue` (`id_ue`), ADD CONSTRAINT `mcc_ue_id_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`),
ADD CONSTRAINT `mcc_ue_id_semestre` FOREIGN KEY (`id_semestre`) REFERENCES `semestre` (`id_semestre`); ADD CONSTRAINT `mcc_ue_id_ue` FOREIGN KEY (`id_ue`) REFERENCES `ue` (`id_ue`);
-- --
-- Contraintes pour la table `note` -- Contraintes pour la table `note`
-- --
ALTER TABLE `note` ALTER TABLE `note`
ADD CONSTRAINT `note_id_controle` FOREIGN KEY (`id_controle`) REFERENCES `controle` (`id_controle`), ADD CONSTRAINT `note_id_appartenance` FOREIGN KEY (`id_appartenance`) REFERENCES `appartenance` (`id_appartenance`),
ADD CONSTRAINT `note_id_appartenance` FOREIGN KEY (`id_appartenance`) REFERENCES `appartenance` (`id_appartenance`); ADD CONSTRAINT `note_id_controle` FOREIGN KEY (`id_controle`) REFERENCES `controle` (`id_controle`);
--
-- Contraintes pour la table `semestre`
--
ALTER TABLE `semestre`
ADD CONSTRAINT `semestre_id_formation` FOREIGN KEY (`id_formation`) REFERENCES `formation` (`id_formation`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;