Récupération de la branche dev
This commit is contained in:
commit
1d82880956
187
css/global.css
187
css/global.css
|
@ -11,14 +11,35 @@
|
|||
|
||||
/* .unstressed */
|
||||
span.unstressed{ color: #aaa; }
|
||||
tr:hover > td > span.unstressed{ color: #ddd; }
|
||||
body.trHoverActivated tr:hover > td > span.unstressed{ color: #ddd; }
|
||||
|
||||
span.stressed{ font-weight: bold; }
|
||||
|
||||
thead.normal > tr > th{ font-weight: normal; }
|
||||
|
||||
/*************************/
|
||||
/*** TITLE PERSONALISÉ ***/
|
||||
/*************************/
|
||||
#CONTAINER [data-info]:after{
|
||||
content: attr(data-info);
|
||||
/* position */
|
||||
/*display: block;*/ display: none;
|
||||
position: absolute;
|
||||
margin-left: 4em;
|
||||
padding: .3em;
|
||||
|
||||
/* border */
|
||||
border-radius: 3px;
|
||||
|
||||
/* background */
|
||||
background-color: #233342;
|
||||
|
||||
/* foreground */
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* INFO SURVOL */
|
||||
#CONTAINER [data-info]:hover:after{ display: block; }
|
||||
|
||||
|
||||
|
||||
|
@ -96,23 +117,22 @@ table.basic table.basic tr > td:first-child { border-left: 10px solid #9e9e9
|
|||
|
||||
|
||||
/* @hover */
|
||||
table.basic tr:hover > td{ color: #fff; }
|
||||
body.trHoverActivated table.basic tr:hover > td{ color: #fff; }
|
||||
|
||||
table.basic:nth-child(4n+0) tr:hover > td { background-color: #e63c54; }
|
||||
table.basic:nth-child(4n+1) tr:hover > td { background-color: #3c73e6; }
|
||||
table.basic:nth-child(4n+2) tr:hover > td { background-color: #e6983c; }
|
||||
table.basic:nth-child(4n+3) tr:hover > td { background-color: #2dcc70; }
|
||||
body.trHoverActivated table.basic:nth-child(4n+0) tr:hover > td { background-color: #e63c54; }
|
||||
body.trHoverActivated table.basic:nth-child(4n+1) tr:hover > td { background-color: #3c73e6; }
|
||||
body.trHoverActivated table.basic:nth-child(4n+2) tr:hover > td { background-color: #e6983c; }
|
||||
body.trHoverActivated table.basic:nth-child(4n+3) tr:hover > td { background-color: #2dcc70; }
|
||||
|
||||
table.basic table.basic tr:hover > td { background-color: #9e9e9e; }
|
||||
body.trHoverActivated table.basic table.basic tr:hover > td { background-color: #9e9e9e; }
|
||||
|
||||
/* .noborder */
|
||||
table.basic tr.noborder > td:first-child{ border-left: 1px solid transparent; }
|
||||
table.basic tr:hover td{ background-color: #fff; }
|
||||
body.trHoverActivated table.basic tr:hover td{ background-color: #fff; }
|
||||
|
||||
/* .transparentbg */
|
||||
table.basic tr.transparentbg > td{ background-color: transparent; }
|
||||
table.basic tr.transparentbg:hover > td{ background-color: transparent; }
|
||||
table.basic tr.transparentbg .link{ background-color: #fff; }
|
||||
table.basic tr.transparentbg > td{ color: inherit; }
|
||||
|
||||
|
||||
|
@ -150,7 +170,7 @@ span.link{
|
|||
box-shadow: inset 0 0 1px #f5f5f5;
|
||||
|
||||
/* background */
|
||||
background: #eee;
|
||||
background: #fff;
|
||||
|
||||
/* foreground */
|
||||
color: #333;
|
||||
|
@ -158,7 +178,7 @@ span.link{
|
|||
/* extra */
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
table.basic td > span.link{ background: #eee; }
|
||||
span.link:hover{ color: #000; }
|
||||
|
||||
/*********************/
|
||||
|
@ -166,18 +186,18 @@ span.link:hover{ color: #000; }
|
|||
/*********************/
|
||||
select{
|
||||
/* position */
|
||||
margin: 2em 0;
|
||||
margin: 2em;
|
||||
padding: 0 1em;
|
||||
|
||||
/* border */
|
||||
border-radius: 5px;
|
||||
border: 1px solid #ddd;
|
||||
border: 1px solid #2dcc70;
|
||||
|
||||
/* background */
|
||||
background-color: #fff;
|
||||
|
||||
/* foreground */
|
||||
color: #233342;
|
||||
color: #2dcc70;
|
||||
|
||||
/* select */
|
||||
-webkit-appearance:none;
|
||||
|
@ -185,6 +205,12 @@ select{
|
|||
appearance:none;
|
||||
}
|
||||
|
||||
/* select grisé => selection modules existants par exemple */
|
||||
tr.grayscale select{
|
||||
border-color: #bdbdbd;
|
||||
color: #4e4e4e;
|
||||
}
|
||||
|
||||
/* pour déplacement d'élève */
|
||||
td select{ margin: -1em; padding: .5em; }
|
||||
|
||||
|
@ -196,7 +222,7 @@ select > option{
|
|||
background-color: #fff;
|
||||
|
||||
/* foreground */
|
||||
color: #233342;
|
||||
color: #555;
|
||||
text-indent: 1em;
|
||||
}
|
||||
|
||||
|
@ -205,31 +231,138 @@ td select > option{ padding: 0; }
|
|||
|
||||
|
||||
|
||||
/*
|
||||
select > option:nth-child(4n+0){ color: #e63c54; }
|
||||
select > option:nth-child(4n+1){ color: #3c73e6; }
|
||||
select > option:nth-child(4n+2){ color: #e6983c; }
|
||||
select > option:nth-child(4n+3){ color: #2dcc70; }*/
|
||||
|
||||
|
||||
|
||||
|
||||
.valider_deplacement{
|
||||
.confirm{
|
||||
/* position */
|
||||
/*display: inline-block;*/ display: none;
|
||||
position: absolute;
|
||||
margin-left: 2em;
|
||||
margin-top: -.2em;
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
padding: 0 .7em 0 1.3em;
|
||||
|
||||
|
||||
/* border */
|
||||
border-radius: 3px;
|
||||
border: 1px solid #2dcc70;
|
||||
|
||||
/* background */
|
||||
background: transparent center center no-repeat;
|
||||
background-size: 90% auto;
|
||||
background: transparent center left .2em no-repeat;
|
||||
background-size: 1em auto;
|
||||
|
||||
/* foreground */
|
||||
color: #2dcc70;
|
||||
line-height: 1.5em;
|
||||
|
||||
/* extra */
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.valider_deplacement.active{ display: inline-block; background-image: url(../src/validate.svg); }
|
||||
tr:hover td .valider_deplacement.active{ background-image: url(../src/validate@hover.svg); }
|
||||
|
||||
|
||||
/* @all */
|
||||
.confirm.all,
|
||||
tr.grayscale .confirm{ margin-top: -.7em; }
|
||||
|
||||
|
||||
|
||||
/* @active */
|
||||
input.active + .confirm,
|
||||
select.active + .confirm,
|
||||
.confirm.active{
|
||||
display: inline-block;
|
||||
background-image: url(../src/validate.svg);
|
||||
}
|
||||
|
||||
|
||||
/* tr@hover */
|
||||
body.trHoverActivated tr:hover td select.active + .confirm,
|
||||
body.trHoverActivated tr:hover td input.active + .confirm,
|
||||
body.trHoverActivated tr:hover td .confirm.active{
|
||||
border-color: #fff;
|
||||
background-image: url(../src/validate@hover.svg);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* saisie note */
|
||||
.saisie_note,
|
||||
tr.grayscale input{
|
||||
/* position */
|
||||
margin: -.5em;
|
||||
width: 4em;
|
||||
padding: .5em 1em;
|
||||
|
||||
/* border */
|
||||
border-radius: 3px;
|
||||
border: 1px solid #bdbdbd;
|
||||
}
|
||||
|
||||
/* @focus */
|
||||
.saisie_note:focus,
|
||||
tr.grayscale input:focus{
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************/
|
||||
/*** SELECTIONS DES PARTIES ***/
|
||||
/******************************/
|
||||
#CONTAINER > section > .partlist{
|
||||
/* position */
|
||||
display: table;
|
||||
margin: 2em;
|
||||
|
||||
/* border */
|
||||
border-spacing: 0;
|
||||
|
||||
}
|
||||
|
||||
#CONTAINER > section > .partlist td{
|
||||
/* position */
|
||||
padding: .7em 2em;
|
||||
|
||||
/* border */
|
||||
border: 1px solid #2dcc70;
|
||||
border-right: 0;
|
||||
|
||||
/* background */
|
||||
background-color: #fff;
|
||||
|
||||
/* foreground */
|
||||
color: #2dcc70;
|
||||
|
||||
/* extra */
|
||||
cursor: pointer;
|
||||
|
||||
/* animation */
|
||||
transition: .2s ease-in-out;
|
||||
-moz-transition: .2s ease-in-out;
|
||||
-webkit-transition: .2s ease-in-out;
|
||||
-ms-transition: .2s ease-in-out;
|
||||
-o-transition: .2s ease-in-out;
|
||||
}
|
||||
|
||||
/* @radius */
|
||||
#CONTAINER > section > .partlist td:first-child{
|
||||
border-top-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
|
||||
/* @border + @radius */
|
||||
#CONTAINER > section > .partlist td:last-child{
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-right: 1px solid #2dcc70;
|
||||
}
|
||||
|
||||
|
||||
#CONTAINER > section > .partlist td.active{
|
||||
background-color: #2dcc70;
|
||||
color: #fff;
|
||||
}
|
|
@ -33,7 +33,7 @@ $notifNotifNum = 5;
|
|||
<script type='text/javascript' src='js/dragndrop.js' ></script> <!-- Gestion des raccourcis clavier -->
|
||||
|
||||
</head>
|
||||
<body><!-- CORPS DE LA PAGE -->
|
||||
<body class='trHoverActivated_'><!-- CORPS DE LA PAGE -->
|
||||
|
||||
<?php
|
||||
if( $_SESSION['identifiant'] != null ){
|
||||
|
|
|
@ -65,6 +65,15 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
|||
/* initialisation du gestionnaire */
|
||||
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
|
||||
==============================================================*/
|
||||
|
@ -93,16 +102,24 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
|||
/* GESTION DES CATEGORIES (SECTIONS)
|
||||
*
|
||||
* @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
|
||||
* [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
|
||||
if( section instanceof Element && section.tagName == 'SPAN' && section.dataset.hasOwnProperty('link') ){
|
||||
|
||||
if( clearParam === true ) // si clearParam est vrai
|
||||
pageM.vars = new Array(pageM.vars[0]); // on efface les paramètres de l'URL
|
||||
|
||||
// on charge la page
|
||||
pageM.setPage( section.dataset.link );
|
||||
|
||||
|
@ -110,16 +127,16 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
|||
pageM.xhr[pageM.xhr.length-1].addEventListener('load', function(){
|
||||
|
||||
// on récupère les sections du document
|
||||
var sections = document.querySelectorAll('#CONTAINER section[name]');
|
||||
var sections = document.querySelectorAll('#CONTAINER section[name][data-title]');
|
||||
if( sections != null ){ // si on en trouve
|
||||
|
||||
DOM.SUBSECTIONS.innerHTML = ""; // on efface le #SUBHEADER > nav <=> les liens des sous-parties
|
||||
|
||||
for( var i = 0 ; i < sections.length ; i++ ) // pour chaque section, on créé un lien correspondant
|
||||
if( i == 0 ) // on active le premier
|
||||
DOM.SUBSECTIONS.innerHTML += "<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
|
||||
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
|
||||
|
@ -146,13 +163,16 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
|||
|
||||
}
|
||||
|
||||
// permet de recharger la page courante
|
||||
function reload(){ selectSection(pageM.page); }
|
||||
|
||||
/* activation au chargement en fonction de la page courante de pageManager.js */
|
||||
var lastSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
|
||||
if( lastSection != null )
|
||||
selectSection(lastSection); // on l'active
|
||||
|
||||
/* Gestion des liens du menu */
|
||||
DOM.MENU.addEventListener('click', function(e){ selectSection( e.target ); }, false);
|
||||
DOM.MENU.addEventListener('click', function(e){ selectSection( e.target, true); }, false);
|
||||
|
||||
|
||||
|
||||
|
@ -185,7 +205,7 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
|||
remClass(lastSection, 'active'); // on la désactive
|
||||
|
||||
// on active la page associée
|
||||
var target = document.querySelector('#CONTAINER section[name='+subSection.dataset.sectname+']');
|
||||
var target = document.querySelector('#CONTAINER section[name='+subSection.dataset.sectname+'][data-title]');
|
||||
if( target != null )
|
||||
addClass(target, 'active');
|
||||
|
||||
|
@ -341,16 +361,15 @@ initForm( // initialisation du formulaire de connection
|
|||
*
|
||||
*
|
||||
*/
|
||||
Shortcut('ctrl+alt+n', function(){
|
||||
pageM.vars[0] = 'notifications';
|
||||
selectSection( document.querySelector('#MENU > span[data-link=home]') );
|
||||
});
|
||||
|
||||
// Shortcut('ctrl+alt+e', function(){
|
||||
// console.log(DOM.LOGOUT);
|
||||
// DOM.LOGOUT.click();
|
||||
// Shortcut('ctrl+alt+n', function(){
|
||||
// pageM.vars[0] = 'notifications';
|
||||
// selectSection( document.querySelector('#MENU > span[data-link=home]') );
|
||||
// });
|
||||
|
||||
Shortcut('ctrl+alt+e', function(){
|
||||
addClass(DOM.WRAPPER, 'blurred');
|
||||
});
|
||||
|
||||
|
||||
/* [6] GESTION DES LIENS SPÉCIFIQUES
|
||||
==============================================================*/
|
||||
|
|
|
@ -22,23 +22,22 @@ pageManager.prototype = {
|
|||
ajax: function(pLink, pHandler, pMethod, pForm){
|
||||
// on efface les requêtes qui sont terminées et on push une nouvelle
|
||||
for( var i = 0 ; i < this.xhr.length ; i++ ){
|
||||
if( this.xhr[i].readyState == 4 ) // si terminée
|
||||
// if( this.xhr[i].readyState == 4 ) // si terminée
|
||||
this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée
|
||||
}
|
||||
|
||||
this.xhr.push(true);
|
||||
i = this.xhr.length-1;
|
||||
var index;
|
||||
|
||||
if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari
|
||||
this.xhr[i] = new XMLHttpRequest();
|
||||
index = this.xhr.push( new XMLHttpRequest() ) -1;
|
||||
else // IE5, IE6
|
||||
this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest');
|
||||
index = this.xhr.push( new ActiveXObject('Microsoft.XMLHttpRequest') ) -1;
|
||||
|
||||
var ptrPageManager = this;
|
||||
this.xhr[i].onreadystatechange = function(){
|
||||
if( ptrPageManager.xhr[i].readyState == 4 ) // si la requête est terminée
|
||||
if( [0,200].indexOf(ptrPageManager.xhr[i].status) > -1 ) // si fichier existe et reçu
|
||||
pHandler(ptrPageManager.xhr[i].responseText);
|
||||
this.xhr[index].onreadystatechange = function(){
|
||||
if( ptrPageManager.xhr[index].readyState == 4 ) // si la requête est terminée
|
||||
if( [0,200].indexOf(ptrPageManager.xhr[index].status) > -1 ) // si fichier existe et reçu
|
||||
pHandler(ptrPageManager.xhr[index].responseText);
|
||||
else // si code d'erreur retourne null
|
||||
pHandler();
|
||||
}
|
||||
|
@ -49,8 +48,8 @@ pageManager.prototype = {
|
|||
// gestion du formulaire si la méthode est POST
|
||||
var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null;
|
||||
|
||||
this.xhr[i].open( method, pLink, true);
|
||||
this.xhr[i].send( form );
|
||||
this.xhr[index].open( method, pLink, true );
|
||||
this.xhr[index].send( form );
|
||||
},
|
||||
/***************************************************** [APPLICATION] Ajax() ******************************************************/
|
||||
// EXEMPLES DE FONCTIONS POUR pHandler //
|
||||
|
|
|
@ -74,13 +74,118 @@ require_once __ROOT__.'/manager/database.php';
|
|||
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
|
||||
if( $anneeCheck ){ // si tout les paramètres sont bons
|
||||
$UEs = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
|
||||
$semestreList = DataBase::getInstance()->getControlesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
|
||||
|
||||
if( is_array($UEs) ){ // si on a bien un tableau
|
||||
$answer->UEs = $UEs; // on renvoie dans answer->UEs
|
||||
if( is_array($semestreList) ){ // si on a bien un tableau
|
||||
$answer->semestres = $semestreList; // on renvoie dans answer->semestreList
|
||||
$answer->request = 'success'; // et on renvoie success
|
||||
}else // sinon si c'est pas un tableau
|
||||
$answer->request = $UEs; // on retourne l'erreur
|
||||
$answer->request = $semestreList; // on retourne l'erreur
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
}else
|
||||
$answer->request = 'permission_error';
|
||||
break;
|
||||
|
||||
|
||||
/************************************/
|
||||
/* liste des notes pour un contrôle */
|
||||
/************************************/
|
||||
case 'getNotesEnseignant': if( permission('teacher') ){
|
||||
|
||||
$areSetParam = isset($request->enseignant) && isset($request->controle); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->enseignant); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->controle); // des bon types
|
||||
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
|
||||
|
||||
// paramètre optionnel
|
||||
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
|
||||
|
||||
// définition (ou pas) du paramètre optionnel
|
||||
if( $optionalGroupe ) $groupe = $request->groupe;
|
||||
else $groupe = null;
|
||||
|
||||
if( $enseignantCheck ){ // si tout les paramètres sont bons
|
||||
$controle = DataBase::getInstance()->getNotesEnseignant($request->enseignant, $_SESSION['semestre_pair'], $_SESSION['annee'], $request->controle, $groupe);
|
||||
|
||||
if( is_array($controle) ){ // si on a bien un tableau
|
||||
$answer->controle = $controle; // on renvoie dans answer->controle
|
||||
$answer->request = 'success'; // et on renvoie success
|
||||
}else // sinon si c'est pas un tableau
|
||||
$answer->request = $controle; // on retourne l'erreur
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
}else
|
||||
$answer->request = 'permission_error';
|
||||
break;
|
||||
|
||||
|
||||
/**********************************************/
|
||||
/* informations relatives au dossier étudiant */
|
||||
/**********************************************/
|
||||
case 'studentcase': if( permission('teacher') ){
|
||||
|
||||
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
|
||||
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
|
||||
|
||||
if( $etudiantCheck ){ // si tout les paramètres sont bons
|
||||
$answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
}else
|
||||
$answer->request = 'permission_error';
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
/****************************************************/
|
||||
/* saisie d'une note pour un étudiant à un contrôle */
|
||||
/****************************************************/
|
||||
case 'saisieNote': if( permission('teacher') ){
|
||||
|
||||
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
|
||||
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
|
||||
|
||||
if( $etudiantCheck ){ // si tout les paramètres sont bons
|
||||
$answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
}else
|
||||
$answer->request = 'permission_error';
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* _ ____ ___ _____ _____ _ _ ____ _____ ____
|
||||
/* / \ | _ \_ _| ___| ___| | | / ___|| ____| _ \
|
||||
/* / _ \ | | | | || |_ | |_ | | | \___ \| _| | |_) |
|
||||
/* / ___ \ | |_| | || _| | _| | |_| |___) | |___| _ <
|
||||
/* /_/ \_\ |____/___|_| |_| \___/|____/|_____|_| \_\
|
||||
/*
|
||||
|
||||
/****************************************************/
|
||||
/* saisie d'une note pour un groupe à un contrôle */
|
||||
/****************************************************/
|
||||
case 'saisieNoteGroupe': if( permission('teacher') ){
|
||||
|
||||
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
|
||||
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
|
||||
|
||||
if( $etudiantCheck ){ // si tout les paramètres sont bons
|
||||
$answer->request = DataBase::getInstance()->saisieNoteGroupe($request->etudiant, $request->controle, $request->note);
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ class DataBase{
|
|||
/* retourne une instance de la classe */
|
||||
public static function getInstance(){
|
||||
if( DataBase::$instance == null )
|
||||
DataBase::$instance = new DataBase("localhost", "sid2", "php", "Qt358nUdyeTxLDM8");
|
||||
DataBase::$instance = new DataBase("localhost", "sid2", "root", "");
|
||||
|
||||
return DataBase::$instance;
|
||||
}
|
||||
|
@ -215,14 +215,7 @@ class DataBase{
|
|||
/******************************************************************/
|
||||
/*** retourne la liste des utilisateurs des groupes d'une année ***/
|
||||
/******************************************************************/
|
||||
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair, $pSemestre=null, $pGroupe=null){ // pSemestre/pGroupe optionnels
|
||||
// définition des paramètres optionnels
|
||||
$semestreOpt = '%';
|
||||
if( $pSemestre != null ) $semestreOpt = $pSemestre; // semestre donné uniquement (si param non null)
|
||||
|
||||
$groupeOpt = '%';
|
||||
if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit
|
||||
|
||||
public function listeEtudiantsTousGroupesAnnee($annee, $semestre_pair){
|
||||
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
|
||||
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
|
||||
$checkAnnee->execute(array( ':annee' => $annee ));
|
||||
|
@ -230,7 +223,7 @@ class DataBase{
|
|||
|
||||
|
||||
// on récupère la liste des groupes
|
||||
$grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee, $pSemestre, $pGroupe) );
|
||||
$grouplist = DataBase::delNumeric( groupRepo::forYear($semestre_pair, $annee) );
|
||||
|
||||
foreach($grouplist as $iter=>$val) // pour chaque groupe un récupère la liste des utilisateurs
|
||||
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);
|
||||
|
@ -242,15 +235,7 @@ class DataBase{
|
|||
/******************************************************************/
|
||||
/*** retourne la liste des utilisateurs des groupes d'une année ***/
|
||||
/******************************************************************/
|
||||
public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant, $pSemestre, $pGroupe){
|
||||
// définition des paramètres optionnels
|
||||
$semestreOpt = '%';
|
||||
if( $pSemestre != null ) $semestreOpt = $pSemestre; // semestre donné uniquement (si param non null)
|
||||
|
||||
$groupeOpt = '%';
|
||||
if( $pGroupe != null ) $groupeOpt = $pGroupe; // si le groupe est donné, on le définit
|
||||
|
||||
|
||||
public function listeEtudiantsTousGroupesEnseignant($annee, $semestre_pair, $enseignant){
|
||||
/*** on cherche un semestre avec cette année ***/
|
||||
$checkAnnee = DataBase::getPDO()->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
|
||||
$checkAnnee->execute(array( ':annee' => $annee ));
|
||||
|
@ -261,7 +246,7 @@ class DataBase{
|
|||
|
||||
|
||||
// on récupère la liste des groupes
|
||||
$grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee, $pSemestre, $pGroupe) );
|
||||
$grouplist = DataBase::delNumeric( groupRepo::forTeacher($enseignantUID, $semestre_pair, $annee) );
|
||||
|
||||
foreach($grouplist as $iter=>$val) // pour chaque groupe un récupère la liste des utilisateurs
|
||||
$grouplist[$iter]['userlist'] = groupRepo::membres($grouplist[$iter]['id'], $grouplist[$iter]['id_semestre']);
|
||||
|
@ -278,23 +263,11 @@ class DataBase{
|
|||
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
|
||||
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
|
||||
|
||||
|
||||
// on cherche le groupe associé
|
||||
$getNomGroupe = DataBase::getPDO()->prepare("SELECT g.nom ".
|
||||
"FROM utilisateur as u, groupe as g, appartenance as app ".
|
||||
"WHERE app.id_etudiant = u.identifiant ".
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
"AND u.identifiant = :etudiantUID ".
|
||||
|
||||
"AND app.id_semestre = :semestreUID ".
|
||||
"ORDER BY g.nom");
|
||||
$getNomGroupe->execute(array( ':etudiantUID' => $etudiantUID, ':semestreUID' => $semestreUID ));
|
||||
|
||||
// si on a un résultat
|
||||
if( $nomGroupe = $getNomGroupe->fetch()['nom'] )
|
||||
return $nomGroupe;
|
||||
else
|
||||
return 'error';
|
||||
// on retourne le nom
|
||||
if( $groupeObj = groupRepo::forStudent($etudiantUID, $semestreUID) )
|
||||
return $groupeObj['nom'];
|
||||
else // si on a pas trouvé de groupe pour cet étudiant à ce semestre
|
||||
return 'unknown_group';
|
||||
}
|
||||
|
||||
|
||||
|
@ -304,98 +277,13 @@ class DataBase{
|
|||
/******************************************************/
|
||||
/***** déplace un étudiant d'un groupe à un autre *****/
|
||||
/******************************************************/
|
||||
public function deplacerEtudiant($etudiant, $groupe, $annee){
|
||||
public function deplacerEtudiant($etudiant, $groupe, $semestre){
|
||||
|
||||
// on vérifie que le semestre et que le groupe de destination existent
|
||||
if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre';
|
||||
if( !($destGroupeUID=groupRepo::UID($groupe)) ) return 'unknown_newgroup';
|
||||
|
||||
/*** on cherche le nouveau groupe pour cet utilisateur ***/
|
||||
$getNouveauGroupeUID = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as semestre, g.id_groupe as id, u.identifiant as etuUID ".
|
||||
"FROM groupe as g, appartenance as app, appartenance as myapp, utilisateur as u, semestre as s ".
|
||||
"WHERE g.nom = :groupe ".
|
||||
"AND u.identifiant = :etudiant ".
|
||||
|
||||
"AND myapp.id_etudiant = u.identifiant ".
|
||||
"AND myapp.id_semestre = s.id_semestre ".
|
||||
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
"AND app.id_semestre = s.id_semestre");
|
||||
$getNouveauGroupeUID->execute(array(
|
||||
':groupe' => $groupe,
|
||||
':etudiant' => $etudiant
|
||||
));
|
||||
|
||||
// si on trouve, on le définit, sinon on retourne "unknown_user"
|
||||
if( $data = $getNouveauGroupeUID->fetch() ){
|
||||
$nouveauGroupeUID = (int) $data['id'];
|
||||
$semestreUID = $data['semestre'];
|
||||
$etudiantUID = $data['etuUID'];
|
||||
}
|
||||
else
|
||||
return 'unknown_newgroup';
|
||||
|
||||
|
||||
/*** on cherche le groupe de cet utilisateur ***/
|
||||
$getGroupeUID = DataBase::getPDO()->prepare("SELECT g.id_groupe as id ".
|
||||
"FROM utilisateur as u, groupe as g, appartenance as app, semestre as s ".
|
||||
"WHERE app.id_etudiant = u.identifiant ".
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
"AND app.id_semestre = s.id_semestre ".
|
||||
|
||||
"AND u.identifiant = :etudiantUID ".
|
||||
"AND app.id_semestre = :semestreUID");
|
||||
$getGroupeUID->execute(array(
|
||||
':etudiantUID' => $etudiantUID,
|
||||
':semestreUID' => $semestreUID,
|
||||
));
|
||||
|
||||
// si on trouve, on le définit, sinon on retourne "unknown_user"
|
||||
if( $groupeUID = $getGroupeUID->fetch()['id'] ){
|
||||
$groupeUID = $groupeUID;
|
||||
|
||||
/***************************************************************/
|
||||
/*** CAS 1 : l'utilisateur a déjà un groupe pour ce semestre ***/
|
||||
/***************************************************************/
|
||||
|
||||
// il suffit donc maintenant de modifier l' "appartenance"
|
||||
$updateGroupe = DataBase::getPDO()->prepare("UPDATE appartenance SET id_groupe = :nouveauGroupeUID ".
|
||||
"WHERE id_etudiant = :etudiantUID ".
|
||||
"AND id_groupe = :groupeUID ".
|
||||
"AND id_semestre = :semestreUID");
|
||||
$updateGroupe->execute(array(
|
||||
':nouveauGroupeUID' => $nouveauGroupeUID,
|
||||
':etudiantUID' => $etudiantUID,
|
||||
':groupeUID' => $groupeUID,
|
||||
':semestreUID' => $semestreUID
|
||||
));
|
||||
|
||||
}
|
||||
else{
|
||||
/****************************************************/
|
||||
/*** CAS 2 : l'utilisateur n'a pas encore de groupe */
|
||||
/****************************************************/
|
||||
$insertGroupe = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_appartenance, id_etudiant, id_groupe, id_semestre) ".
|
||||
"VALUES(NULL, :etudiantUID, :nouveauGroupeUID, :semestreUID)");
|
||||
$insertGroupe->execute(array(
|
||||
':etudiantUID' => $etudiantUID,
|
||||
':nouveauGroupeUID' => $nouveauGroupeUID,
|
||||
':semestreUID' => $semestreUID
|
||||
));
|
||||
}
|
||||
|
||||
/* Vérification de l'entrée dans la table */
|
||||
$verif = DataBase::getPDO()->prepare("SELECT count(id_appartenance) as count ".
|
||||
"FROM appartenance ".
|
||||
"WHERE id_etudiant = :etudiantUID ".
|
||||
"AND id_groupe = :nouveauGroupeUID ".
|
||||
"AND id_semestre = :semestreUID");
|
||||
$verif->execute(array(
|
||||
':etudiantUID' => $etudiantUID,
|
||||
':nouveauGroupeUID' => $nouveauGroupeUID,
|
||||
':semestreUID' => $semestreUID
|
||||
));
|
||||
|
||||
$verifFetch = $verif->fetch();
|
||||
|
||||
if( $verifFetch && $verifFetch['count'] == '1' )
|
||||
if( groupRepo::ajouterMembre($etudiant, $destGroupeUID, $semestreInfo['id']) )
|
||||
return 'success';
|
||||
else
|
||||
return 'error';
|
||||
|
@ -467,8 +355,12 @@ class DataBase{
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
/**********************************************************/
|
||||
/*** retourne la liste exhaustive des MODULES de la BDD ***/
|
||||
/**********************************************************/
|
||||
public function getExhaustiveModuleList(){
|
||||
return moduleRepo::exhaustiveList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -482,66 +374,43 @@ class DataBase{
|
|||
// on vérifie que l'enseignant enseigne bien cette année
|
||||
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
|
||||
|
||||
$UEList = $this->getUEsEnseignant($enseignant, $semestre_pair, $annee); // on récupère la liste des UEs
|
||||
// on récupère les semestres de cette année
|
||||
$semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
|
||||
|
||||
foreach($UEList as $iter=>$UE){
|
||||
foreach($semestreList as $iter_s=>$a){
|
||||
$semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
|
||||
|
||||
// si on a l'UID enseignant & l'UE => on récupère les modules
|
||||
$getModuleList = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom as nom, m.libelle as libelle ".
|
||||
"FROM enseignement as ens, semestre as s, ue, module as m, mcc_ue, mcc_module as mcc_m ".
|
||||
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND mcc_m.id_module = m.id_module ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_ue.id_ue = ue.id_ue ".
|
||||
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b)
|
||||
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
|
||||
|
||||
"AND ens.id_enseignant = :enseignantUID ".
|
||||
"AND ue.id_ue = :UEUID ".
|
||||
"AND s.annee = :annee ".
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"ORDER BY m.nom, m.libelle ASC");
|
||||
$getModuleList->execute(array(
|
||||
':enseignantUID' => $enseignantUID,
|
||||
':UEUID' => $UE['id'],
|
||||
':annee' => $annee,
|
||||
':semestre_pair' => ($semestre_pair) ? '0' : '1'
|
||||
));
|
||||
|
||||
// on ajoute la liste des modules en supprimant les valeurs à indinces numériques
|
||||
$UEList[$iter]['modules'] = DataBase::delNumeric( $getModuleList->fetchAll() );
|
||||
}
|
||||
|
||||
return $UEList;
|
||||
return $semestreList;
|
||||
}
|
||||
|
||||
|
||||
/****************************************/
|
||||
/*** retourne les UEs d'un enseignant ***/
|
||||
/****************************************/
|
||||
public function getUEsEnseignant($enseignant, $semestre_pair, $annee){
|
||||
// on vérifie que l'enseignant enseigne bien cette année
|
||||
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
|
||||
|
||||
// on retourne la liste des UEs en supprimant les doublons à indices numériques
|
||||
return ueRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************/
|
||||
/*** retourne les modules des semestres en cours ***/
|
||||
/***************************************************/
|
||||
public function getModulesByUEByYear($semestre_pair, $annee){
|
||||
// on récupère la liste des UEs
|
||||
$UEList = ueRepo::forYear($semestre_pair, $annee);
|
||||
public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair
|
||||
|
||||
foreach($UEList as $iter=>$UE) // pour chaque UE, on récupère la liste des UEs
|
||||
$UEList[$iter]['modules'] = moduleRepo::forYear($UE['id'], $semestre_pair, $annee);
|
||||
// on récupère les semestres de cette année
|
||||
$semestreList = semestreRepo::forYear($annee);
|
||||
|
||||
return $UEList;
|
||||
foreach($semestreList as $iter_s=>$a){
|
||||
$semestreList[$iter_s]['UElist'] = ueRepo::forYear($semestreList[$iter_s]['id']);
|
||||
|
||||
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
|
||||
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forYear($semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $semestreList;
|
||||
}
|
||||
|
||||
|
||||
|
@ -631,154 +500,97 @@ class DataBase{
|
|||
public function getControlesEnseignant($enseignant, $semestre_pair, $annee){
|
||||
// on vérifie que le semestre existe et que l'enseignant y enseigne
|
||||
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
|
||||
debug();
|
||||
// on récupère les semestres de cette année
|
||||
$semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
|
||||
|
||||
foreach($semestreList as $iter_s=>$a){
|
||||
|
||||
$UEList = ueRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
|
||||
$semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
|
||||
|
||||
foreach($UEList as $iter_ue=>$a){
|
||||
$UEList[$iter_ue]['modules'] = moduleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['id'], $UEList[$iter_ue]['id_semestre']);
|
||||
foreach($semestreList[$iter_s]['UElist'] as $iter_u=>$b){
|
||||
$semestreList[$iter_s]['UElist'][$iter_u]['modules'] = moduleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['id'], $semestreList[$iter_s]['id']);
|
||||
|
||||
foreach($UEList[$iter_ue]['modules'] as $iter_mod=>$b){
|
||||
$UEList[$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forTeacher($enseignantUID, $UEList[$iter_ue]['modules'][$iter_mod]['id'], $UEList[$iter_ue]['id_semestre']);
|
||||
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'] as $iter_m=>$c){
|
||||
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] = controleRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['id'], $semestreList[$iter_s]['id']);
|
||||
|
||||
foreach($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'] as $iter_ct=>$c){
|
||||
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['grouplist'] = noteRepo::forTeacher($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
|
||||
|
||||
$semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['moyenne'] = noteRepo::moyenneForControle($semestreList[$iter_s]['UElist'][$iter_u]['modules'][$iter_m]['controles'][$iter_ct]['id']);
|
||||
|
||||
}
|
||||
|
||||
foreach($UEList[$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$c)
|
||||
$UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forTeacher($UEList[$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['id']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $UEList;
|
||||
}
|
||||
|
||||
return $semestreList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**************************************/
|
||||
/*** retourne les notes d'un module ***/
|
||||
/**************************************/
|
||||
public function getModuleNotes($etudiant, $module, $semestre, $annee){
|
||||
// on vérifie que le module, le semestre existent et que l'étudiant est inscrit à ce semestre
|
||||
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
|
||||
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
|
||||
if( !($moduleUID=moduleRepo::UID($module)) ) return 'unknown_module';
|
||||
|
||||
/********************************************/
|
||||
/*** retourne les notes pour un contrôle ***/
|
||||
/********************************************/
|
||||
public function getNotesEnseignant($enseignant, $semestre_pair, $annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
|
||||
|
||||
/*** on 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 ".
|
||||
// on récupère les informations du contrôle
|
||||
if( ! ($controlObj=controleRepo::info($controle)) ) return 'unknown_controle';
|
||||
|
||||
"AND mcc_ue.id_ue = ue.id_ue ".
|
||||
"AND mcc_ue.id_semestre = app.id_semestre ".
|
||||
"AND mcc_ue.id_semestre = :semestreUID ".
|
||||
// on ajoute la moyenne au contrôle
|
||||
$controlObj['moyenne'] = noteRepo::moyenneForControle($controlObj['id']);
|
||||
|
||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||
/* [1] si le groupe est donné
|
||||
=======================================*/
|
||||
if( $groupe != null ){
|
||||
if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID; // on récupère l'UID du groupe
|
||||
|
||||
"AND mcc_m.id_module = m.id_module ".
|
||||
$controlObj['userlist'] = groupRepo::membres($groupeUID, $controlObj['id_semestre']); // on récupère la liste des étudiants de ce groupe
|
||||
|
||||
"AND m.nom = :module ");
|
||||
$getModuleUID->execute(array(
|
||||
':module' => $module,
|
||||
':etudiantUID' => $etudiantUID,
|
||||
':semestreUID' => $semestreUID
|
||||
));
|
||||
|
||||
// si on trouve, on le définit, sinon on retourne "unknown_group"
|
||||
if( $moduleUID = $getModuleUID->fetch()['id'] )
|
||||
$moduleUID = (int) $moduleUID;
|
||||
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
|
||||
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
|
||||
foreach(moduleRepo::forStudent($etudiant, $semestreUID) as $module ) // on récupère parmi les modules auquel est inscrit l'utilisateur
|
||||
if( $module['id'] == $moduleUID ){ // s'il est inscrit au module donné
|
||||
$EtudiantInscritAuModule = true;
|
||||
break;
|
||||
// var_dump( $controlObj );
|
||||
debug();
|
||||
}
|
||||
|
||||
// si l'étudiant n'a pas ce module dans ceux auxquels il est inscrit
|
||||
if( !$EtudiantInscritAuModule ) return 'unknown_module';
|
||||
|
||||
|
||||
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
|
||||
$getNoteList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
|
||||
"FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
|
||||
"WHERE note.id_appartenance = app.id_appartenance ".
|
||||
"AND ctrl.id_controle = note.id_controle ".
|
||||
"AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
|
||||
"AND mcc_ue.id_semestre = app.id_semestre ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
|
||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||
|
||||
"AND mcc_m.id_module = m.id_module ".
|
||||
|
||||
"AND m.id_module = :moduleUID ".
|
||||
"AND app.id_etudiant = :etudiantUID ".
|
||||
"AND s.id_semestre = :semestreUID ".
|
||||
"ORDER BY ctrl.date_publication ASC");
|
||||
$getNoteList->execute(array(
|
||||
':moduleUID' => $moduleUID,
|
||||
':etudiantUID' => $etudiantUID,
|
||||
':semestreUID' => $semestreUID
|
||||
));
|
||||
|
||||
// on retourne la liste des notes et supprime les doublons à indices numériques
|
||||
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
||||
return $controlObj;
|
||||
}
|
||||
|
||||
|
||||
/******************************************/
|
||||
/*** 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() );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -168,20 +168,9 @@ require_once __ROOT__.'/manager/database.php';
|
|||
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
$enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format
|
||||
|
||||
// paramètres optionnels
|
||||
$optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre);
|
||||
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
|
||||
|
||||
// définition (ou pas) des paramètres optionnels
|
||||
if( $optionalSemestre ) $semestre = $request->semestre;
|
||||
else $semestre = null;
|
||||
|
||||
if( $optionalGroupe ) $groupe = $request->groupe;
|
||||
else $groupe = null;
|
||||
|
||||
if( $enseignantCheck ){
|
||||
|
||||
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant, $semestre, $groupe);
|
||||
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant);
|
||||
|
||||
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
|
||||
$answer->grouplist = $grouplist;
|
||||
|
@ -205,24 +194,10 @@ require_once __ROOT__.'/manager/database.php';
|
|||
$typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings
|
||||
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
|
||||
|
||||
// paramètres optionnels
|
||||
$optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre);
|
||||
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
|
||||
|
||||
// définition (ou pas) des paramètres optionnels
|
||||
if( $optionalSemestre ) $semestre = $request->semestre;
|
||||
else $semestre = null;
|
||||
|
||||
if( $optionalGroupe ) $groupe = $request->groupe;
|
||||
else $groupe = null;
|
||||
|
||||
|
||||
|
||||
if( $anneeCheck ){
|
||||
|
||||
// $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair'], $semestre, $groupe);
|
||||
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null, $semestre, $groupe);
|
||||
// $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']);
|
||||
$grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null);
|
||||
|
||||
if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs
|
||||
$answer->grouplist = $grouplist;
|
||||
|
@ -267,14 +242,14 @@ require_once __ROOT__.'/manager/database.php';
|
|||
/************************************************/
|
||||
case 'move': if( permission('admin') ){
|
||||
|
||||
$areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent
|
||||
$areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère
|
||||
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère
|
||||
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format
|
||||
$groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format
|
||||
|
||||
if( $groupeCheck ){ // si param ok
|
||||
$answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $_SESSION['annee']);
|
||||
$answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre);
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
|
|
|
@ -82,16 +82,16 @@ require_once __ROOT__.'/manager/database.php';
|
|||
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
|
||||
if( $anneeCheck ){ // si tout les paramètres sont bons
|
||||
$UEList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
|
||||
$semestreList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $_SESSION['semestre_pair'], $request->annee);
|
||||
|
||||
// STRUCTURE
|
||||
// tableau d'UES contenant un tableau de MODULES
|
||||
|
||||
if( is_array($UEList) ){ // si on a bien un tableau
|
||||
$answer->UEs = $UEList; // on renvoie dans answer->ues
|
||||
if( is_array($semestreList) ){ // si on a bien un tableau
|
||||
$answer->semestres = $semestreList; // on renvoie dans answer->ues
|
||||
$answer->request = 'success'; // et on renvoie success
|
||||
}else // sinon si c'est pas un tableau
|
||||
$answer->request = $UEList; // on retourne l'erreur
|
||||
$answer->request = $semestreList; // on retourne l'erreur
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
|
@ -112,13 +112,42 @@ require_once __ROOT__.'/manager/database.php';
|
|||
$anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
|
||||
if( $anneeCheck ){ // si tout les paramètres sont bons
|
||||
$UEList = DataBase::getInstance()->getModulesByUEByYear($_SESSION['semestre_pair'], $request->annee);
|
||||
$semestreList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee);
|
||||
|
||||
// STRUCTURE
|
||||
// tableau d'UES contenant un tableau de MODULES
|
||||
|
||||
if( is_array($UEList) ){ // si on a bien un tableau
|
||||
$answer->UEs = $UEList; // on renvoie dans answer->ues
|
||||
if( is_array($semestreList) ){ // si on a bien un tableau
|
||||
$answer->semestres = $semestreList; // on renvoie dans answer->ues
|
||||
$answer->request = 'success'; // et on renvoie success
|
||||
}else // sinon si c'est pas un tableau
|
||||
$answer->request = $semestreList; // on retourne l'erreur
|
||||
}else
|
||||
$answer->request = 'param_error';
|
||||
|
||||
}else
|
||||
$answer->request = 'permission_error';
|
||||
break;
|
||||
|
||||
|
||||
/**********************************/
|
||||
/* liste des informations des MCC */
|
||||
/**********************************/
|
||||
case 'getMCC': if( permission('admin') ){
|
||||
|
||||
$areSetParam = isset($request->annee); // les arguments existent
|
||||
$typeOkParam = $areSetParam && is_string($request->annee); // si c'est des strings
|
||||
$nEmptyParam = $typeOkParam && is_numeric($request->annee); // des bon types
|
||||
$anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
|
||||
|
||||
if( $anneeCheck ){ // si tout les paramètres sont bons
|
||||
$semestreList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee);
|
||||
|
||||
// STRUCTURE
|
||||
// tableau d'UES contenant un tableau de MODULES
|
||||
|
||||
if( is_array($semestreList) ){ // si on a bien un tableau
|
||||
$answer->semestres = $semestreList; // on renvoie dans answer->ues
|
||||
$answer->request = 'success'; // et on renvoie success
|
||||
}else // sinon si c'est pas un tableau
|
||||
$answer->request = $UEList; // on retourne l'erreur
|
||||
|
|
|
@ -19,7 +19,16 @@ class controleRepo extends DBAccess{
|
|||
*/
|
||||
public static function info($controleUID){
|
||||
// on considère que le semestre existe
|
||||
$getControleInfo = DataBase::getPDO()->prepare("SELECT id_controle as id, id_mcc_module, intitule, base, coefficient, date_publication FROM controle WHERE id_controle = :controleUID");
|
||||
$getControleInfo = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id, ctrl.id_mcc_module, m.nom as module, m.libelle as modulelib, s.id_semestre, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication
|
||||
FROM controle as ctrl, mcc_module as mcc_m, mcc_ue, semestre as s, module as m
|
||||
WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module
|
||||
AND mcc_m.id_module = m.id_module
|
||||
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
|
||||
AND ctrl.id_controle = :controleUID
|
||||
|
||||
GROUP BY ctrl.id_controle");
|
||||
$getControleInfo->execute(array(
|
||||
':controleUID' => $controleUID
|
||||
));
|
||||
|
@ -42,14 +51,14 @@ class controleRepo extends DBAccess{
|
|||
*
|
||||
*/
|
||||
public static function forStudent($module, $semestre){
|
||||
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
|
||||
"FROM controle as ctrl, module as m, mcc_module as mcc_m, mcc_ue, semestre as s ".
|
||||
"WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication
|
||||
FROM controle as ctrl, module as m, mcc_module as mcc_m, mcc_ue, semestre as s
|
||||
WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module
|
||||
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
|
||||
"AND mcc_m.id_module = :module ".
|
||||
"AND s.id_semestre = :semestre");
|
||||
AND mcc_m.id_module = :module
|
||||
AND s.id_semestre = :semestre");
|
||||
$getControleList->execute(array( ':module' => $module, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getControleList->fetchAll() );
|
||||
|
@ -70,20 +79,21 @@ class controleRepo extends DBAccess{
|
|||
*
|
||||
*/
|
||||
public static function forTeacher($enseignant, $module, $semestre){
|
||||
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
|
||||
"FROM enseignement as ens, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
|
||||
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication
|
||||
FROM enseignement as ens, module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl
|
||||
WHERE ens.id_mcc_module = mcc_m.id_mcc_module
|
||||
AND mcc_m.id_mcc_module = ctrl.id_mcc_module
|
||||
AND mcc_m.id_module = m.id_module
|
||||
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
|
||||
|
||||
"AND ens.id_enseignant = :enseignant ".
|
||||
"AND mcc_m.id_module = :module ".
|
||||
"AND mcc_ue.id_semestre = :semestre");
|
||||
AND ens.id_enseignant = :enseignant
|
||||
AND mcc_m.id_module = :module
|
||||
AND mcc_ue.id_semestre = :semestre
|
||||
|
||||
GROUP BY ctrl.id_controle");
|
||||
$getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getControleList->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -60,11 +60,11 @@ class groupRepo extends DBAccess{
|
|||
*/
|
||||
public static function appartenanceUID($etudiant, $groupe, $semestre){
|
||||
/*** on cherche un groupe avec ce nom ***/
|
||||
$getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id ".
|
||||
"FROM appartenance ".
|
||||
"WHERE id_etudiant = :etudiant ".
|
||||
"AND id_groupe = :groupe ".
|
||||
"AND id_semestre = :semestre");
|
||||
$getAppartenanceUID = DataBase::getPDO()->prepare("SELECT id_appartenance as id
|
||||
FROM appartenance
|
||||
WHERE id_etudiant = :etudiant
|
||||
AND id_groupe = :groupe
|
||||
AND id_semestre = :semestre");
|
||||
$getAppartenanceUID->execute(array(
|
||||
':etudiant' => $etudiant,
|
||||
':groupe' => $groupe,
|
||||
|
@ -110,7 +110,7 @@ class groupRepo extends DBAccess{
|
|||
}
|
||||
|
||||
|
||||
/* AJOUTER UN MEMBRE A UN GROUPE
|
||||
/* AJOUTER UN MEMBRE A UN GROUPE / DEPLACER UN MEMBRE VERS UN GROUPE DONNE (si déjà dans un groupe)
|
||||
*
|
||||
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
|
||||
* @groupe<int> l'UID du groupe auquel on veut le ratacher
|
||||
|
@ -121,27 +121,19 @@ class groupRepo extends DBAccess{
|
|||
*
|
||||
*/
|
||||
public static function ajouterMembre($etudiant, $groupe, $semestre){
|
||||
debug();
|
||||
/* [1] On vérifie si l'utilisateur appartient à un groupe pour ce semestre
|
||||
===========================================================================*/
|
||||
$dejaMembre = DataBase::getPDO()->prepare("SELECT id_appartenance as id ".
|
||||
"FROM appartenance ".
|
||||
"WHERE id_etudiant = :etudiant ".
|
||||
"AND id_semestre = :semestre ");
|
||||
$dejaMembre->execute(array(
|
||||
':etudiant' => $etudiant,
|
||||
':semestre' => $semestre
|
||||
));
|
||||
|
||||
if( $appartenanceUID = $dejaMembre->fetch()['id'] ){ // si c'est le cas
|
||||
if( $appartenanceUID = groupRepo::forStudent($etudiant, $semestre)['id_appartenance'] ){ // si c'est le cas
|
||||
|
||||
/* [2] On modifie l'appartenance
|
||||
==============================*/
|
||||
// création et exécution de la requête de modification de l'appartenance
|
||||
$ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance ".
|
||||
"SET id_groupe = :groupe ".
|
||||
"WHERE id_appartenance = :appartenanceUID");
|
||||
$ajouterMembre->execute(array(
|
||||
':groupe' => $groupeUID,
|
||||
$ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance
|
||||
SET id_groupe = :groupe
|
||||
WHERE id_appartenance = :appartenanceUID");
|
||||
$ajouterMembres->execute(array(
|
||||
':groupe' => $groupe,
|
||||
':appartenanceUID' => $appartenanceUID
|
||||
));
|
||||
|
||||
|
@ -150,15 +142,15 @@ class groupRepo extends DBAccess{
|
|||
/* [2] On créé l'appartenance
|
||||
==============================*/
|
||||
// création et exécution de la requête de création d'appartenance
|
||||
$ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre) ".
|
||||
"VALUES( ".
|
||||
"(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant), ".
|
||||
"(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe), ".
|
||||
"(SELECT id_semestre FROM semestre WHERE id_semestre = :semestre) ".
|
||||
" )");
|
||||
$ajouterMembre->execute(array(
|
||||
':etudiant' => $etudiantUID,
|
||||
':groupe' => $groupeUID,
|
||||
$ajouterMembres = DataBase::getPDO()->prepare("INSERT INTO appartenance(id_etudiant, id_groupe, id_semestre)
|
||||
VALUES(
|
||||
(SELECT identifiant FROM utilisateur WHERE identifiant = :etudiant),
|
||||
(SELECT id_groupe FROM groupe WHERE id_groupe = :groupe),
|
||||
(SELECT id_semestre FROM semestre WHERE id_semestre = :semestre)
|
||||
)");
|
||||
$ajouterMembres->execute(array(
|
||||
':etudiant' => $etudiant,
|
||||
':groupe' => $groupe,
|
||||
':semestre' => $semestre
|
||||
));
|
||||
|
||||
|
@ -182,15 +174,16 @@ class groupRepo extends DBAccess{
|
|||
*/
|
||||
public static function membres($groupeUID, $semestreUID){
|
||||
// si le groupe existe => on récupère ses utilisateurs
|
||||
$getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre ".
|
||||
"FROM utilisateur as u, groupe as g, semestre as s, appartenance as app ".
|
||||
"WHERE u.identifiant = app.id_etudiant ".
|
||||
"AND g.id_groupe = app.id_groupe ".
|
||||
"AND app.id_semestre = app.id_semestre ". // à virer (peut-être)
|
||||
$getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe
|
||||
FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND u.identifiant = app.id_etudiant
|
||||
AND g.id_groupe = app.id_groupe
|
||||
AND app.id_semestre = app.id_semestre
|
||||
|
||||
"AND g.id_groupe = :groupeUID ".
|
||||
"AND s.id_semestre = :semestreUID ".
|
||||
"ORDER BY u.prenom, u.nom");
|
||||
AND g.id_groupe = :groupeUID
|
||||
AND s.id_semestre = :semestreUID
|
||||
ORDER BY u.prenom, u.nom");
|
||||
$getMembres->execute(array(
|
||||
':groupeUID' => $groupeUID,
|
||||
':semestreUID' => $semestreUID
|
||||
|
@ -213,17 +206,18 @@ class groupRepo extends DBAccess{
|
|||
*
|
||||
*/
|
||||
public static function forStudent($etudiant, $semestre){
|
||||
$getGroupe = DataBase::getPDO()->prepare("SELECT g.id_groupe as id, g.nom, g.libelle ".
|
||||
"FROM utilisateur as u, groupe as g, appartenance as app ".
|
||||
"WHERE app.id_etudiant = u.identifiant ".
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
"AND u.identifiant = :etudiantUID ".
|
||||
$getGroupe = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_appartenance, g.id_groupe as id, g.nom, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation
|
||||
FROM groupe as g, appartenance as app, formation as f, semestre as s
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND app.id_groupe = g.id_groupe
|
||||
AND app.id_semestre = s.id_semestre
|
||||
|
||||
"AND app.id_semestre = :semestreUID ".
|
||||
"ORDER BY g.nom");
|
||||
$getGroupe->execute(array( ':etudiantUID' => $etudiantUID, ':semestreUID' => $semestreUID ));
|
||||
AND app.id_etudiant = :etudiant
|
||||
AND s.id_semestre = :semestre
|
||||
ORDER BY g.nom");
|
||||
$getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getGroupe->fetch() );
|
||||
return $getGroupe->fetch();
|
||||
}
|
||||
|
||||
|
||||
|
@ -233,48 +227,68 @@ class groupRepo extends DBAccess{
|
|||
/* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE
|
||||
*
|
||||
* @enseignant<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
|
||||
*
|
||||
* @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
|
||||
*
|
||||
*/
|
||||
public static function forTeacher($enseignant, $semestre_pair, $annee, $pSemestre=null, $pGroupe=null){
|
||||
// si le semestre est donné, on cherche uniquement celui-ci, sinon on les affiche tous
|
||||
$semestreOpt = '%';
|
||||
if( $pSemestre != null ){ $semestreOpt = $pSemestre; }
|
||||
public static function forTeacher($enseignant, $semestre_pair, $annee){
|
||||
|
||||
// si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous
|
||||
$groupeOpt = '%';
|
||||
if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
|
||||
$semestrePair0 = '0'; $semestrePair1 = '1';
|
||||
if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; }
|
||||
|
||||
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation
|
||||
FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
|
||||
|
||||
AND mcc_m.id_module = m.id_module
|
||||
AND mcc_m.id_mcc_module = ens.id_mcc_module
|
||||
|
||||
AND ens.id_enseignant = u.identifiant
|
||||
AND ens.correcteur = 1
|
||||
|
||||
AND app.id_etudiant = eleve.identifiant
|
||||
AND app.id_semestre = s.id_semestre
|
||||
AND app.id_groupe = g.id_groupe
|
||||
|
||||
AND u.identifiant = :enseignant
|
||||
AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1)
|
||||
AND s.annee = :annee
|
||||
ORDER BY s.rang, g.nom");
|
||||
$getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
|
||||
|
||||
return DataBase::delNumeric( $getGroupeList->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ".
|
||||
"FROM module as m, utilisateur as u, utilisateur as eleve, groupe as g, enseignement as ens, mcc_ue, mcc_module as mcc_m, semestre as s, appartenance as app ".
|
||||
"WHERE mcc_ue.id_semestre = s.id_semestre ".
|
||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||
|
||||
"AND mcc_m.id_module = m.id_module ".
|
||||
"AND mcc_m.id_mcc_module = ens.id_mcc_module ".
|
||||
|
||||
"AND ens.id_enseignant = u.identifiant ".
|
||||
"AND ens.correcteur = 1 ". // uniquement les groupes pour lesquels il est correcteur
|
||||
|
||||
"AND app.id_etudiant = eleve.identifiant ".
|
||||
"AND app.id_semestre = s.id_semestre ".
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
/* 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 ));
|
||||
|
||||
"AND g.nom LIKE '".$groupeOpt."' ".
|
||||
"AND s.nom LIKE '".$semestreOpt."' ".
|
||||
"AND u.identifiant = :enseignant ".
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"AND s.annee = :annee ".
|
||||
"ORDER BY s.rang, g.nom");
|
||||
$getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
|
||||
|
||||
return DataBase::delNumeric( $getGroupeList->fetchAll() );
|
||||
}
|
||||
|
@ -283,38 +297,27 @@ class groupRepo extends DBAccess{
|
|||
|
||||
/* RETOURNE TOUS LES GROUPES DES SEMESTRES COURANT D'UNE ANNÉE
|
||||
*
|
||||
* @semestre_pair<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
|
||||
*
|
||||
* @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
|
||||
*
|
||||
*/
|
||||
public static function forYear($semestre_pair, $annee, $pSemestre=null, $pGroupe=null){
|
||||
// si le semestre est donné, on cherche uniquement celui-ci, sinon on les affiche tous
|
||||
$semestreOpt = '%';
|
||||
if( $pSemestre != null ){ $semestreOpt = $pSemestre; }
|
||||
|
||||
// si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous
|
||||
$groupeOpt = '%';
|
||||
if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
|
||||
public static function forYear($semestre_pair, $annee){
|
||||
|
||||
$semestrePair0 = '0'; $semestrePair1 = '1';
|
||||
if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; }
|
||||
if( is_bool($semestre_pair) ){ $semestrePair0 = ($semestre_pair)?'0':'1'; $semestrePair1 = ($semestre_pair)?'0':'1'; }
|
||||
|
||||
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ".
|
||||
"FROM groupe as g, semestre as s, appartenance as app ".
|
||||
"WHERE g.id_groupe = app.id_groupe ".
|
||||
"AND s.id_semestre = app.id_semestre ".
|
||||
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation
|
||||
FROM groupe as g, semestre as s, appartenance as app, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND g.id_groupe = app.id_groupe
|
||||
AND s.id_semestre = app.id_semestre
|
||||
|
||||
"AND g.nom LIKE '".$groupeOpt."' ".
|
||||
"AND s.nom LIKE '".$semestreOpt."' ".
|
||||
"AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
|
||||
"AND s.annee = :annee ".
|
||||
"ORDER BY g.nom");
|
||||
AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1)
|
||||
AND s.annee = :annee
|
||||
ORDER BY g.nom");
|
||||
$getGroupeList->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
|
||||
|
||||
return DataBase::delNumeric( $getGroupeList->fetchAll() );
|
||||
|
|
|
@ -58,15 +58,15 @@ class moduleRepo extends DBAccess{
|
|||
*/
|
||||
public static function forStudent($UEUID, $semestre){
|
||||
// on récupère les modules
|
||||
$getModulesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
|
||||
"FROM module as m, semestre as s, mcc_ue, mcc_module as mcc_m ".
|
||||
"WHERE mcc_ue.id_semestre = s.id_semestre ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_m.id_module = m.id_module ".
|
||||
$getModulesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle
|
||||
FROM module as m, semestre as s, mcc_ue, mcc_module as mcc_m
|
||||
WHERE mcc_ue.id_semestre = s.id_semestre
|
||||
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
||||
AND mcc_m.id_module = m.id_module
|
||||
|
||||
"AND mcc_ue.id_ue = :UEUID ".
|
||||
"AND s.id_semestre = :semestre ".
|
||||
"ORDER BY m.nom, m.libelle");
|
||||
AND mcc_ue.id_ue = :UEUID
|
||||
AND s.id_semestre = :semestre
|
||||
ORDER BY m.nom, m.libelle");
|
||||
$getModulesForStudent->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getModulesForStudent->fetchAll() );
|
||||
|
@ -87,16 +87,16 @@ class moduleRepo extends DBAccess{
|
|||
public static function forTeacher($enseignant, $UEUID, $semestre){
|
||||
|
||||
// on récupère les modules
|
||||
$getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
|
||||
"FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens ".
|
||||
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND mcc_m.id_module = m.id_module ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
$getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle
|
||||
FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens
|
||||
WHERE ens.id_mcc_module = mcc_m.id_mcc_module
|
||||
AND mcc_m.id_module = m.id_module
|
||||
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
||||
|
||||
"AND ens.id_enseignant = :enseignant ".
|
||||
"AND mcc_ue.id_ue = :UEUID ".
|
||||
"AND mcc_ue.id_semestre = :semestre ".
|
||||
"ORDER BY m.nom, m.libelle");
|
||||
AND ens.id_enseignant = :enseignant
|
||||
AND mcc_ue.id_ue = :UEUID
|
||||
AND mcc_ue.id_semestre = :semestre
|
||||
ORDER BY m.nom, m.libelle");
|
||||
$getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getModulesForTeacher->fetchAll() );
|
||||
|
@ -105,29 +105,27 @@ class moduleRepo extends DBAccess{
|
|||
|
||||
|
||||
|
||||
/* RENVOIE LA LISTE DES MODULES D'UN UE D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
|
||||
/* RENVOIE LA LISTE DES MODULES D'UN UE D'UN SEMESTRE PARTICULIER
|
||||
*
|
||||
* @UEUID<int> l'UID d'un UE
|
||||
* @semestre_pair<Boolean> VRAI si le semestre est pair
|
||||
* @annee<int> l'année en cours
|
||||
* @semestre<int> l'UID du semestre en question
|
||||
*
|
||||
* @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é
|
||||
*
|
||||
*/
|
||||
public static function forYear($UEUID, $semestre_pair, $annee){
|
||||
public static function forYear($UEUID, $semestre){
|
||||
// on récupère les modules
|
||||
$getModulesForYear = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
|
||||
"FROM module as m, mcc_module as mcc_m, mcc_ue, semestre as s ".
|
||||
"WHERE m.id_module = mcc_m.id_module ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
$getModulesForYear = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle
|
||||
FROM module as m, mcc_module as mcc_m, mcc_ue, semestre as s
|
||||
WHERE m.id_module = mcc_m.id_module
|
||||
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
|
||||
"AND mcc_ue.id_ue = :UEUID ".
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"AND s.annee = :annee ".
|
||||
"ORDER BY s.rang, m.nom, m.libelle");
|
||||
$getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
|
||||
AND mcc_ue.id_ue = :UEUID
|
||||
AND s.id_semestre = :semestre
|
||||
ORDER BY s.rang, m.nom, m.libelle");
|
||||
$getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getModulesForYear->fetchAll() );
|
||||
}
|
||||
|
@ -158,8 +156,7 @@ class moduleRepo extends DBAccess{
|
|||
|
||||
/* [3] On créé le nouveu module
|
||||
=================================================================================================*/
|
||||
$creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) ".
|
||||
"VALUES(DEFAULT, :nom, :libelle)");
|
||||
$creationModule = DataBase::getPDO()->prepare("INSERT INTO module(id_module, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
|
||||
$creationModule->execute(array(
|
||||
':nom' => $nom,
|
||||
':libelle' => $libelle
|
||||
|
@ -174,4 +171,18 @@ class moduleRepo extends DBAccess{
|
|||
|
||||
|
||||
|
||||
|
||||
/* retourne la liste de tous les modules existants
|
||||
*
|
||||
* @return modules<Array> retourne la liste de tous les modules existant
|
||||
*
|
||||
*/
|
||||
public static function exhaustiveList(){
|
||||
$getModuleList = DataBase::getPDO()->query("SELECT id_module as id, nom, libelle FROM module ORDER BY nom, libelle");
|
||||
|
||||
return DataBase::delNumeric( $getModuleList->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -15,47 +15,22 @@ class noteRepo extends DBAccess{
|
|||
* @etudiant<String> l'identifiant de l'étudiant recherché
|
||||
* @controle<int> l'UID du contrôle
|
||||
*
|
||||
* @return UID<String> si l'utilisateur est dans la BDD, retourne son UID
|
||||
* @return FALSE<Boolean> FAUX si l'utilisateur n'est pas présent dans la BDD
|
||||
* @return UID<String> l'UID de la note si elle existe pour ces critères
|
||||
* @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){
|
||||
if( $semestre == null && $annee == null ){ // on cherche un utilisateur avec cet identifiant
|
||||
public static function UID($etudiant, $controle){
|
||||
$getNoteUID = DataBase::getPDO()->prepare("SELECT note.id_note as id
|
||||
FROM appartenance as app, note, controle as ctrl
|
||||
WHERE app.id_appartenance = note.id_appartenance
|
||||
AND ctrl.id_controle = note.id_controle
|
||||
|
||||
/* [1] Cas où on cherche juste si l'utilisateur existe
|
||||
=============================================================*/
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT identifiant as id FROM utilisateur WHERE identifiant = :identifiant");
|
||||
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant ));
|
||||
|
||||
}elseif( $semestre != null ){
|
||||
|
||||
/* [2] Cas où on cherche si un étudiant est inscrit à un semestre
|
||||
==============================================================*/
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ".
|
||||
"FROM utilisateur as u, appartenance as app ".
|
||||
"WHERE u.identifiant = app.id_etudiant ".
|
||||
"AND u.identifiant = :identifiant ".
|
||||
"AND app.id_semestre = :semestre");
|
||||
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
|
||||
|
||||
}else{
|
||||
|
||||
/* [2] Cas où on cherche si un enseignant enseigne l'année donnée
|
||||
==============================================================*/
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ".
|
||||
"FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ".
|
||||
"WHERE u.identifiant = ens.id_enseignant ".
|
||||
"AND ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
"AND s.annee = :annee ".
|
||||
"AND u.identifiant = :identifiant");
|
||||
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':annee' => $annee ));
|
||||
|
||||
}
|
||||
AND app.id_etudiant = :etudiant
|
||||
AND ctrl.id_controle = :controle");
|
||||
$getNoteUID->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
|
||||
|
||||
// on retourne le résultat : FAUX si aucun résultat, sinon la valeur de l'UID de l'utilisateur
|
||||
return $getUtilisateurUID->fetch()['id'];
|
||||
return $getNoteUID->fetch()['id'];
|
||||
}
|
||||
|
||||
|
||||
|
@ -93,18 +68,18 @@ class noteRepo extends DBAccess{
|
|||
*
|
||||
*/
|
||||
public static function forStudent($etudiant, $controle){
|
||||
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, n.id_appartenance, n.id_controle, n.valeur ".
|
||||
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m ".
|
||||
"WHERE n.id_appartenance = app.id_appartenance ".
|
||||
"AND app.id_semestre = s.id_semestre ".
|
||||
"AND s.id_semestre = mcc_ue.id_semestre ".
|
||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
||||
"AND n.id_controle = ctrl.id_controle ".
|
||||
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, n.id_appartenance, n.id_controle, n.valeur
|
||||
FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m
|
||||
WHERE n.id_appartenance = app.id_appartenance
|
||||
AND app.id_semestre = s.id_semestre
|
||||
AND s.id_semestre = mcc_ue.id_semestre
|
||||
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
|
||||
AND mcc_m.id_mcc_module = ctrl.id_mcc_module
|
||||
AND n.id_controle = ctrl.id_controle
|
||||
|
||||
"AND app.id_etudiant = :etudiant ".
|
||||
"AND ctrl.id_controle = :controle ".
|
||||
"ORDER BY n.valeur ASC");
|
||||
AND app.id_etudiant = :etudiant
|
||||
AND ctrl.id_controle = :controle
|
||||
ORDER BY n.valeur ASC");
|
||||
$getNoteList->execute(array( ':etudiant' => $etudiant, ':controle' => $controle ));
|
||||
|
||||
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
||||
|
@ -114,39 +89,179 @@ class noteRepo extends DBAccess{
|
|||
|
||||
|
||||
|
||||
/*
|
||||
** PAS UTILISÉ POUR L'INSTANT
|
||||
*/
|
||||
|
||||
|
||||
/* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
|
||||
/* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
|
||||
*
|
||||
* [1] Par groupe si aucun groupe spécifié (statistiques: moyenne, min, max, nb notes, ...)
|
||||
* [2] Liste des élèves d'un groupe si aucun groupe spécifié
|
||||
*
|
||||
*
|
||||
* @controle<int> l'UID du controle concerné
|
||||
*
|
||||
* @return notes<Array> retourne les notes des étudiants pour un controle particulier
|
||||
* @groupe<int> ***OPTIONNEL*** l'UID du groupe spécifique
|
||||
*
|
||||
*
|
||||
* @return notes<Array> [1] retourne les stats des notes pour les groupes à ce contrôle
|
||||
* [2] retourne les notes des étudiants du groupe spécifié pour ce contrôle
|
||||
*
|
||||
*/
|
||||
public static function forTeacher($controle){
|
||||
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes ".
|
||||
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
|
||||
"WHERE n.id_appartenance = app.id_appartenance ".
|
||||
"AND app.id_semestre = s.id_semestre ".
|
||||
"AND app.id_groupe = g.id_groupe ".
|
||||
"AND s.id_semestre = mcc_ue.id_semestre ".
|
||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
||||
"AND n.id_controle = ctrl.id_controle ".
|
||||
public static function forTeacher($controle, $groupe=null){
|
||||
/* [1] Statistiques des groupes
|
||||
============================================================*/
|
||||
if( !is_int($groupe) ){
|
||||
|
||||
"AND ctrl.id_controle = :controle ".
|
||||
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes
|
||||
FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g
|
||||
WHERE n.id_appartenance = app.id_appartenance
|
||||
AND app.id_semestre = s.id_semestre
|
||||
AND app.id_groupe = g.id_groupe
|
||||
AND s.id_semestre = mcc_ue.id_semestre
|
||||
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
|
||||
AND mcc_m.id_mcc_module = ctrl.id_mcc_module
|
||||
AND n.id_controle = ctrl.id_controle
|
||||
|
||||
"GROUP BY g.id_groupe ".
|
||||
AND ctrl.id_controle = :controle
|
||||
|
||||
"ORDER BY g.nom ASC");
|
||||
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 );
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -57,7 +57,10 @@ class semestreRepo extends DBAccess{
|
|||
*/
|
||||
public static function info($semestreUID){
|
||||
// on considère que le semestre existe
|
||||
$getSemestreInfo = DataBase::getPDO()->prepare("SELECT id_semestre as id, nom, rang, annee FROM semestre WHERE id_semestre = :semestreUID");
|
||||
$getSemestreInfo = DataBase::getPDO()->prepare("SELECT s.id_semestre as id, s.nom, s.rang, s.annee, f.id_formation, f.code as formation, f.nom as nom_formation
|
||||
FROM semestre as s, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND s.id_semestre = :semestreUID");
|
||||
$getSemestreInfo->execute(array( ':semestreUID' => $semestreUID ));
|
||||
|
||||
// on retourne le résultat en supprimant les doublons à indices numériques
|
||||
|
@ -86,14 +89,15 @@ class semestreRepo extends DBAccess{
|
|||
// on formate les variables
|
||||
$semestre_pair = ($semestre_pair) ? '0' : '1';
|
||||
|
||||
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id ".
|
||||
"FROM semestre as s, appartenance as app ".
|
||||
"WHERE app.id_semestre = s.id_semestre ".
|
||||
$getSemestreUID = DataBase::getPDO()->prepare("SELECT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation
|
||||
FROM semestre as s, appartenance as app, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND app.id_semestre = s.id_semestre
|
||||
|
||||
"AND app.id_etudiant = :etudiant ".
|
||||
"AND s.annee = :annee ".
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"ORDER BY s.rang DESC");
|
||||
AND app.id_etudiant = :etudiant
|
||||
AND s.annee = :annee
|
||||
AND s.rang % 2 = :semestre_pair
|
||||
ORDER BY s.rang DESC");
|
||||
$getSemestreUID->execute(array(
|
||||
':etudiant' => $etudiant,
|
||||
':annee' => $annee,
|
||||
|
@ -106,6 +110,56 @@ class semestreRepo extends DBAccess{
|
|||
|
||||
|
||||
|
||||
/* retourne la liste des semestres qu'à un enseignant
|
||||
*
|
||||
* @enseignant<String> l'UID de l'enseignant en question
|
||||
* @semestre_pair<Boolean> VRAI si le semestre en cours est pair
|
||||
* @annee<int> l'année en question
|
||||
*
|
||||
*
|
||||
* @return semestres<Array> retourne la liste des semestres répondant aux critères
|
||||
* @return FALSE<Boolean> retourne FALSE si aucun semestre ne correspond aux critères
|
||||
*
|
||||
*/
|
||||
public static function forTeacher($enseignant, $semestre_pair, $annee){
|
||||
$getSemestreList = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee
|
||||
FROM semestre as s, formation as f, enseignement as ens, mcc_module as mcc_m, mcc_ue
|
||||
WHERE s.id_semestre = mcc_ue.id_semestre
|
||||
AND s.id_formation = f.id_formation
|
||||
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
|
||||
AND mcc_m.id_mcc_module = ens.id_mcc_module
|
||||
|
||||
AND ens.id_enseignant = :enseignant
|
||||
AND s.rang % 2 = :semestre_pair
|
||||
AND s.annee = :annee
|
||||
ORDER BY s.rang ASC");
|
||||
$getSemestreList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
|
||||
|
||||
return DataBase::delNumeric( $getSemestreList->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
/* retourne la liste des semestres d'une année
|
||||
*
|
||||
* @annee<int> l'année en question
|
||||
*
|
||||
*
|
||||
* @return semestres<Array> retourne la liste des semestres de cette année
|
||||
* @return FALSE<Boolean> retourne FALSE si aucun semestre ne correspond aux critères
|
||||
*
|
||||
*/
|
||||
public static function forYear($annee){
|
||||
$getSemestreList = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee
|
||||
FROM semestre as s, formation as f
|
||||
WHERE s.id_formation = f.id_formation
|
||||
AND annee = :annee
|
||||
ORDER BY rang ASC");
|
||||
$getSemestreList->execute(array( ':annee' => $annee ));
|
||||
|
||||
return DataBase::delNumeric( $getSemestreList->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -57,15 +57,15 @@ class ueRepo extends DBAccess{
|
|||
*/
|
||||
public static function forStudent($etudiant, $semestre){
|
||||
// on récupère les modules
|
||||
$getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
|
||||
"FROM appartenance as app, semestre as s, mcc_ue, ue ".
|
||||
"WHERE app.id_semestre = s.id_semestre ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
"AND mcc_ue.id_ue = ue.id_ue ".
|
||||
$getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle
|
||||
FROM appartenance as app, semestre as s, mcc_ue, ue
|
||||
WHERE app.id_semestre = s.id_semestre
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
AND mcc_ue.id_ue = ue.id_ue
|
||||
|
||||
"AND app.id_etudiant = :etudiant ".
|
||||
"AND s.id_semestre = :semestre ".
|
||||
"ORDER BY ue.nom, ue.libelle");
|
||||
AND app.id_etudiant = :etudiant
|
||||
AND s.id_semestre = :semestre
|
||||
ORDER BY ue.nom, ue.libelle");
|
||||
$getUesForStudent->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getUesForStudent->fetchAll() );
|
||||
|
@ -73,59 +73,55 @@ class ueRepo extends DBAccess{
|
|||
|
||||
|
||||
|
||||
/* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UNE ANNEE
|
||||
/* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UN SEMESTRE
|
||||
*
|
||||
* @enseignant<String> Identifiant de l'enseignant
|
||||
* @semestre_pair<Boolean> VRAI si le semestre est pair
|
||||
* @annee<int> l'année en cours
|
||||
* @semestre<int> l'UID du semestre en question
|
||||
*
|
||||
* @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
|
||||
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
|
||||
"FROM enseignement as ens, semestre as s, ue, mcc_ue, mcc_module as mcc_m ".
|
||||
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND ens.correcteur = 1 ". // si l'enseignant est correcteur uniquement
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
"AND mcc_ue.id_ue = ue.id_ue ".
|
||||
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle
|
||||
FROM enseignement as ens, semestre as s, ue, mcc_ue, mcc_module as mcc_m
|
||||
WHERE ens.id_mcc_module = mcc_m.id_mcc_module
|
||||
AND ens.correcteur = 1
|
||||
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
AND mcc_ue.id_ue = ue.id_ue
|
||||
|
||||
"AND ens.id_enseignant = :enseignant ".
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"AND s.annee = :annee ".
|
||||
AND ens.id_enseignant = :enseignant
|
||||
AND s.id_semestre = :semestre
|
||||
|
||||
"ORDER BY ue.nom, ue.libelle ASC");
|
||||
$getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
|
||||
ORDER BY ue.nom, ue.libelle ASC");
|
||||
$getUesForTeacher->execute(array( ':enseignant' => $enseignant, ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getUesForTeacher->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* RENVOIE LA LISTE DES UEs D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
|
||||
/* RENVOIE LA LISTE DES UEs D'UN SEMESTRE D'UNE ANNEE COURANTE
|
||||
*
|
||||
* @semestre_pair<Boolean> VRAI si le semestre est pair
|
||||
* @annee<int> l'année en cours
|
||||
* @semestre<int> l'UID du semestre en question
|
||||
*
|
||||
* @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é
|
||||
*
|
||||
*/
|
||||
public static function forYear($semestre_pair, $annee){
|
||||
public static function forYear($semestre){
|
||||
// on récupère les modules
|
||||
$getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
|
||||
"FROM ue, mcc_ue, semestre as s ".
|
||||
"WHERE ue.id_ue = mcc_ue.id_ue ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
$getUEList = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle
|
||||
FROM ue, mcc_ue, semestre as s
|
||||
WHERE ue.id_ue = mcc_ue.id_ue
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"AND s.annee = :annee ".
|
||||
"ORDER BY s.rang, ue.nom, ue.libelle");
|
||||
$getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
|
||||
AND s.id_semestre = :semestre
|
||||
ORDER BY s.rang, ue.nom, ue.libelle");
|
||||
$getUEList->execute(array( ':semestre' => $semestre ));
|
||||
|
||||
return DataBase::delNumeric( $getUEsForYear->fetchAll() );
|
||||
return DataBase::delNumeric( $getUEList->fetchAll() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -159,8 +155,7 @@ class ueRepo extends DBAccess{
|
|||
|
||||
/* [3] On créé le nouvel UE
|
||||
=================================================================================================*/
|
||||
$creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) ".
|
||||
"VALUES(DEFAULT, :nom, :libelle)");
|
||||
$creationUE = DataBase::getPDO()->prepare("INSERT INTO ue(id_ue, nom, libelle) VALUES(DEFAULT, :nom, :libelle)");
|
||||
$creationUE->execute(array(
|
||||
':nom' => $nom,
|
||||
':libelle' => $libelle
|
||||
|
|
|
@ -36,27 +36,27 @@ class userRepo extends DBAccess{
|
|||
|
||||
/* [2] Cas où on cherche si un étudiant est inscrit à un semestre
|
||||
==============================================================*/
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ".
|
||||
"FROM utilisateur as u, appartenance as app ".
|
||||
"WHERE u.identifiant = app.id_etudiant ".
|
||||
"AND u.identifiant = :identifiant ".
|
||||
"AND app.id_semestre = :semestre");
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id
|
||||
FROM utilisateur as u, appartenance as app
|
||||
WHERE u.identifiant = app.id_etudiant
|
||||
AND u.identifiant = :identifiant
|
||||
AND app.id_semestre = :semestre");
|
||||
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
|
||||
|
||||
}elseif( is_bool($semestre_pair) && $annee != null ){
|
||||
|
||||
/* [2] Cas où on cherche si un enseignant enseigne l'année donnée
|
||||
==============================================================*/
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id ".
|
||||
"FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue ".
|
||||
"WHERE u.identifiant = ens.id_enseignant ".
|
||||
"AND ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
|
||||
"AND mcc_ue.id_semestre = s.id_semestre ".
|
||||
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT DISTINCT u.identifiant as id
|
||||
FROM utilisateur as u, enseignement as ens, semestre as s, mcc_module as mcc_m, mcc_ue
|
||||
WHERE u.identifiant = ens.id_enseignant
|
||||
AND ens.id_mcc_module = mcc_m.id_mcc_module
|
||||
AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue
|
||||
AND mcc_ue.id_semestre = s.id_semestre
|
||||
|
||||
"AND u.identifiant = :identifiant ".
|
||||
"AND s.rang % 2 = :semestre_pair ".
|
||||
"AND s.annee = :annee");
|
||||
AND u.identifiant = :identifiant
|
||||
AND s.rang % 2 = :semestre_pair
|
||||
AND s.annee = :annee");
|
||||
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
|
||||
|
||||
}else // si les paramètres sont pas bons
|
||||
|
@ -131,8 +131,8 @@ class userRepo extends DBAccess{
|
|||
|
||||
/* [3] On créé le nouvel utilisateur
|
||||
=================================================================================================*/
|
||||
$creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits) ".
|
||||
"VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
|
||||
$creationUtilisateur = DataBase::getPDO()->prepare("INSERT INTO utilisateur(identifiant, prenom, nom, mail, mdp, droits)
|
||||
VALUES(:identifiant, :prenom, :nom, :mail, :mdp, :droits)");
|
||||
$creationUtilisateur->execute(array(
|
||||
':identifiant' => $identifiant,
|
||||
':prenom' => $prenom,
|
||||
|
|
|
@ -54,9 +54,15 @@
|
|||
error_reporting(-1);
|
||||
}
|
||||
|
||||
debug();
|
||||
// function distinctArray($inArray){
|
||||
// $outArray = array();
|
||||
|
||||
// foreach($inArray as $value) // pour chaque élément du tableau d'entrée, on l'ajoute uniquement si aucune entrée du tableau de sortie n'a la même valeur
|
||||
// if( !in_array($value, $outArray) )
|
||||
// array_push($outArray, $value);
|
||||
|
||||
// return $outArray;
|
||||
// }
|
||||
|
||||
|
||||
function secure_sha1($text){
|
||||
|
@ -123,77 +129,67 @@
|
|||
* @return toutOK<Boolean> VRAI si variables bonnes / FAUX sinon
|
||||
*
|
||||
*/
|
||||
function checkParam($tabVar, $tabType, $tabForm) {
|
||||
// FORMAT DE $tabVar
|
||||
//
|
||||
// $tabVar = array(
|
||||
// $stringVar, // chaine de caractères
|
||||
// $integerVar, // entier
|
||||
// $numericVar, // nombre (sous forme d'entier ou de chaine)
|
||||
// $arrayVar // tableau
|
||||
// );
|
||||
function checkParam($variable, $type){
|
||||
$checker = isset($variable);
|
||||
|
||||
// FORMAT DE $tabType
|
||||
//
|
||||
// $tabType = array(
|
||||
// 'string', // chaine de caractères
|
||||
// 'int', // entier
|
||||
// 'numeric', // nombre (sous forme d'entier ou de chaine)
|
||||
// 'array' // tableau
|
||||
// );
|
||||
|
||||
|
||||
// FORMAT DE $tabForm
|
||||
//
|
||||
// $tabType = array(
|
||||
// '/^[a-z0-9]{1,5}$/i', // chaine de caractères
|
||||
// '/^[0-9]+$/', // entier
|
||||
// '/^[0-9]+$/', // nombre (sous forme d'entier ou de chaine)
|
||||
// '??????' // tableau
|
||||
// );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* [1] Vérification de l'intégrité des tableaux
|
||||
=============================================================================*/
|
||||
$areArrays = is_array($tabVar) && is_array($tabForm); // si ce sont bien des tabeaux
|
||||
$areNEmpty = $areArrays && count($tabVar) > 0; // si ils ne sont pas vides
|
||||
$haveEqLen = $areNEmpty && count($tabVar) == count($tabForm); // si ils ont la même taille
|
||||
|
||||
if( !$haveEqLen ) // si toutes les conditions ne sont pas vérifiées
|
||||
return false; // on retourne faux, car ne pourra pas être vrai
|
||||
|
||||
|
||||
/* [2] Pour chaque variable on vérifie les données
|
||||
=============================================================================*/
|
||||
$checker = false; // on définit le checker à VRAI
|
||||
|
||||
// Vérification des types
|
||||
|
||||
// pour chaque variable
|
||||
for($i = 0 ; $i < count($tabVar) ; $i++) {
|
||||
|
||||
switch($tabType[$i]) {
|
||||
|
||||
case 'string': if( is_string($tabForm[$i]) )
|
||||
$checker = is_string($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]);
|
||||
// traitement en fonction du type
|
||||
switch($type){
|
||||
case 'utilisateur.identifiant':
|
||||
return $checker && is_string($variable) && preg_match('/^[\w -]{3,50}$/i', $variable);
|
||||
break;
|
||||
case 'int': if( is_string($tabForm[$i]) )
|
||||
$checker = is_int($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]);
|
||||
case '<string>':
|
||||
return $checker && is_string($variable);
|
||||
break;
|
||||
case 'numeric': if( is_string($tabForm[$i]) )
|
||||
$checker = is_numeric($tabVar[$i]) && preg_match($tabForm[$i], (String) $tabVar[$i]);
|
||||
case '<int>':
|
||||
return $checker && is_int($variable);
|
||||
break;
|
||||
case 'array': if( is_numeric($tabForm[$i]) )
|
||||
$checker = is_array($tabVar[i]) && count($tabVar[$i]) > 0;
|
||||
case '<numeric>':
|
||||
return $checker && is_numeric($variable);
|
||||
break;
|
||||
case '<array>':
|
||||
return $checker && is_array($variable);
|
||||
break;
|
||||
case '<boolean>':
|
||||
return $checker && is_bool($variable);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*function checkParamBIS( ...$checkIt ) {
|
||||
|
||||
|
||||
// checkIt[] Tableau | checkIT[][] Types des Variables | checkIt[][][] Formats des variables | checkIt[][][][] Valeur des varialbes
|
||||
|
||||
|
||||
$checker = false;
|
||||
|
||||
for( $i = 0; $i < func_num_args(); $i++) {
|
||||
|
||||
for( $j = 0; $j < sizeof( $checkIt[$i] ); $j++) {
|
||||
|
||||
switch ($checkIt[$i][$j]) {
|
||||
|
||||
case 'string': if( is_string( $checkIt[$i][$j][$j][$j] ) )
|
||||
$checker = is_string( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] );
|
||||
break;
|
||||
case 'int': if( is_string( $checkIt[$i][$j][$j][$j]) )
|
||||
$checker = is_int( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] );
|
||||
break;
|
||||
case 'numeric': if( is_string( $checkIt[$i][$j][$j][$j]]) )
|
||||
$checker = is_numeric( $checkIt[$i][$j][$j][$j] ) && preg_match( $checkIt[$i][$j][$j], (String) $checkIt[$i][$j][$j][$j] );
|
||||
break;
|
||||
case 'array': if( is_numeric( $checkIt[$i][$j][$j][$j]) )
|
||||
$checker = is_array( $checkIt[$i][$j][$j][$j] ) && count( $checkIt[$i][$j][$j] ) > 0;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return $checker;
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,21 +1,227 @@
|
|||
<!--
|
||||
|
||||
|
||||
|
||||
/********************************/
|
||||
/* GESTION DE L'AFFINAGE PAR UE */
|
||||
/********************************/
|
||||
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], #CONTAINER > section[name] > table.partlist[name=semestre], #CONTAINER > section[name] > table.partlist[name=formation]");
|
||||
|
||||
for( var i = 0 ; i < partList.length ; i++ ){
|
||||
|
||||
partList[i].addEventListener('click', function(e){
|
||||
var tableauParent = e.target.parentNode.parentNode.parentNode;
|
||||
|
||||
if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){
|
||||
|
||||
/* SI c'est une affinage par FORMATION */
|
||||
if( tableauParent.getAttribute('name') == 'formation' ){
|
||||
pageM.vars[1] = 'f:'+e.target.dataset.value;
|
||||
if( pageM.vars.length > 2 ) // si un deuxième affinage existe, on le supprime lors du choix de la formation
|
||||
pageM.vars.pop();
|
||||
}
|
||||
|
||||
/* SI c'est une affinage par SEMESTRE */
|
||||
if( tableauParent.getAttribute('name') == 'semestre' )
|
||||
pageM.vars[2] = 's:'+e.target.dataset.value;
|
||||
|
||||
/* SI c'est un affinage par UE */
|
||||
if( tableauParent.getAttribute('name') == 'UE' )
|
||||
pageM.vars[2] = 'u:'+e.target.dataset.value;
|
||||
|
||||
|
||||
// si la formation n'est pas définie, on l'active
|
||||
if( !/^f:/.test(pageM.vars[1]) )
|
||||
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
|
||||
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
|
||||
|
||||
// si on a '*' comme valeur, on l'enlève
|
||||
if( /\*$/.test(pageM.vars[2]) )
|
||||
pageM.vars.pop();
|
||||
|
||||
reload();
|
||||
}
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***********************************************/
|
||||
/* GESTION DE LE FILTRAGE POUR LES ENSEIGNANTS */
|
||||
/***********************************************/
|
||||
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
|
||||
// on récupère les liens
|
||||
var groupLinks = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table.basic table.basic tr td span.link.group');
|
||||
|
||||
for( var i = 0 ; i < groupLinks.length ; i++ ) // on active un évènement pour le clic sur les nom de groupes
|
||||
groupLinks[i].addEventListener('click', function(e){
|
||||
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' );
|
||||
|
||||
if( e.target.className == 'link group' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){ // s'il s'agit bien d'un nom de groupe
|
||||
console.log('id_groupe: '+ e.target.dataset.grp +', id_controle: '+ e.target.dataset.ctrl );
|
||||
}
|
||||
}, false);
|
||||
|
||||
console.log(groupLinks);
|
||||
|
||||
// on créé l'évènement de confirmation de la saisie
|
||||
saisieObj[i].button.addEventListener('click', function(e){
|
||||
// s'il s'agit bien d'un bouton de validation, que le <input> associé a data-i existante et que ça match correctement
|
||||
if( /confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && saisieObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
|
||||
var obj = saisieObj[e.target.parentNode.children[0].dataset.i];
|
||||
|
||||
var request = { // on définit la requête pour API
|
||||
level_0: 'career',
|
||||
level_1: 'saisieNote',
|
||||
etudiant: obj.userid,
|
||||
controle: obj.ctrlid,
|
||||
note: obj.inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
|
||||
};
|
||||
|
||||
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
|
||||
if( response.request == 'success' ) reload();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}, false);
|
||||
|
||||
|
||||
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
|
||||
toutEnregistrerBtn.addEventListener('click', function(e){
|
||||
|
||||
var nbRequest = 0;
|
||||
var nbSuccess = 0;
|
||||
|
||||
// on sélectionne toutes les valeurs contenues dans les lignes actives
|
||||
for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
|
||||
|
||||
nbRequest += 1;
|
||||
|
||||
var request = { // on définit la requête pour API
|
||||
level_0: 'career',
|
||||
level_1: 'saisieNote',
|
||||
etudiant: saisieObj[i].userid,
|
||||
controle: saisieObj[i].ctrlid,
|
||||
note: saisieObj[i].inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
|
||||
};
|
||||
|
||||
API.send(request, function(response){ // on gère la réponse de API
|
||||
if( response.request == 'success' ) nbSuccess += 1; // si on a une réponse positive, on incrémente le nombre de succès
|
||||
|
||||
// si tout est validé, on recharge la page
|
||||
if( nbSuccess == nbRequest) reload();
|
||||
});
|
||||
|
||||
}}
|
||||
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -27,7 +233,4 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ /
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-->
|
|
@ -2,78 +2,13 @@
|
|||
|
||||
|
||||
|
||||
// si aucune sous-partie n'est active, on active la première
|
||||
if( document.querySelector('#CONTAINER hgroup.active') == null )
|
||||
selectSubSection( document.querySelector('#CONTAINER hgroup') );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Gestion du déroulement des tableaux des groupes */
|
||||
function afficherCacherGroupes(e){
|
||||
e.preventDefault();
|
||||
|
||||
// s'il s'agit de la case "Voir plus"
|
||||
if( e.target.className == 'more' ){
|
||||
var thead = e.target.parentNode.parentNode.parentNode.children[0];
|
||||
thead.className = (thead.className=='active') ? '' : 'active';
|
||||
}
|
||||
}
|
||||
|
||||
if( !afficherCacherGroupesDefined )
|
||||
DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false);
|
||||
|
||||
var afficherCacherGroupesDefined = true;
|
||||
|
||||
|
||||
|
||||
|
||||
/* on définit le Drag'n'Drop */
|
||||
// var dnd = new DragnDrop();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* GESTION DU DRAG N DROP */
|
||||
/* GESTION DU DEPLACEMENT D'ELEVES */
|
||||
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin
|
||||
|
||||
// var members = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td:not(.more)');
|
||||
// for( var i = 0 ; i < members.length ; i++ )
|
||||
// dnd.setDraggable(members[i]);
|
||||
|
||||
// var groups = document.querySelectorAll('#CONTAINER section[name=movestudents] table thead th:first-child');
|
||||
// for( var i = 0 ; i < groups.length ; i++ )
|
||||
// dnd.setDroppable(groups[i]);
|
||||
|
||||
// dnd.init(function(input, output){ // on demande un déplacement
|
||||
// var id_etudiant = input.children[0].children[0].innerHTML;
|
||||
// var nom_groupe = output.children[0].innerHTML;
|
||||
|
||||
// var request = { // on définit la requête pour API
|
||||
// level_0: 'groups',
|
||||
// level_1: 'move',
|
||||
// etudiant: id_etudiant,
|
||||
// groupe: nom_groupe
|
||||
// };
|
||||
|
||||
// // l'ordre n'est pas alphabétique mais va à la fin
|
||||
|
||||
// API.send(request, function(response){ // on gère la réponse de API
|
||||
// if( response.request == 'success' ){
|
||||
// input.parentNode.removeChild( input ); // on supprime le membre de l'ancien groupe
|
||||
|
||||
// var tableauDestination = output.parentNode.parentNode.parentNode.children[1]; // <tbody> destination
|
||||
// tableauDestination.appendChild( input ); // on ajoute le membre au nouveau groupe
|
||||
|
||||
// // selectSection( document.querySelector('#MENU span[data-link=groups]') );
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
//
|
||||
|
||||
/* DEPLACEMENT A L'AIDE DES <SELECT> */
|
||||
var deplacementElements = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td select');
|
||||
var deplacementObj = [];
|
||||
|
@ -87,6 +22,7 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
|||
select: deplacementElements[i], // le <select> en question
|
||||
initval: deplacementElements[i].value, // la valeur initiale du <select>
|
||||
button: deplacementElements[i].parentNode.children[1], // le bouton de validation pour ce <select>
|
||||
streid: deplacementElements[i].dataset.stre, // l'UID du semestre associé au groupe
|
||||
userid: deplacementElements[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce <select>
|
||||
};
|
||||
|
||||
|
@ -97,9 +33,9 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
|||
var obj = deplacementObj[e.target.dataset.i];
|
||||
|
||||
if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton)
|
||||
addClass( obj.button, 'active' );
|
||||
addClass( obj.select, 'active' );
|
||||
else
|
||||
remClass( obj.button, 'active' );
|
||||
remClass( obj.select, 'active' );
|
||||
|
||||
}
|
||||
}, false);
|
||||
|
@ -108,18 +44,19 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
|||
// 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( /^valider_deplacement/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && deplacementObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
|
||||
if( /^confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && deplacementObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
|
||||
var obj = deplacementObj[e.target.parentNode.children[0].dataset.i];
|
||||
|
||||
var request = { // on définit la requête pour API
|
||||
level_0: 'groups',
|
||||
level_1: 'move',
|
||||
etudiant: obj.userid,
|
||||
groupe: obj.select.value
|
||||
groupe: obj.select.value,
|
||||
semestre: obj.streid
|
||||
};
|
||||
|
||||
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
|
||||
if( response.request == 'success' ) selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
|
||||
if( response.request == 'success' ) reload();
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -130,27 +67,71 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
|||
|
||||
}
|
||||
|
||||
/***************************************************/
|
||||
/*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/
|
||||
/***************************************************/
|
||||
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select");
|
||||
|
||||
/**********************************************************************/
|
||||
/*** 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 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
|
||||
// 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();
|
||||
}
|
||||
|
||||
selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
|
||||
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
|
||||
/* 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);
|
||||
}, 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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
-->
|
572
page/career.php
572
page/career.php
|
@ -5,22 +5,45 @@ require_once __ROOT__.'/manager/modules.php';
|
|||
require_once __ROOT__.'/manager/career.php';
|
||||
|
||||
|
||||
|
||||
|
||||
/*** GESTION DES PARAMETRES OPTIONNELS ***/
|
||||
|
||||
$postVars = array(); // on récupère les variables post
|
||||
|
||||
foreach($_POST as $k=>$v)
|
||||
array_push($postVars, $k);
|
||||
|
||||
/* GESTION GROUPE OPTIONNEL */
|
||||
if( isset($postVars[1]) && is_string($postVars[1]) && strlen($postVars[1]) > 1 )
|
||||
$groupeOpt = $postVars[1];
|
||||
else
|
||||
// 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;
|
||||
|
||||
/****************************************
|
||||
* *
|
||||
|
@ -39,16 +62,15 @@ require_once __ROOT__.'/manager/career.php';
|
|||
|
||||
|
||||
|
||||
<!-- mes UEs -->
|
||||
<!-- mes contrôles -->
|
||||
|
||||
<?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
|
||||
|
||||
$request = new stdClass(); $answer = new stdClass();
|
||||
debug();
|
||||
|
||||
$request->level_1 = 'getNotesEtudiant';
|
||||
$request->etudiant = $_SESSION['identifiant'];
|
||||
|
@ -59,14 +81,415 @@ 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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
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
|
||||
|
||||
if( $ueOpt == null || $UE['nom'] == $ueOpt ){ // on affiche l'UE en fonction du paramètre passé par l'URL
|
||||
|
||||
echo '</thead></table>';
|
||||
foreach($UE['modules'] as $module){ // pour chaque module
|
||||
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 '<td><span class=link>'.$controle['intitule'].'</span></td>';
|
||||
|
||||
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
|
||||
echo '<td><span class=unstressed>Pas de note</span></td>';
|
||||
else // si une note, alors on l'affiche
|
||||
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
|
||||
|
||||
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
||||
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
echo '</tbody>';
|
||||
}
|
||||
echo '</table>';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}else
|
||||
echo "<section name='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 '</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>";
|
||||
echo '<tr>';
|
||||
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th>';
|
||||
echo '</tr>';
|
||||
|
||||
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
|
||||
|
@ -94,7 +517,8 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}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>";
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -112,110 +536,6 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
|
|||
|
||||
|
||||
|
||||
/***********************************/
|
||||
/*** LES UE (version enseignant) ***/
|
||||
/***********************************/
|
||||
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
|
||||
|
||||
$request = new stdClass(); $answer = new stdClass();
|
||||
debug();
|
||||
|
||||
$request->level_1 = 'getControlesEnseignant';
|
||||
$request->enseignant = $_SESSION['identifiant'];
|
||||
$request->semestre = $_SESSION['semestre'];
|
||||
$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' title='Contrôles' class='basic'>";
|
||||
|
||||
if( count($answer->UEs) > 0 ){ // si au moins un UE
|
||||
|
||||
foreach($answer->UEs as $UE){ // pour chaque UE
|
||||
echo "<table class='basic col4'>";
|
||||
echo "<thead>";
|
||||
echo '<tr>';
|
||||
echo "<th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '</thead></table>';
|
||||
if( count($UE['modules']) > 0 ){ // s'il y a au moins un module
|
||||
|
||||
foreach($UE['modules'] as $module){ // pour chaque module
|
||||
echo "<table class='basic col4'><thead>";
|
||||
echo '<tr><th colspan=4>'.$module['nom'].' - '.$module['libelle'].'</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>'.$controle['intitule'].'</span></td>';
|
||||
|
||||
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
||||
|
||||
if( count($controle['notes']) == 0 ) // 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> 10 <span class=unstressed>/</span> 20</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>";
|
||||
|
||||
foreach($controle['notes'] as $note){ // on affiche la liste des élèves avec leurs notes
|
||||
echo "<tr>";
|
||||
echo "<td><span class='link group' data-grp='".$note['id_groupe']."' data-ctrl='".$controle['id']."'>".$note['groupe']."</span></td>";
|
||||
if( $note['nb_notes'] == 1 )
|
||||
echo "<td>".$note['nb_notes']." <span class=unstressed>note</span></td>";
|
||||
else
|
||||
echo "<td>".$note['nb_notes']." <span class=unstressed>notes</span></td>";
|
||||
|
||||
echo "<td><span class=unstressed>Allant de</span> ".$note['min']." <span class=unstressed>à</span> ".$note['max']."</td>";
|
||||
echo "<td><span class=unstressed>Moyenne de </span>".number_format($note['moyenne'], 2)." <span class=unstressed>/</span> ".$controle['base']."</td>";
|
||||
echo "</tr>";
|
||||
}
|
||||
|
||||
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 '</table>';
|
||||
}
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}else
|
||||
echo "<section name='controlesenseignants' title='Contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
409
page/groups.php
409
page/groups.php
|
@ -18,25 +18,28 @@ require_once __ROOT__.'/manager/groups.php';
|
|||
|
||||
/*** GESTION DES PARAMETRES OPTIONNELS ***/
|
||||
|
||||
$postVars = array(); // on récupère les variables post
|
||||
|
||||
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
|
||||
// on initialise les paramètres optionnels
|
||||
$semestreOpt = null;
|
||||
|
||||
|
||||
/* GESTION GROUPES OPTIONNEL */
|
||||
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
|
||||
$groupeOpt = $postVars[2];
|
||||
else
|
||||
$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 ***/
|
||||
|
@ -58,7 +61,7 @@ if( permission('student') ){ // si connecté && utilisateur
|
|||
|
||||
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 '<th>Identifiant</td>';
|
||||
|
@ -99,115 +102,12 @@ if( permission('student') ){ // si connecté && utilisateur
|
|||
echo '</section>';
|
||||
////////////////////////////////////////////////////////
|
||||
}else
|
||||
echo "<section name='studentallgroups' title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
|
||||
echo "<section name='studentallgroups' data-title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/************************/
|
||||
/*** TOUS LES GROUPES ***/
|
||||
/************************/
|
||||
/*
|
||||
* PROFESSEUR -> affichage des semestres en cours
|
||||
* ADMINISTRATEUR -> affichage des semestres en cours
|
||||
*
|
||||
*
|
||||
*/
|
||||
if( false && permission('teacher') ){ // si connecté && prof
|
||||
|
||||
$request = new stdClass();
|
||||
$answer = new stdClass();
|
||||
|
||||
$request->level_1 = 'grouplistForYear';
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer);
|
||||
|
||||
if( $answer->request == 'success' ){ // si pas d'erreur
|
||||
//////////////////////////////////////////////////////////////
|
||||
echo "<section name='allgroups' title='tous les groupes' class='basic'>";
|
||||
|
||||
/* select pour SEMESTRES */
|
||||
$lastSemestre = null;
|
||||
|
||||
echo "<select name='semestre'>";
|
||||
echo "<option value='*'>Tous les semestres</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
|
||||
|
||||
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné
|
||||
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>';
|
||||
else // sinon on affiche normalement
|
||||
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>';
|
||||
$lastSemestre = $group['semestre'];
|
||||
}
|
||||
}
|
||||
echo "<select>";
|
||||
|
||||
/* select pour GROUPES */
|
||||
$lastGroupe = null;
|
||||
|
||||
echo "<select name='groupe'>";
|
||||
echo "<option value='*'>Tous les groupes</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastGroupe == null || $lastGroupe != $group->nom ){
|
||||
|
||||
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné
|
||||
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>';
|
||||
else
|
||||
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
|
||||
|
||||
$lastGroupe = $group['nom'];
|
||||
}
|
||||
}
|
||||
echo "<select>";
|
||||
|
||||
|
||||
echo "<table class='basic col5'><thead><tr>";
|
||||
echo '<th>Identifiant</td>';
|
||||
echo '<th>Prenom</td>';
|
||||
echo '<th>Nom</td>';
|
||||
echo '<th>Semestre</td>';
|
||||
echo '<th>Groupe</td>';
|
||||
echo '</tr></thead></table>';
|
||||
|
||||
foreach($answer->grouplist as $group){ // pour chaque groupe
|
||||
|
||||
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
|
||||
|
||||
echo "<table class='basic margin col5'>";
|
||||
|
||||
echo '<tbody>';
|
||||
|
||||
|
||||
// pour chaque utilisateur
|
||||
foreach($group['userlist'] as $user){
|
||||
echo '<tr>';
|
||||
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
|
||||
echo '<td>'.$user['prenom'].'</td>';
|
||||
echo '<td>'.$user['nom'].'</td>';
|
||||
echo '<td>'.$group['semestre'].'</td>';
|
||||
echo '<td>Groupe <span class=stressed>'.$group['nom'].'</span></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
// echo '<tr><td colspan=5 class=more></td></tr>';
|
||||
|
||||
echo '</tbody>';
|
||||
|
||||
echo '</table>';
|
||||
|
||||
}
|
||||
}
|
||||
echo '</section>';
|
||||
////////////////////////////////////////////////////////
|
||||
}else
|
||||
echo "<section name='allgroups' title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
|
||||
|
||||
} ?>
|
||||
|
||||
|
||||
|
||||
|
@ -216,11 +116,6 @@ if( false && permission('teacher') ){ // si connecté && prof
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- mon groupe -->
|
||||
|
||||
<?php
|
||||
/******************/
|
||||
/*** MON GROUPE ***/
|
||||
/******************/
|
||||
|
@ -252,7 +147,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
|
|||
|
||||
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
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 '<tr>';
|
||||
|
@ -283,9 +178,9 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
|
|||
echo '</section>';
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
}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
|
||||
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>';
|
||||
} ?>
|
||||
|
@ -309,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
|
||||
|
||||
$request = new stdClass(); $answer = new stdClass();
|
||||
$request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/
|
||||
|
||||
$request->level_1 = 'grouplistForTeacher';
|
||||
$request->enseignant = $_SESSION['identifiant'];
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer);
|
||||
|
||||
if( $answer->request == 'success' && count($answer->grouplist) > 0 ){ // 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'>";
|
||||
echo "<option value='*'>Tous les semestres</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
|
||||
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
|
||||
$ListeUIDFormations = array();
|
||||
$ListeUIDSemestres = array();
|
||||
$ListeUIDGroupes = array();
|
||||
|
||||
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné
|
||||
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>';
|
||||
// Vérification de la formation si elle est définie
|
||||
$verificationUIDFormations = array();
|
||||
foreach($answer->grouplist as $groupe) // on récupère la liste des UID de FORMATIONS
|
||||
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
|
||||
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>';
|
||||
echo "<td data-value='".$groupe['id_formation']."'>".$groupe['formation'].'</td>';
|
||||
|
||||
$lastSemestre = $group['semestre'];
|
||||
}
|
||||
}
|
||||
echo "<select>";
|
||||
// on ajoute la formation à la liste pour ne pas la répéter
|
||||
array_push($ListeUIDFormations, $groupe['id_formation']);
|
||||
|
||||
/* 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 "<option value='*'>Tous les groupes</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastGroupe == null || $lastGroupe != $group->nom ){
|
||||
if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
|
||||
else echo "<option value='*'>Tous les groupes</option>";
|
||||
|
||||
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
|
||||
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
|
||||
|
||||
if( $groupe['id'] == $groupeOpt ) // si c'est le groupe séléctionné
|
||||
echo "<option value='".$groupe['id']."' selected>".$groupe['nom'].'</option>';
|
||||
else // sinon on affiche normalement
|
||||
echo "<option value='".$groupe['id']."'>".$groupe['nom'].'</option>';
|
||||
|
||||
|
||||
// on ajoute le semestre à la liste pour ne pas le répéter
|
||||
array_push($ListeUIDSemestres, $groupe['id']);
|
||||
|
||||
}}
|
||||
echo "</select>";
|
||||
|
||||
|
||||
|
||||
|
||||
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>';
|
||||
|
@ -367,6 +317,8 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
|||
|
||||
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
|
||||
|
||||
echo "<table class='basic margin col5'>";
|
||||
|
@ -392,10 +344,12 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
echo '</section>';
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
}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>";
|
||||
|
||||
} ?>
|
||||
|
||||
|
@ -419,63 +373,93 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
|
|||
$request = new stdClass();
|
||||
$answer = new stdClass();
|
||||
|
||||
/* ce jeu de données sert à récupérer la liste des groupes (même quand on applique un filtrage) */
|
||||
$requestPourListeGroupes = new stdClass();
|
||||
$answerPourListeGroupes = new stdClass();
|
||||
|
||||
|
||||
$request->level_1 = 'grouplistForYear';
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
|
||||
|
||||
|
||||
$requestPourListeGroupes->level_1 = 'grouplistForYear';
|
||||
$requestPourListeGroupes->annee = $_SESSION['annee'];
|
||||
groups_switch_level_1($requestPourListeGroupes, $answerPourListeGroupes); // on fait la requête pour avoir la liste des groupes quel que soit le filtrage
|
||||
|
||||
|
||||
if( $answer->request == 'success' && $answerPourListeGroupes->request == 'success' ){ // si pas d'erreur
|
||||
if( $answer->request == 'success' && $answer->request == 'success' ){ // si pas d'erreur
|
||||
//////////////////////////////////////////////////////////////
|
||||
echo "<section name='movestudents' title='Tous les groupes' class='basic'>";
|
||||
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'>";
|
||||
|
||||
/* select pour SEMESTRES */
|
||||
$lastSemestre = null;
|
||||
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
|
||||
$ListeUIDFormations = array();
|
||||
$ListeUIDSemestres = array();
|
||||
$ListeUIDGroupes = array();
|
||||
|
||||
echo "<select name='semestre'>";
|
||||
echo "<option value='*'>Tous les semestres</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
|
||||
// Vérification de la formation si elle est définie
|
||||
$verificationUIDFormations = array();
|
||||
foreach($answer->grouplist as $groupe) // on récupère la liste des UID de FORMATIONS
|
||||
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é
|
||||
echo "<option value='".$group['semestre']."' selected>".$group['semestre'].'</option>';
|
||||
else // sinon on affiche normalement
|
||||
echo "<option value='".$group['semestre']."'>".$group['semestre'].'</option>';
|
||||
// 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];
|
||||
|
||||
$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 "<option value='*'>Tous les groupes</option>";
|
||||
foreach($answer->grouplist as $group){
|
||||
if( $lastGroupe == null || $lastGroupe != $group['nom'] ){
|
||||
if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
|
||||
else echo "<option value='*'>Tous les groupes</option>";
|
||||
|
||||
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>';
|
||||
/* On récupère la liste des GROUPES en accord avec la FORMATION et le SEMESTRE sélectionnée */
|
||||
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
|
||||
|
||||
$lastGroupe = $group['nom'];
|
||||
}
|
||||
}
|
||||
echo "<select>";
|
||||
// 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>';
|
||||
|
||||
// on ajoute le semestre à la liste pour ne pas le répéter
|
||||
array_push($ListeUIDGroupes, $groupe['id']);
|
||||
}}
|
||||
echo "</select>";
|
||||
|
||||
|
||||
|
||||
|
@ -483,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
|
||||
|
||||
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
|
||||
|
||||
echo "<table class='basic col4'>";
|
||||
|
@ -509,15 +495,17 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
|
|||
// echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
|
||||
// changement de groupe
|
||||
echo '<td>';
|
||||
echo "<select class='deplacement_groupe'>";
|
||||
foreach($answerPourListeGroupes->grouplist as $groupemodif) // pour tous les groupes
|
||||
if( $groupemodif['semestre'] == $group['semestre'] ) // si c'est un groupe du même semestre
|
||||
if( $groupemodif['nom'] == $group['nom'] ) // s'il s'agit du groupe courant, on met en sélection
|
||||
echo "<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 // s'il s'agit d'un autre groupe, c'est normal
|
||||
else
|
||||
echo "<option value='".$groupemodif['nom']."'>".$groupemodif['nom']."</option>";
|
||||
|
||||
echo '</select>';
|
||||
echo "<div class='valider_deplacement' data-info='cliquer pour valider'></div>";
|
||||
echo "<div class='confirm'>déplacer</div>";
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
@ -529,11 +517,13 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
|
|||
echo '</table>';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
echo '</section>';
|
||||
////////////////////////////////////////////////////////
|
||||
}else
|
||||
echo "<section name='movestudents' title='Tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
|
||||
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
|
||||
}
|
||||
|
||||
} ?>
|
||||
|
@ -544,6 +534,7 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
|
|||
/*********************************/
|
||||
/*** IMPORTATION FICHIER EXCEL ***/
|
||||
/*********************************/
|
||||
|
||||
if( permission('admin') ){
|
||||
|
||||
require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("manager", "xlsx.php"));
|
||||
|
|
|
@ -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>
|
||||
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>
|
||||
|
@ -37,7 +37,7 @@ require_once __ROOT__.'/manager/groups.php';
|
|||
<?php /* [2] Notifications
|
||||
=======================================================*/
|
||||
if( connected() ){ // si on est connecté ?>
|
||||
<section name='notifications' title='Notifications'>
|
||||
<section name='notifications' data-title='Notifications'>
|
||||
<p>Notification 3</p>
|
||||
<p>Notification 2</p>
|
||||
<p>Notification 1</p>
|
||||
|
|
341
page/modules.php
341
page/modules.php
|
@ -3,6 +3,33 @@ require_once __ROOT__.'/manager/security.php';
|
|||
require_once __ROOT__.'/manager/groups.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" *
|
||||
|
@ -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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
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){
|
||||
|
||||
if( $ueOpt == null || $UE['nom'] == $ueOpt ){
|
||||
|
||||
echo "<table class='basic'>";
|
||||
echo "<thead class='active'>";
|
||||
echo "<thead class='normal'>";
|
||||
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 '</thead>';
|
||||
echo '<tbody>';
|
||||
|
@ -54,16 +95,40 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
|
|||
|
||||
echo '</tbody>';
|
||||
echo '</table>';
|
||||
|
||||
}
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}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 -->
|
||||
|
||||
<?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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
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 "<thead class='active'>";
|
||||
echo "<thead>";
|
||||
echo '<tr>';
|
||||
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
|
||||
echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
|
||||
echo '</tr>';
|
||||
echo '</thead>';
|
||||
echo '<tbody>';
|
||||
|
@ -96,22 +254,52 @@ if( permission('teacher') ){ // si l'utilisateur est un prof
|
|||
echo '<tr>';
|
||||
echo '<td>'.$MODULE['nom'].'</td>';
|
||||
echo '<td>'.$MODULE['libelle'].'</td>';
|
||||
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
echo '</tbody>';
|
||||
echo '</table>';
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}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 -->
|
||||
|
||||
<?php
|
||||
|
@ -127,15 +315,113 @@ if( permission('admin') ){ // si l'utilisateur est un admin
|
|||
|
||||
modules_switch_level_1($request, $answer);
|
||||
|
||||
|
||||
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 "<thead class='active'>";
|
||||
echo "<thead>";
|
||||
echo '<tr>';
|
||||
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
|
||||
echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
|
||||
echo '</tr>';
|
||||
echo '</thead>';
|
||||
echo '<tbody>';
|
||||
|
@ -143,17 +429,42 @@ if( permission('admin') ){ // si l'utilisateur est un admin
|
|||
echo '<tr>';
|
||||
echo '<td>'.$MODULE['nom'].'</td>';
|
||||
echo '<td>'.$MODULE['libelle'].'</td>';
|
||||
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
require_once __ROOT__.'/manager/database.php';
|
||||
debug();
|
||||
$completeModuleList = DataBase::getInstance()->getExhaustiveModuleList();
|
||||
// saisie d'un nouveau module
|
||||
echo "<tr class='grayscale'><td>";
|
||||
echo "<select name='modules'>";
|
||||
foreach($completeModuleList as $module)
|
||||
echo "<option value='".$module['id']."'>".$module['nom']." - ".$module['libelle']."</option>";
|
||||
echo "</select>";
|
||||
echo "</td><td>";
|
||||
echo "<input style='min-width:20%;' type='text' placeholder='Nom'>";
|
||||
echo "<input style='min-width:50%;' type='text' placeholder='Libellé'>";
|
||||
echo "</td><td>";
|
||||
echo "<div class='confirm active'>Ajouter le module</div>";
|
||||
echo "</td></tr>";
|
||||
|
||||
echo '</tbody>';
|
||||
echo '</table>';
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}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>";
|
||||
|
||||
} ?>
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ require_once __ROOT__.'/manager/security.php';
|
|||
/*** PROFILE ***/
|
||||
/***************/
|
||||
if( connected() ){ // si l'utilisateur est connecté
|
||||
echo "<section name='myprofile' title='Profil'>";
|
||||
echo "<section name='myprofile' data-title='Profil'>";
|
||||
echo 'profil';
|
||||
echo '</section>';
|
||||
|
||||
|
|
Binary file not shown.
|
@ -37,7 +37,7 @@
|
|||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="1.3244222"
|
||||
inkscape:cx="410.94807"
|
||||
inkscape:cx="264.4691"
|
||||
inkscape:cy="117.90095"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
|
@ -55,5 +55,5 @@
|
|||
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:#666666"
|
||||
style="fill:#2dcc70;fill-opacity:1"
|
||||
transform="translate(-17.600012,-17.6)" /></svg>
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
@ -1,11 +1,11 @@
|
|||
| css | 954 |
|
||||
| js | 822 |
|
||||
| manager | 2011 |
|
||||
| repo | 407 |
|
||||
| page | 919 |
|
||||
| _JS | 98 |
|
||||
| css | 1036 |
|
||||
| js | 866 |
|
||||
| manager | 1774 |
|
||||
| repo | 1248 |
|
||||
| page | 1235 |
|
||||
| _JS | 250 |
|
||||
| API.js | 77 |
|
||||
| API.php | 104 |
|
||||
| index.php | 141 |
|
||||
+-----------+-------+
|
||||
| TOTAL | 5533 |
|
||||
| TOTAL | 6731 |
|
Binary file not shown.
207
xdoc/sid.sql
207
xdoc/sid.sql
|
@ -3,7 +3,7 @@
|
|||
-- http://www.phpmyadmin.net
|
||||
--
|
||||
-- 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 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_groupe_2` (`id_groupe`),
|
||||
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`:
|
||||
|
@ -56,15 +56,15 @@ CREATE TABLE IF NOT EXISTS `appartenance` (
|
|||
--
|
||||
|
||||
INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_semestre`) VALUES
|
||||
(1, 'mrd1609a', 6, 2),
|
||||
(2, 'ihf1991a', 16, 4),
|
||||
(1, 'mrd1609a', 2, 2),
|
||||
(2, 'ihf1991a', 8, 4),
|
||||
(3, 'mma1990a', 13, 1),
|
||||
(4, 'lme1952a', 15, 3),
|
||||
(5, 'imf1922a', 9, 1),
|
||||
(5, 'imf1922a', 21, 1),
|
||||
(6, 'gyy1983a', 4, 4),
|
||||
(7, 'otm1902a', 14, 2),
|
||||
(8, 'tnx1949a', 12, 4),
|
||||
(9, 'sjl1937a', 12, 4),
|
||||
(9, 'sjl1937a', 4, 4),
|
||||
(10, 'anj1991a', 16, 4),
|
||||
(11, 'xdh1989a', 20, 4),
|
||||
(12, 'agl1956a', 3, 3),
|
||||
|
@ -74,14 +74,14 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
|
|||
(16, 'pdi1904a', 19, 3),
|
||||
(17, 'cuk1947a', 10, 2),
|
||||
(18, 'non1968a', 22, 2),
|
||||
(19, 'hmn1970a', 21, 1),
|
||||
(19, 'hmn1970a', 1, 1),
|
||||
(20, 'hth1975a', 5, 1),
|
||||
(21, 'liw1940a', 6, 2),
|
||||
(22, 'dtg1946a', 18, 2),
|
||||
(23, 'oxz1985a', 7, 3),
|
||||
(24, 'ono1984a', 14, 2),
|
||||
(25, 'auy1966a', 3, 3),
|
||||
(26, 'dui1946a', 9, 1),
|
||||
(25, 'auy1966a', 15, 3),
|
||||
(26, 'dui1946a', 1, 1),
|
||||
(27, 'cyw1979a', 24, 4),
|
||||
(28, 'pfv1965a', 3, 3),
|
||||
(29, 'oqz1937a', 24, 4),
|
||||
|
@ -95,21 +95,21 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
|
|||
(37, 'zgy1948a', 10, 2),
|
||||
(38, 'vau1957a', 23, 3),
|
||||
(39, 'hsx1927a', 19, 3),
|
||||
(40, 'eca1977a', 11, 3),
|
||||
(40, 'eca1977a', 3, 3),
|
||||
(41, 'wpa1966a', 20, 4),
|
||||
(42, 'qoe1974a', 20, 4),
|
||||
(43, 'tkz1955a', 11, 3),
|
||||
(44, 'wnx1995a', 16, 4),
|
||||
(45, 'sft1994a', 2, 2),
|
||||
(46, 'vgb1979a', 3, 3),
|
||||
(46, 'vgb1979a', 11, 3),
|
||||
(47, 'wbt1993a', 19, 3),
|
||||
(48, 'xtb1903a', 11, 3),
|
||||
(49, 'msj1985a', 13, 1),
|
||||
(50, 'wvn1982a', 9, 1),
|
||||
(51, 'psg1965a', 8, 4),
|
||||
(51, 'psg1965a', 4, 4),
|
||||
(52, 'hpa1908a', 5, 1),
|
||||
(53, 'maq1980a', 19, 3),
|
||||
(54, 'agq1929a', 5, 1),
|
||||
(54, 'agq1929a', 13, 1),
|
||||
(55, 'gwe1975a', 18, 2),
|
||||
(56, 'gdb1939a', 7, 3),
|
||||
(57, 'jrc1974a', 10, 2),
|
||||
|
@ -117,8 +117,8 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
|
|||
(59, 'buz1982a', 24, 4),
|
||||
(60, 'mhr1952a', 7, 3),
|
||||
(61, 'pos1958a', 11, 3),
|
||||
(62, 'xdi1926a', 7, 3),
|
||||
(63, 'awl1901a', 1, 1),
|
||||
(62, 'xdi1926a', 3, 3),
|
||||
(63, 'awl1901a', 17, 1),
|
||||
(64, 'uix1942a', 7, 3),
|
||||
(65, 'ngz1932a', 19, 3),
|
||||
(66, 'kpf1942a', 15, 3),
|
||||
|
@ -138,10 +138,10 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
|
|||
(80, 'kfx1995a', 18, 2),
|
||||
(81, 'jgd1966a', 3, 3),
|
||||
(82, 'rwg1909a', 14, 2),
|
||||
(83, 'ngw1997a', 1, 1),
|
||||
(83, 'ngw1997a', 17, 1),
|
||||
(84, 'obg1973a', 2, 2),
|
||||
(85, 'hzg1935a', 12, 4),
|
||||
(86, 'iyh1918a', 11, 3),
|
||||
(86, 'iyh1918a', 3, 3),
|
||||
(87, 'tdc1978a', 13, 1),
|
||||
(88, 'swd1951a', 2, 2),
|
||||
(89, 'vdj1905a', 22, 2),
|
||||
|
@ -153,9 +153,10 @@ INSERT INTO `appartenance` (`id_appartenance`, `id_etudiant`, `id_groupe`, `id_s
|
|||
(95, 'bky1924a', 22, 2),
|
||||
(96, 'vul1953a', 5, 1),
|
||||
(97, 'ssr1906a', 9, 1),
|
||||
(98, 'yjh1944a', 3, 3),
|
||||
(98, 'yjh1944a', 11, 3),
|
||||
(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` (
|
||||
`id_controle` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`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,
|
||||
`coefficient` float NOT NULL,
|
||||
`date_publication` date NOT NULL,
|
||||
PRIMARY KEY (`id_controle`),
|
||||
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`:
|
||||
|
@ -185,14 +186,17 @@ CREATE TABLE IF NOT EXISTS `controle` (
|
|||
--
|
||||
|
||||
INSERT INTO `controle` (`id_controle`, `id_mcc_module`, `intitule`, `base`, `coefficient`, `date_publication`) VALUES
|
||||
(1, 5, 'Partiel 1', 20, 1, '2015-11-09'),
|
||||
(2, 5, 'Partiel 2', 20, 1, '2015-11-10'),
|
||||
(3, 6, 'Partiel 3', 20, 1, '2015-11-11'),
|
||||
(4, 6, 'Partiel 4', 20, 1, '2015-11-12'),
|
||||
(5, 7, 'Partiel 5', 20, 1, '2015-11-13'),
|
||||
(6, 7, 'Partiel 6', 20, 1, '2015-11-14'),
|
||||
(7, 8, 'Partiel 7', 20, 1, '2015-11-15'),
|
||||
(8, 8, 'Partiel 8', 20, 1, '2015-11-16');
|
||||
(1, 1, 'Partiel 1', 20, 1, '2015-11-09'),
|
||||
(2, 1, 'Partiel 2', 20, 1, '2015-11-10'),
|
||||
(3, 2, 'Partiel 3', 20, 1, '2015-11-11'),
|
||||
(4, 2, 'Partiel 4', 20, 1, '2015-11-12'),
|
||||
(5, 3, 'Partiel 5', 20, 1, '2015-11-13'),
|
||||
(6, 3, 'Partiel 6', 20, 1, '2015-11-14'),
|
||||
(7, 4, 'Partiel 7', 20, 1, '2015-11-15'),
|
||||
(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`),
|
||||
KEY `id_enseignant` (`id_enseignant`),
|
||||
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`:
|
||||
|
@ -223,8 +227,32 @@ CREATE TABLE IF NOT EXISTS `enseignement` (
|
|||
--
|
||||
|
||||
INSERT INTO `enseignement` (`id_enseignement`, `id_enseignant`, `id_mcc_module`, `correcteur`) VALUES
|
||||
(1, 'lbh1609a', 5, 0),
|
||||
(2, 'lbh1609a', 10, 0);
|
||||
(1, 'lbh1609a', 5, 1),
|
||||
(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`:
|
||||
-- `id_module`
|
||||
-- `module` -> `id_module`
|
||||
-- `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`:
|
||||
-- `id_ue`
|
||||
-- `ue` -> `id_ue`
|
||||
-- `id_semestre`
|
||||
-- `semestre` -> `id_semestre`
|
||||
-- `id_ue`
|
||||
-- `ue` -> `id_ue`
|
||||
--
|
||||
|
||||
--
|
||||
|
@ -401,14 +429,14 @@ CREATE TABLE IF NOT EXISTS `note` (
|
|||
PRIMARY KEY (`id_note`),
|
||||
KEY `id_appartenance` (`id_appartenance`),
|
||||
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`:
|
||||
-- `id_controle`
|
||||
-- `controle` -> `id_controle`
|
||||
-- `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
|
||||
(11, 1, 1, 1),
|
||||
(12, 1, 2, 2),
|
||||
(13, 1, 3, 3),
|
||||
(14, 1, 4, 4),
|
||||
(15, 1, 5, 5),
|
||||
(16, 1, 6, 6),
|
||||
(17, 1, 7, 7),
|
||||
(18, 1, 8, 8);
|
||||
(11, 103, 1, 15.25),
|
||||
(12, 54, 2, 5),
|
||||
(13, 103, 3, 3),
|
||||
(14, 103, 4, 4),
|
||||
(15, 103, 5, 5),
|
||||
(16, 103, 6, 6),
|
||||
(17, 103, 7, 7),
|
||||
(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` (
|
||||
`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,
|
||||
`rang` tinyint(4) NOT NULL,
|
||||
`annee` year(4) NOT NULL,
|
||||
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 ;
|
||||
|
||||
--
|
||||
-- RELATIONS POUR LA TABLE `semestre`:
|
||||
-- `id_formation`
|
||||
-- `formation` -> `id_formation`
|
||||
--
|
||||
|
||||
--
|
||||
-- Contenu de la table `semestre`
|
||||
--
|
||||
|
||||
INSERT INTO `semestre` (`id_semestre`, `nom`, `rang`, `annee`) VALUES
|
||||
(1, 'S1', 1, 2015),
|
||||
(2, 'S2', 2, 2015),
|
||||
(3, 'S3', 3, 2015),
|
||||
(4, 'S4', 4, 2015),
|
||||
(5, 'S1', 1, 2016),
|
||||
(6, 'S2', 2, 2016),
|
||||
(7, 'S3', 3, 2016),
|
||||
(8, 'S4', 4, 2016);
|
||||
INSERT INTO `semestre` (`id_semestre`, `id_formation`, `nom`, `rang`, `annee`) VALUES
|
||||
(1, 1, 'S1', 1, 2015),
|
||||
(2, 1, 'S2', 2, 2015),
|
||||
(3, 2, 'S3', 3, 2015),
|
||||
(4, 2, 'S4', 4, 2015),
|
||||
(5, 1, 'S1', 1, 2016),
|
||||
(6, 1, 'S2', 2, 2016),
|
||||
(7, 2, 'S3', 3, 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
|
||||
('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'),
|
||||
('agl1956a', 'Cruz', 'HOWE', 'cruz.howe@etu.iut-tlse3.fr', 'c3f22ac779a9e0e276acdc9933cdcdb2f054e317', '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`
|
||||
--
|
||||
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`
|
||||
--
|
||||
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`
|
||||
--
|
||||
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_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
|
|
Loading…
Reference in New Issue