Ajout modèle MCC
This commit is contained in:
Fauvet 2015-11-17 10:50:11 +01:00
commit c0f5dfa5dc
35 changed files with 2790 additions and 1009 deletions

View File

@ -9,16 +9,37 @@
.hidden{ display: none !important; } .hidden{ display: none !important; }
/* .unstressed */
span.unstressed{ color: #aaa; } span.unstressed{ color: #aaa; }
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; }
@ -77,6 +98,7 @@ table.basic.col2 tr td, table.basic.col2 tr th{ width: 50%; }
table.basic.col3 tr td, table.basic.col3 tr th{ width: 33%; } table.basic.col3 tr td, table.basic.col3 tr th{ width: 33%; }
table.basic.col4 tr td, table.basic.col4 tr th{ width: 25%; } table.basic.col4 tr td, table.basic.col4 tr th{ width: 25%; }
table.basic.col5 tr td, table.basic.col5 tr th{ width: 20%; } table.basic.col5 tr td, table.basic.col5 tr th{ width: 20%; }
table.basic.col5 tr td, table.basic.col6 tr th{ width: 16%; }
/* titre aligné à gauche */ /* titre aligné à gauche */
@ -85,21 +107,33 @@ table.basic th{ text-align: left; }
/* <thead> sans background */ /* <thead> sans background */
table.basic thead tr th{ background-color: transparent; } table.basic thead tr th{ background-color: transparent; }
table.basic:nth-child(4n+0) tr td:first-child{ border-left: 10px solid #e63c54; } table.basic:nth-child(4n+0) tr > td:first-child { border-left: 10px solid #e63c54; }
table.basic:nth-child(4n+1) tr td:first-child{ border-left: 10px solid #3c73e6; } table.basic:nth-child(4n+1) tr > td:first-child { border-left: 10px solid #3c73e6; }
table.basic:nth-child(4n+2) tr td:first-child{ border-left: 10px solid #e6983c; } table.basic:nth-child(4n+2) tr > td:first-child { border-left: 10px solid #e6983c; }
table.basic:nth-child(4n+3) tr td:first-child{ border-left: 10px solid #2dcc70; } table.basic:nth-child(4n+3) tr > td:first-child { border-left: 10px solid #2dcc70; }
table.basic table.basic tr > td:first-child { border-left: 10px solid #9e9e9e; }
/* @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: rgba(230, 60, 84, 1); } 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: rgba(60, 115, 230, 1); } 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: rgba(230, 152, 60, 1); } 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: rgba(45, 204, 112, 1); } body.trHoverActivated table.basic:nth-child(4n+3) tr:hover > td { background-color: #2dcc70; }
body.trHoverActivated table.basic table.basic tr:hover > td { background-color: #9e9e9e; }
/* .noborder */
table.basic tr.noborder > td:first-child{ border-left: 1px solid transparent; }
body.trHoverActivated table.basic tr:hover td{ background-color: #fff; }
/* .transparentbg */
table.basic tr.transparentbg > td{ background-color: transparent; }
table.basic tr.transparentbg:hover > td{ background-color: transparent; }
table.basic tr.transparentbg > td{ color: inherit; }
/******************/ /******************/
@ -136,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;
@ -144,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; }
/*********************/ /*********************/
@ -152,26 +186,28 @@ 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;
-moz-appearance:none; -moz-appearance:none;
appearance:none; appearance:none;
} }
/* pour déplacement d'élève */
td select{ margin: -1em; padding: .5em; }
select > option{ select > option{
/* position */ /* position */
padding: 1em 0; padding: 1em 0;
@ -180,11 +216,141 @@ select > option{
background-color: #fff; background-color: #fff;
/* foreground */ /* foreground */
color: #233342; color: #555;
text-indent: 1em; text-indent: 1em;
} }
/*
select > option:nth-child(4n+0){ color: #e63c54; } /* pour déplacement d'élève */
select > option:nth-child(4n+1){ color: #3c73e6; } td select > option{ padding: 0; }
select > option:nth-child(4n+2){ color: #e6983c; }
select > option:nth-child(4n+3){ color: #2dcc70; }*/
.confirm{
/* position */
/*display: inline-block;*/ display: none;
position: absolute;
margin-left: 2em;
margin-top: -.2em;
height: 1.5em;
padding: 0 .7em 0 1.3em;
/* border */
border-radius: 3px;
border: 1px solid #2dcc70;
/* background */
background: transparent center left .2em no-repeat;
background-size: 1em auto;
/* foreground */
color: #2dcc70;
line-height: 1.5em;
/* extra */
cursor: pointer;
}
/* @all */
.confirm.all{ 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{
/* position */
margin: -.5em;
width: 4em;
padding: .5em 1em;
/* border */
border-radius: 3px;
border: 1px solid #bdbdbd;
}
/* @focus */
.saisie_note: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

@ -57,7 +57,7 @@ function Shortcut(keyStore, handler){
// creation de la fonction d'évènement // creation de la fonction d'évènement
shortcutList[eventIndex].push( function(e, k, f, h){ /* k<keyCode> ; f<eventIndex> ; h<handler()> */ shortcutList[eventIndex].push( function(e, k, f, h){ /* k<keyCode> ; f<eventIndex> ; h<handler()> */
console.log(f); // console.log(f);
// on cherche l'avancée // on cherche l'avancée
var step = shortcutStep[f]; var step = shortcutStep[f];
@ -70,7 +70,7 @@ function Shortcut(keyStore, handler){
for( var i = 0 ; i < shortcutStep[f].length ; i++ ) for( var i = 0 ; i < shortcutStep[f].length ; i++ )
shortcutStep[f][i] = 0; shortcutStep[f][i] = 0;
console.log('ok'); // console.log('ok');
e.preventDefault(); e.preventDefault();
h(); // EXECUTION DE : handler(); h(); // EXECUTION DE : handler();

View File

@ -36,7 +36,7 @@ require_once __ROOT__.'/manager/database.php';
/***************************/ /***************************/
/* liste des notes par UEs */ /* liste des notes par UEs */
/***************************/ /***************************/
case 'getNotesByUEs': if( connected() ){ case 'getNotesEtudiant': if( permission('student') ){
$areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent $areSetParam = isset($request->etudiant) && isset($request->semestre) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // si c'est des strings $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->semestre) && is_string($request->annee); // si c'est des strings
@ -46,7 +46,7 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $anneeCheck = $semestreCheck && 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()->getNotesByUEs($request->etudiant, $request->semestre, $request->annee); $UEs = DataBase::getInstance()->getNotesEtudiant($request->etudiant, $request->semestre, $request->annee);
if( is_array($UEs) ){ // si on a bien un tableau if( is_array($UEs) ){ // si on a bien un tableau
$answer->UEs = $UEs; // on renvoie dans answer->note $answer->UEs = $UEs; // on renvoie dans answer->note
@ -62,6 +62,139 @@ require_once __ROOT__.'/manager/database.php';
/***************************/
/* liste des conetroles */
/***************************/
case 'getControlesEnseignant': if( permission('teacher') ){
$areSetParam = isset($request->enseignant) && isset($request->annee); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->enseignant) && is_string($request->annee); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->annee); // des bon types
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom 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
$semestreList = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
if( is_array($semestreList) ){ // si on a bien un tableau
$answer->semestres = $semestreList; // on renvoie dans answer->semestreList
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $semestreList; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/************************************/
/* liste des notes pour un contrôle */
/************************************/
case 'getNotesEnseignant': if( permission('teacher') ){
$areSetParam = isset($request->enseignant) && isset($request->controle); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->enseignant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->controle); // des bon types
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
// paramètre optionnel
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
// définition (ou pas) du paramètre optionnel
if( $optionalGroupe ) $groupe = $request->groupe;
else $groupe = null;
if( $enseignantCheck ){ // si tout les paramètres sont bons
$controle = DataBase::getInstance()->getNotesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $_SESSION['annee'], $request->controle, $groupe);
if( is_array($controle) ){ // si on a bien un tableau
$answer->controle = $controle; // on renvoie dans answer->controle
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $controle; // on retourne l'erreur
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/**********************************************/
/* informations relatives au dossier étudiant */
/**********************************************/
case 'studentcase': if( permission('teacher') ){
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
if( $etudiantCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/****************************************************/
/* saisie d'une note pour un étudiant à un contrôle */
/****************************************************/
case 'saisieNote': if( permission('teacher') ){
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
if( $etudiantCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/* _ ____ ___ _____ _____ _ _ ____ _____ ____
/* / \ | _ \_ _| ___| ___| | | / ___|| ____| _ \
/* / _ \ | | | | || |_ | |_ | | | \___ \| _| | |_) |
/* / ___ \ | |_| | || _| | _| | |_| |___) | |___| _ <
/* /_/ \_\ |____/___|_| |_| \___/|____/|_____|_| \_\
/*
/****************************************************/
/* saisie d'une note pour un groupe à un contrôle */
/****************************************************/
case 'saisieNoteGroupe': if( permission('teacher') ){
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
if( $etudiantCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNoteGroupe($request->etudiant, $request->controle, $request->note);
}else
$answer->request = 'param_error';
}else
$answer->request = 'permission_error';
break;
/***********/ /***********/
/* DEFAULT */ /* DEFAULT */

View File

@ -215,15 +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 ));
@ -231,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']);
@ -243,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 ));
@ -262,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']);
@ -279,26 +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';
} }
@ -308,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';
@ -486,66 +370,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;
} }
@ -602,10 +463,10 @@ class DataBase{
} }
/*********************************/ /****************************************/
/*** retourne les notes par UE ***/ /*** retourne les notes d'un étudiant ***/
/*********************************/ /****************************************/
public function getNotesByUEs($etudiant, $semestre, $annee){ public function getNotesEtudiant($etudiant, $semestre, $annee){
// on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre // on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user'; if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
@ -629,134 +490,103 @@ class DataBase{
} }
/*******************************************/
/*** retourne les notes d'un enseignant ***/
/*******************************************/
public function getControlesEnseignant($enseignant, $semestre_pair, $annee){
// on vérifie que le semestre existe et que l'enseignant y enseigne
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
debug();
// on récupère les semestres de cette année
$semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
/**************************************/ foreach($semestreList as $iter_s=>$a){
/*** retourne les notes d'un module ***/
/**************************************/ $semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
public function getModuleNotes($etudiant, $module, $semestre, $annee){
// on vérifie que le module, le semestre existent et que l'étudiant est inscrit à ce semestre foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID; $semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
if( !($moduleUID=moduleRepo::UID($module)) ) return 'unknown_module'; foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'] as $iter_m=>$c){
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] = controleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['id'], $semestreList[$iter_s]['id']);
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] as $iter_ct=>$c){
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['grouplist'] = noteRepo::forTeacher($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['moyenne'] = noteRepo::moyenneForControle($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
}
}
}
}
return $semestreList;
}
/*** on cherche un module avec ce nom, en accord avec le semestre et l'étudiant ***/
$getModuleUID = DataBase::getPDO()->prepare("SELECT m.id_module as id FROM module as m, appartenance as app, ue, mcc_ue, mcc_module as mcc_m ".
"WHERE app.id_etudiant = :etudiantUID ".
"AND mcc_ue.id_ue = ue.id_ue ".
"AND mcc_ue.id_semestre = app.id_semestre ".
"AND mcc_ue.id_semestre = :semestreUID ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". /********************************************/
/*** retourne les notes pour un contrôle ***/
/********************************************/
public function getNotesEnseignant($enseignant, $semestre_pair, $annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
"AND mcc_m.id_module = m.id_module ". // on récupère les informations du contrôle
if( ! ($controlObj=controleRepo::info($controle)) ) return 'unknown_controle';
"AND m.nom = :module "); // on ajoute la moyenne au contrôle
$getModuleUID->execute(array( $controlObj['moyenne'] = noteRepo::moyenneForControle($controlObj['id']);
':module' => $module,
':etudiantUID' => $etudiantUID,
':semestreUID' => $semestreUID
));
// si on trouve, on le définit, sinon on retourne "unknown_group" /* [1] si le groupe est donné
if( $moduleUID = $getModuleUID->fetch()['id'] ) =======================================*/
$moduleUID = (int) $moduleUID; 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 else
return 'unknown_module'; $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);
$EtudiantInscritAuModule = false; // par défaut on dit que l'étudiant n'est pas inscrit à ce module // var_dump( $controlObj );
foreach(moduleRepo::forStudent($etudiant, $semestreUID) as $module ) // on récupère parmi les modules auquel est inscrit l'utilisateur debug();
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 return $controlObj;
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() );
} }
/******************************************/
/*** saisie note étudiant à un contrôle ***/
/******************************************/
public function saisieNote($etudiant, $controle, $note){
// on vérifie l'existence de l'étudiant et du contrôle, ainsi que la cohérence de la note (pas supérieure à la base)
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
if( !($controleInfo=controleRepo::info($controle)) ) return 'unknown_controle';
if( $note > $controleInfo['base'] ) return 'unknown_note';
// saisie de la note
$rep = noteRepo::creer($etudiantUID, $controleInfo['id'], $controleInfo['id_semestre'], $note);
if( $rep )
return 'success';
else
return 'error';
/**********************************/
/*** 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,23 +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);
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;
@ -266,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

@ -19,7 +19,16 @@ class controleRepo extends DBAccess{
*/ */
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
)); ));
@ -57,4 +66,34 @@ class controleRepo extends DBAccess{
/* RENVOIE LES CONTROLES QU'UN ENSEIGNANT PEUT CORRIGER POUR UN MODULE ET SEMESTRE PARTICULIER
*
* @enseignant<String> l'identifiant de l'enseignant
* @module<int> l'UID du module concerné
* @semestre<int> l'UID du semestre concerné
*
* @return controles<Array> retourne les controles q'un enseignant peut corriger pour un module d'un 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 ".
"FROM enseignement as ens, module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND ens.id_enseignant = :enseignant ".
"AND mcc_m.id_module = :module ".
"AND mcc_ue.id_semestre = :semestre ".
"GROUP BY ctrl.id_controle");
$getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() );
}
} }

View File

@ -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,18 +121,10 @@ 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
==============================*/ ==============================*/
@ -140,8 +132,8 @@ class groupRepo extends DBAccess{
$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
)); ));
@ -156,9 +148,9 @@ class groupRepo extends DBAccess{
"(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,9 +174,10 @@ 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 u.identifiant = app.id_etudiant ".
"AND g.id_groupe = app.id_groupe ". "AND g.id_groupe = app.id_groupe ".
"AND app.id_semestre = app.id_semestre ". // à virer (peut-être) "AND app.id_semestre = app.id_semestre ". // à virer (peut-être)
@ -202,50 +195,100 @@ class groupRepo extends DBAccess{
/* RETOURNE LE GROUPE AUQUEL EST INSCRIT UN ETUDIANT POUR UN SEMESTRE DONNÉ
*
* @etudiant<String> l'UID de l'étudiant en question
* @semestre<int> l'UID du semestre en question
*
* @return trouve<Boolean> FAUX si aucun groupe ne correspond aux critères
* @return groupe<int> retourne l'UID du groupe correspondant
*
*/
public static function forStudent($etudiant, $semestre){
$getGroupe = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_appartenance, g.id_groupe as id, g.nom, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation ".
"FROM groupe as g, appartenance as app, formation as f, semestre as s ".
"WHERE s.id_formation = f.id_formation ".
"AND app.id_groupe = g.id_groupe ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_etudiant = :etudiant ".
"AND s.id_semestre = :semestre ".
"ORDER BY g.nom");
$getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
return $getGroupe->fetch();
}
/* 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 ".
$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, formation as f ".
"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 s.id_formation = f.id_formation ".
"WHERE mcc_ue.id_semestre = s.id_semestre ". "AND mcc_ue.id_semestre = s.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_module = m.id_module ". "AND mcc_m.id_module = m.id_module ".
"AND mcc_m.id_mcc_module = ens.id_mcc_module ". "AND mcc_m.id_mcc_module = ens.id_mcc_module ".
"AND ens.id_enseignant = u.identifiant ". "AND ens.id_enseignant = u.identifiant ".
"AND ens.correcteur = 1 ". // uniquement les groupes pour lesquels il est correcteur
"AND app.id_etudiant = eleve.identifiant ". "AND app.id_etudiant = eleve.identifiant ".
"AND app.id_semestre = s.id_semestre ". "AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ". "AND app.id_groupe = g.id_groupe ".
"AND g.nom LIKE '".$groupeOpt."' ".
"AND s.nom LIKE '".$semestreOpt."' ".
"AND u.identifiant = :enseignant ". "AND u.identifiant = :enseignant ".
"AND s.rang % 2 = :semestre_pair ". "AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
"AND s.annee = :annee ". "AND s.annee = :annee ".
"ORDER BY s.rang, g.nom"); "ORDER BY s.rang, g.nom");
$getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); $getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
}
/* RETOURNE LES GROUPES INSCRITS A UN CONTROLE
*
* @controle<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 ));
return DataBase::delNumeric( $getGroupeList->fetchAll() ); return DataBase::delNumeric( $getGroupeList->fetchAll() );
} }
@ -254,36 +297,28 @@ 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 $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 ". $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 g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ". "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.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ". "AND s.annee = :annee ".
"ORDER BY g.nom"); "ORDER BY g.nom");
$getGroupeList->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':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

@ -75,18 +75,46 @@ class moduleRepo extends DBAccess{
/* RENVOIE LA LISTE DES MODULES QU'ENSEIGNE UN ENSEIGNANT POUR UN UE D'UNE ANNEE
*
* @enseignant<String> Identifiant de l'enseignant
* @UEUID<int> L'UID de l'UE en question
* @semestre<int> L'UID du semestre en question
*
* @return Modules<Array> retourne un tableau contenant les modules de l'enseignant pour ce semestre et cet UE
*
*/
public static function forTeacher($enseignant, $UEUID, $semestre){
/* RENVOIE LA LISTE DES MODULES D'UN UE D'UNE ANNEE COURANTE (SEMESTRES COURANTS) // on récupère les modules
$getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
"FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND ens.id_enseignant = :enseignant ".
"AND mcc_ue.id_ue = :UEUID ".
"AND mcc_ue.id_semestre = :semestre ".
"ORDER BY m.nom, m.libelle");
$getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForTeacher->fetchAll() );
}
/* 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 ".
@ -95,10 +123,9 @@ class moduleRepo extends DBAccess{
"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_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); $getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForYear->fetchAll() ); return DataBase::delNumeric( $getModulesForYear->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'];
} }
@ -112,4 +87,181 @@ class noteRepo extends DBAccess{
/* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
*
* [1] Par groupe si aucun groupe spécifié (statistiques: moyenne, min, max, nb notes, ...)
* [2] Liste des élèves d'un groupe si aucun groupe spécifié
*
*
* @controle<int> l'UID du controle concerné
*
* @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, $groupe=null){
/* [1] Statistiques des groupes
============================================================*/
if( !is_int($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 ".
"GROUP BY g.id_groupe ".
"ORDER BY g.nom ASC");
$getNoteList->execute(array( ':controle' => $controle ));
/* [2] Notes des étudiants d'un groupe
============================================================*/
}else{
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, g.nom as groupe, app.id_etudiant as etudiant, n.id_appartenance, n.id_controle, n.valeur ".
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
"WHERE n.id_appartenance = app.id_appartenance ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND s.id_semestre = mcc_ue.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND n.id_controle = ctrl.id_controle ".
"AND ctrl.id_controle = :controle ".
"AND app.id_groupe = :groupe ".
"ORDER BY g.nom ASC");
$getNoteList->execute(array( ':controle' => $controle, ':groupe' => $groupe ));
}
return DataBase::delNumeric( $getNoteList->fetchAll() );
}
/* RENVOIE LES STATISTIQUES ASSOCIÉES À UN CONTRÔLE POUR UN GROUPE SPÉCIFIQUE
*
* @controle<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,9 +89,10 @@ 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 ".
@ -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 ". // semestre <-> mcc_ue
"AND s.id_formation = f.id_formation ". // semestre <-> formation
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". // mcc_ue <-> mcc_module
"AND mcc_m.id_mcc_module = ens.id_mcc_module ". // mcc_module <-> enseignement
"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,7 +57,7 @@ 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 ".
@ -73,58 +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.annee, s.rang, 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 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, 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");
$getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee )); $getUEList->execute(array( ':semestre' => $semestre ));
return DataBase::delNumeric( $getUEsForYear->fetchAll() ); return DataBase::delNumeric( $getUEList->fetchAll() );
} }

View File

@ -121,7 +121,7 @@ class userRepo extends DBAccess{
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule $prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
$nom = strtoupper($nom); // nom en majuscules $nom = strtoupper($nom); // nom en majuscules
$mail = strtolower($mail); // email en minuscules $mail = strtolower($mail); // email en minuscules
$mdp = sha1($mdp); // on hash le password (SHA1) $mdp = secure_sha1($mdp); // on hash le password (SHA1)
$droits = implode(',', $droits); // on met le droit sous forme de chaine $droits = implode(',', $droits); // on met le droit sous forme de chaine
/* [2] On vérifie que l'utilisateur n'est pas déjà créé /* [2] On vérifie que l'utilisateur n'est pas déjà créé

View File

@ -54,13 +54,21 @@
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){
/*********** AURELIEN TROU DU CUL TU TE DEMERDE ***********/ $salt = '!!-vi_v93DFeswgf9de2b4d34ev!XX!x%';
function checkParams($arrayVar, $arrayType, $arrayRegex){ $pepper = ':!;,°1832%0%QMSLµQ°++Q==!';
return sha1( sha1($salt.$text).$pepper );
} }

View File

@ -160,7 +160,7 @@ require_once __ROOT__.'/manager/database.php';
if( isset($userList->{$username}) ){ if( isset($userList->{$username}) ){
// [3] On check le mot de passe // [3] On check le mot de passe
if( $userList->{$username}->password == $password ){ if( $userList->{$username}->password == $password || $userList->{$username}->password == secure_sha1($password) ){
// [4] On récupère les informations dans la base de données // [4] On récupère les informations dans la base de données
if( $utilInfo = Database::getInstance()->utilisateurInfo($username) ){ // si l'utilisateur est dans le BDD if( $utilInfo = Database::getInstance()->utilisateurInfo($username) ){ // si l'utilisateur est dans le BDD

236
page/_JS/career.js Normal file
View File

@ -0,0 +1,236 @@
<!--
/********************************/
/* 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 */
/***********************************************/
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
controlesenseignantSection = document.querySelector('#CONTAINER section[name=controlesenseignants]');
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' );
}
}, false);
// 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);
}
}
-->

View File

@ -1,105 +1,138 @@
<!-- <!--
var subSections = document.querySelectorAll('hgroup');
// si aucune sous-partie n'est active, on active la première
if( document.querySelector('#CONTAINER hgroup.active') == null )
selectSubSection( document.querySelector('#CONTAINER hgroup') );
/* Gestion du déroulement des tableaux des groupes */
function afficherCacherGroupes(e){
e.preventDefault();
// s'il s'agit de la case "Voir plus"
if( e.target.className == 'more' ){
var thead = e.target.parentNode.parentNode.parentNode.children[0];
thead.className = (thead.className=='active') ? '' : 'active';
}
}
if( !afficherCacherGroupesDefined )
DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false);
var afficherCacherGroupesDefined = true;
/* on définit le Drag'n'Drop */
var dnd = new DragnDrop();
/* GESTION DU DRAG N DROP */ /* GESTION DU DEPLACEMENT D'ELEVES */
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin 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)'); /* DEPLACEMENT A L'AIDE DES <SELECT> */
for( var i = 0 ; i < members.length ; i++ ) var deplacementElements = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td select');
dnd.setDraggable(members[i]); var deplacementObj = [];
var groups = document.querySelectorAll('#CONTAINER section[name=movestudents] table thead th:first-child'); // on référencie tous les select dans un objet
for( var i = 0 ; i < groups.length ; i++ ) for( var i = 0 ; i < deplacementElements.length ; i++ ){
dnd.setDroppable(groups[i]);
dnd.init(function(input, output){ // on demande un déplacement deplacementElements[i].dataset.i = i; // le rang du <select> dans la liste
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 deplacementObj[i] = {
level_0: 'groups', select: deplacementElements[i], // le <select> en question
level_1: 'move', initval: deplacementElements[i].value, // la valeur initiale du <select>
etudiant: id_etudiant, button: deplacementElements[i].parentNode.children[1], // le bouton de validation pour ce <select>
groupe: nom_groupe 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>
}; };
// l'ordre n'est pas alphabétique mais va à la fin // on créé l'évènement qui affiche le validateur dès le changement de valeur
deplacementObj[i].select.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') && deplacementObj[e.target.dataset.i].select == e.target ){
var obj = deplacementObj[e.target.dataset.i];
API.send(request, function(response){ // on gère la réponse de API if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton)
if( response.request == 'success' ){ addClass( obj.select, 'active' );
input.parentNode.removeChild( input ); // on supprime le membre de l'ancien groupe else
remClass( obj.select, 'active' );
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]') );
}
});
});
}
/***************************************************/
/*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/
/***************************************************/
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select");
// GESTION DE LA PRISE EN COMPTE DES SELECT //
DOM.CONTAINER.addEventListener('change', function(e){
if( e.target.tagName == 'SELECT' && ['semestre', 'groupe'].indexOf(e.target.getAttribute('name')) > -1 ){
if( e.target.getAttribute('name') == 'semestre' ){ // SI modifie le semestre
pageM.vars[1] = e.target.value; // on selectionne semestre
pageM.vars[2] = '*'; // on désactive le groupe
}else{ // SINON
pageM.vars[1] = '*'; // on désactive le semestre
pageM.vars[2] = e.target.value; // on active le groupe
}
selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
} }
}, false); }, false);
// on créé l'évènement de confirmation du déplacement
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
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 request = { // on définit la requête pour API
level_0: 'groups',
level_1: 'move',
etudiant: obj.userid,
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
if( response.request == 'success' ) reload();
});
}
}, false);
}
}
/**********************************************************************/
/*** GESTION DES SELECT/TABLES D'AFFINAGES POUR AFFINER LES GROUPES ***/
/**********************************************************************/
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 L'AFFINAGE PAR GROUPE //
for( var i = 0 ; i < selectList.length ; i++ ){
selectList[i].addEventListener('change', function(e){
if( e.target.tagName == 'SELECT' && e.target.getAttribute('name') == 'groupe' ){
pageM.vars[2] = 'g:'+e.target.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);
}
--> -->

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

@ -4,6 +4,47 @@ require_once __ROOT__.'/manager/groups.php';
require_once __ROOT__.'/manager/modules.php'; require_once __ROOT__.'/manager/modules.php';
require_once __ROOT__.'/manager/career.php'; require_once __ROOT__.'/manager/career.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/
// on initialise les paramètres optionnels
$controleOpt = null;
$groupeOpt = null;
$etudiantOpt = null;
$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('/^g:(.+)$/', $k, $m) ) // g:nomGroupe
$groupeOpt = $m[1];
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;
/**************************************** /****************************************
* * * *
* SECTION "PARCOURS" * * SECTION "PARCOURS" *
@ -21,18 +62,17 @@ 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 = 'getNotesByUEs'; $request->level_1 = 'getNotesEtudiant';
$request->etudiant = $_SESSION['identifiant']; $request->etudiant = $_SESSION['identifiant'];
$request->semestre = $_SESSION['semestre']; $request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
@ -41,35 +81,467 @@ 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 class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>'; if( $ueOpt == null || $UE['nom'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
echo '<tbody>';
foreach($UE['modules'] as $module) // pour chaque module echo '</thead></table>';
foreach($module['controles'] as $controle) // pour chaque contrôle foreach($UE['modules'] as $module){ // pour chaque module
foreach($controle['notes'] as $note){ // pour chaque note echo '<table class=basic><thead class=normal>';
echo '<tr><th colspan=5><strong>'.$UE['nom'].'</strong> - '.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<tr>'; echo '<tr>';
echo '<td><span class=link>'.$controle['intitule'].'</span></td>'; echo '<td><span class=link>'.$controle['intitule'].'</span></td>';
echo '<td>'.number_format($note['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</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>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>'; echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>'; echo '</tr>';
} }
echo '</tbody>';
}
echo '</table>';
}
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}else
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>";
}
/******************************************/
/*** LES CONTRÔLES (version enseignant) ***/
/******************************************/
/*
*
* [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->level_1 = 'getControlesEnseignant';
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
career_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
////////////////////////////////////////////////////////////////////////////////
echo "<section name='controlesenseignants' data-title='Contrôles' 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>";
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>';
}
}
echo '</table>';
}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}else
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 '</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='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,32 +18,34 @@ 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
foreach($_POST as $k=>$v)
array_push($postVars, $k);
/* GESTION SEMESTRE OPTIONNEL */
if( isset($postVars[1]) && preg_match('/^S[0-9]{1}$/', $postVars[1]) )
$semestreOpt = $postVars[1];
else
$semestreOpt = null; $semestreOpt = null;
/* GESTION GROUPES OPTIONNEL */
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
$groupeOpt = $postVars[2];
else
$groupeOpt = null; $groupeOpt = null;
$formationOpt = null;
// on cherche dans toutes les variables _get si on trouve des paramètres
foreach($_POST as $k=>$v){
if( preg_match('/^g:(.+)$/', $k, $m) ) // g:nomGroupe
$groupeOpt = $m[1];
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
$semestreOpt = $m[1];
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
}
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/************************/ /************************/
/*** TOUS LES GROUPES ***/ /*** TOUS LES GROUPES ***/
/************************/ /************************/
/* /*
* UTILISATEUR -> affichage du même semestre * UTILISATEUR -> affichage du même semestre
*
* *
*/ */
if( permission('student') ){ // si connecté && utilisateur if( permission('student') ){ // si connecté && utilisateur
@ -59,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>';
@ -100,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( 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>";
} ?>
@ -217,11 +116,6 @@ if( permission('teacher') ){ // si connecté && prof
<!-- mon groupe -->
<?php
/******************/ /******************/
/*** MON GROUPE ***/ /*** MON GROUPE ***/
/******************/ /******************/
@ -253,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>';
@ -284,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>';
} ?> } ?>
@ -310,53 +204,108 @@ 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->level_1 = 'grouplistForTeacher';
$request->enseignant = $_SESSION['identifiant']; $request->enseignant = $_SESSION['identifiant'];
$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); groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' && $answer->request == 'success' && count($answer->grouplist) > 0 ){ // si on a bien récupéré les membres du groupe
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersgroups' title='Mes groupes' class='basic'>"; echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'>";
/* select pour SEMESTRES */
$lastSemestre = null;
echo "<select name='semestre'>"; /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
echo "<option value='*'>Tous les semestres</option>"; $ListeUIDFormations = array();
foreach($answer->grouplist as $group){ $ListeUIDSemestres = array();
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){ $ListeUIDGroupes = array();
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné // Vérification de la formation si elle est définie
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>'; $verificationUIDFormations = array();
foreach($answer->grouplist as $groupe) // on récupère la liste des UID de FORMATIONS
if( !in_array($groupe['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $groupe['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->grouplist as $groupe){ if( !in_array($groupe['id_formation'], $ListeUIDFormations) ){
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 else // sinon on affiche normalement
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>'; echo "<td data-value='".$groupe['id_formation']."'>".$groupe['formation'].'</td>';
$lastSemestre = $group['semestre']; // on ajoute la formation à la liste pour ne pas la répéter
} array_push($ListeUIDFormations, $groupe['id_formation']);
}
echo "<select>";
/* select pour GROUPES */ }}
$lastGroupe = null; 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'>"; 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 ){
/* 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>";
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 "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>'; echo '<th>Identifiant</td>';
@ -368,6 +317,8 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
foreach($answer->grouplist as $group){ // pour chaque groupe 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
echo "<table class='basic margin col5'>"; echo "<table class='basic margin col5'>";
@ -393,10 +344,12 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
} }
} }
}
echo '</section>'; echo '</section>';
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
}else }else
echo "<section name='teachersgroups' title='Mes groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>"; echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} ?> } ?>
@ -422,50 +375,91 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
$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); groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
if( $answer->request == 'success' ){ // si pas d'erreur
if( $answer->request == 'success' && $answer->request == 'success' ){ // si pas d'erreur
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
echo "<section name='movestudents' title='Déplacements' 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>";
@ -473,6 +467,8 @@ 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( $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
echo "<table class='basic col4'>"; echo "<table class='basic col4'>";
@ -481,7 +477,6 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
echo '<tr>'; echo '<tr>';
echo '<th colspan=5>'; echo '<th colspan=5>';
echo 'Groupe <span>'.$group['nom'].'</span>'; echo 'Groupe <span>'.$group['nom'].'</span>';
echo "<span style='font-weight:normal;padding-left:1em; font-size: .8em;'>(glisser-déposer étudiant pour le déplacer)</span>";
echo '</th>'; echo '</th>';
echo '</tr>'; echo '</tr>';
echo '</thead>'; echo '</thead>';
@ -497,7 +492,21 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
echo "<td><span class=link>".$user['identifiant'].'</span></td>'; echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>'; echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>'; echo '<td>'.$user['nom'].'</td>';
echo '<td><strong><span>'.$group['nom'].'</span></strong></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>';
} }
@ -508,11 +517,13 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
echo '</table>'; echo '</table>';
} }
}
} }
echo '</section>'; echo '</section>';
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
}else }else
echo "<section name='movestudents' title='Déplacements' 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>";
} }
} ?> } ?>
@ -524,7 +535,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') ){
// echo "<section name='importexcel' title='Importation/Export' class='basic'>"; // echo "<section name='importexcel' data-title='Importation/Export' class='basic'>";
// //inclusion des classes de PHPExcel // //inclusion des classes de PHPExcel
// include __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel.php")); // include __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel.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,13 +62,27 @@ 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){
if( $ueOpt == null || $UE['nom'] == $ueOpt ){
echo "<table class='basic'>"; echo "<table class='basic'>";
echo "<thead class='active'>"; echo "<thead class='normal'>";
echo '<tr>'; echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>'; echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>'; echo '</tr>';
echo '</thead>'; echo '</thead>';
echo '<tbody>'; echo '<tbody>';
@ -54,16 +95,40 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
echo '</tbody>'; echo '</tbody>';
echo '</table>'; 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,13 +147,106 @@ 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
foreach($answer->UEs as $UE){
echo "<table class='basic'>"; echo "<table class='basic'>";
echo "<thead class='active'>"; echo "<thead>";
echo '<tr>'; echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>'; echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
echo '</tr>'; echo '</tr>';
echo '</thead>'; echo '</thead>';
echo '<tbody>'; echo '<tbody>';
@ -96,22 +254,52 @@ if( permission('teacher') ){ // si l'utilisateur est un prof
echo '<tr>'; echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>'; echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>'; echo '<td>'.$MODULE['libelle'].'</td>';
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
echo '</tr>'; echo '</tr>';
} }
echo '</tbody>'; echo '</tbody>';
echo '</table>'; 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,15 +315,113 @@ 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
foreach($answer->UEs as $UE){
echo "<table class='basic'>"; echo "<table class='basic'>";
echo "<thead class='active'>"; echo "<thead>";
echo '<tr>'; echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>'; echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
echo '</tr>'; echo '</tr>';
echo '</thead>'; echo '</thead>';
echo '<tbody>'; echo '<tbody>';
@ -143,17 +429,61 @@ if( permission('admin') ){ // si l'utilisateur est un admin
echo '<tr>'; echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>'; echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>'; echo '<td>'.$MODULE['libelle'].'</td>';
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
echo '</tr>'; echo '</tr>';
} }
echo '</tbody>'; echo '</tbody>';
echo '</table>'; 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>";
} ?> }
/***************************************/
/*** GESTION DES MCC (version admin) ***/
/***************************************/
if( permission('admin') ){ // si l'utilisateur est un admin
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'getMCC';
$request->annee = $_SESSION['annee'];
modules_switch_level_1($request, $answer);
// var_dump( $answer );
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<section name='managemcc' data-title='MCC' class='basic'>";
echo "<input type='text'>";
}else
echo "<section name='managemcc' data-title='MCC' 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>';

4
rdv1.client Normal file → Executable file
View File

@ -4,13 +4,13 @@ Utilisateur
[*] PARCOURS [*] PARCOURS
UE UE
MODULE MODULE
CONTROLE (même si pas de note) [fait] CONTROLE (même si pas de note)
NOTES NOTES
Enseignant Enseignant
[*] GROUPES [*] GROUPES
ceux à qui j'ai des notes à donner [fait] ceux à qui j'ai des notes à donner
[*] NOTES [*] NOTES
afficher celles pour les modules ou il est correcteur afficher celles pour les modules ou il est correcteur

View File

@ -1 +0,0 @@
<?xml version="1.0" ?><svg height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg"><path d="M33.17 17.17l-9.17 9.17-9.17-9.17-2.83 2.83 12 12 12-12z"/><path d="M0 0h48v48h-48z" fill="none"/></svg>

Before

Width:  |  Height:  |  Size: 218 B

View File

@ -1,30 +1,19 @@
{ {
"eleve1": {
"agq1929a": {
"password" : "password" "password" : "password"
}, },
"mrd1609a": { "mrd1609a": {
"password" : "password" "password" : "0c443b41ddfc6327efa3cfff9337c6dcdb6bf0dc"
},
"eleve2": {
"password" : "password"
}, },
"lbh1609a": { "lbh1609a": {
"password" : "password" "password" : "password"
}, },
"prof2": {
"password" : "password"
},
"admin": { "admin": {
"password" : "password" "password" : "0c443b41ddfc6327efa3cfff9337c6dcdb6bf0dc"
},
"admin2": {
"password" : "password"
} }
} }

59
src/validate.svg Executable file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 45.6 168.9 504 504"
id="Layer_1"
version="1.1"
viewBox="45.6 168.9 468.79999 468.79999"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="100%"
height="100%"
sodipodi:docname="validate.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview7"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.3244222"
inkscape:cx="264.4691"
inkscape:cy="117.90095"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><circle
cx="297.60001"
cy="420.89999"
r="234.39999"
id="circle3"
sodipodi:cx="297.60001"
sodipodi:cy="420.89999"
sodipodi:rx="234.39999"
sodipodi:ry="234.39999"
style="fill:none"
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 "
id="polygon5"
style="fill:#2dcc70;fill-opacity:1"
transform="translate(-17.600012,-17.6)" /></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

59
src/validate@hover.svg Executable file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 45.6 168.9 504 504"
id="Layer_1"
version="1.1"
viewBox="45.6 168.9 468.79999 468.79999"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
width="100%"
height="100%"
sodipodi:docname="validate@hover.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview7"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.3244222"
inkscape:cx="410.94807"
inkscape:cy="117.90095"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><circle
cx="297.60001"
cy="420.89999"
r="234.39999"
id="circle3"
sodipodi:cx="297.60001"
sodipodi:cy="420.89999"
sodipodi:rx="234.39999"
sodipodi:ry="234.39999"
style="fill:none"
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 "
id="polygon5"
style="fill:#ffffff"
transform="translate(-17.600012,-17.6)" /></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -47,32 +47,32 @@ require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/database.php'; require_once __ROOT__.'/manager/database.php';
debug(); debug();
// $_SESSION['semestre_pair'] = !$_SESSION['semestre_pair']; $_SESSION['semestre_pair'] = !$_SESSION['semestre_pair'];
// var_dump( $_SESSION['semestre_pair'] ); var_dump( $_SESSION['semestre_pair'] );
// on affiche les modules d'un étudiant // on affiche les modules d'un étudiant
var_dump( DataBase::getInstance()->getModulesByUEByEtudiant( // var_dump( DataBase::getInstance()->getModulesByUEByEtudiant(
$_SESSION['identifiant'], // $_SESSION['identifiant'],
$_SESSION['semestre'], // $_SESSION['semestre'],
$_SESSION['annee'] // $_SESSION['annee']
) ); // ) );
// on affiche les controle d'un étudiant pour un module, semestre particulier // // on affiche les controle d'un étudiant pour un module, semestre particulier
$UEList = ueRepo::forStudent($_SESSION['identifiant'], $_SESSION['semestre']); // $UEList = ueRepo::forStudent($_SESSION['identifiant'], $_SESSION['semestre']);
foreach($UEList as $iter_ue=>$a){ // foreach($UEList as $iter_ue=>$a){
$UEList[$iter_ue]['modules'] = moduleRepo::forStudent($UEList[$iter_ue]['id'], $UEList[$iter_ue]['id_semestre']); // $UEList[$iter_ue]['modules'] = moduleRepo::forStudent($UEList[$iter_ue]['id'], $UEList[$iter_ue]['id_semestre']);
foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){ // foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){
$UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($UEList[$iter_ue]['modules'][$iter_mod]['id'], $UEList[$iter_ue]['id_semestre']); // $UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($UEList[$iter_ue]['modules'][$iter_mod]['id'], $UEList[$iter_ue]['id_semestre']);
foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c) // foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c)
$UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($_SESSION['identifiant'], $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']); // $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($_SESSION['identifiant'], $UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']);
} // }
} // }
var_dump( $UEList[0]['modules'][0]['controles'][0] ); // var_dump( $UEList[0]['modules'][0]['controles'][0] );

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 |

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 */;