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

2
API.js
View File

@ -52,7 +52,7 @@ APIClass.prototype = {
/* DEBUG : affiche la réponse BRUTE de API.php */
// console.log('API.php => '+ptrAPI.xhr[i].responseText);
console.log(JSON.parse(ptrAPI.xhr[i].responseText) );
console.log( JSON.parse(ptrAPI.xhr[i].responseText) );
/* si success de requête */
if( [0,200].indexOf(ptrAPI.xhr[i].status) > -1 ){ // si fichier existe et reçu

View File

@ -9,16 +9,37 @@
.hidden{ display: none !important; }
/* .unstressed */
span.unstressed{ color: #aaa; }
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; }
@ -77,6 +98,7 @@ table.basic.col2 tr td, table.basic.col2 tr th{ width: 50%; }
table.basic.col3 tr td, table.basic.col3 tr th{ width: 33%; }
table.basic.col4 tr td, table.basic.col4 tr th{ width: 25%; }
table.basic.col5 tr td, table.basic.col5 tr th{ width: 20%; }
table.basic.col5 tr td, table.basic.col6 tr th{ width: 16%; }
/* titre aligné à gauche */
@ -85,21 +107,33 @@ table.basic th{ text-align: left; }
/* <thead> sans background */
table.basic thead tr th{ background-color: transparent; }
table.basic:nth-child(4n+0) tr td:first-child{ border-left: 10px solid #e63c54; }
table.basic:nth-child(4n+1) tr td:first-child{ border-left: 10px solid #3c73e6; }
table.basic:nth-child(4n+2) tr td:first-child{ border-left: 10px solid #e6983c; }
table.basic:nth-child(4n+3) tr td:first-child{ border-left: 10px solid #2dcc70; }
table.basic:nth-child(4n+0) tr > td:first-child { border-left: 10px solid #e63c54; }
table.basic:nth-child(4n+1) tr > td:first-child { border-left: 10px solid #3c73e6; }
table.basic:nth-child(4n+2) tr > td:first-child { border-left: 10px solid #e6983c; }
table.basic:nth-child(4n+3) tr > td:first-child { border-left: 10px solid #2dcc70; }
table.basic table.basic tr > td:first-child { border-left: 10px solid #9e9e9e; }
/* @hover */
table.basic tr:hover td{ color: #fff; }
body.trHoverActivated table.basic tr:hover > td{ color: #fff; }
table.basic:nth-child(4n+0) tr:hover td{ background-color: rgba(230, 60, 84, 1); }
table.basic:nth-child(4n+1) tr:hover td{ background-color: rgba(60, 115, 230, 1); }
table.basic:nth-child(4n+2) tr:hover td{ background-color: rgba(230, 152, 60, 1); }
table.basic:nth-child(4n+3) tr:hover td{ background-color: rgba(45, 204, 112, 1); }
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; }
body.trHoverActivated table.basic table.basic tr:hover > td { background-color: #9e9e9e; }
/* .noborder */
table.basic tr.noborder > td:first-child{ border-left: 1px solid transparent; }
body.trHoverActivated table.basic tr:hover td{ background-color: #fff; }
/* .transparentbg */
table.basic tr.transparentbg > td{ background-color: transparent; }
table.basic tr.transparentbg:hover > td{ background-color: transparent; }
table.basic tr.transparentbg > td{ color: inherit; }
/******************/
@ -136,7 +170,7 @@ span.link{
box-shadow: inset 0 0 1px #f5f5f5;
/* background */
background: #eee;
background: #fff;
/* foreground */
color: #333;
@ -144,7 +178,7 @@ span.link{
/* extra */
cursor: pointer;
}
table.basic td > span.link{ background: #eee; }
span.link:hover{ color: #000; }
/*********************/
@ -152,26 +186,28 @@ 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;
-moz-appearance:none;
appearance:none;
}
/* pour déplacement d'élève */
td select{ margin: -1em; padding: .5em; }
select > option{
/* position */
padding: 1em 0;
@ -180,11 +216,141 @@ select > option{
background-color: #fff;
/* foreground */
color: #233342;
color: #555;
text-indent: 1em;
}
/*
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; }*/
/* pour déplacement d'élève */
td select > option{ padding: 0; }
.confirm{
/* position */
/*display: inline-block;*/ display: none;
position: absolute;
margin-left: 2em;
margin-top: -.2em;
height: 1.5em;
padding: 0 .7em 0 1.3em;
/* border */
border-radius: 3px;
border: 1px solid #2dcc70;
/* background */
background: transparent center left .2em no-repeat;
background-size: 1em auto;
/* foreground */
color: #2dcc70;
line-height: 1.5em;
/* extra */
cursor: pointer;
}
/* @all */
.confirm.all{ margin-top: -.7em; }
/* @active */
input.active + .confirm,
select.active + .confirm,
.confirm.active{
display: inline-block;
background-image: url(../src/validate.svg);
}
/* tr@hover */
body.trHoverActivated tr:hover td select.active + .confirm,
body.trHoverActivated tr:hover td input.active + .confirm,
body.trHoverActivated tr:hover td .confirm.active{
border-color: #fff;
background-image: url(../src/validate@hover.svg);
color: #fff;
}
/* saisie note */
.saisie_note{
/* position */
margin: -.5em;
width: 4em;
padding: .5em 1em;
/* border */
border-radius: 3px;
border: 1px solid #bdbdbd;
}
/* @focus */
.saisie_note:focus{ border-color: #999; }
/******************************/
/*** SELECTIONS DES PARTIES ***/
/******************************/
#CONTAINER > section > .partlist{
/* position */
display: table;
margin: 2em;
/* border */
border-spacing: 0;
}
#CONTAINER > section > .partlist td{
/* position */
padding: .7em 2em;
/* border */
border: 1px solid #2dcc70;
border-right: 0;
/* background */
background-color: #fff;
/* foreground */
color: #2dcc70;
/* extra */
cursor: pointer;
/* animation */
transition: .2s ease-in-out;
-moz-transition: .2s ease-in-out;
-webkit-transition: .2s ease-in-out;
-ms-transition: .2s ease-in-out;
-o-transition: .2s ease-in-out;
}
/* @radius */
#CONTAINER > section > .partlist td:first-child{
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
/* @border + @radius */
#CONTAINER > section > .partlist td:last-child{
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
border-right: 1px solid #2dcc70;
}
#CONTAINER > section > .partlist td.active{
background-color: #2dcc70;
color: #fff;
}

View File

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

View File

@ -64,6 +64,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
==============================================================*/

View File

@ -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 //

View File

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

View File

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

View File

@ -215,15 +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 ));
@ -231,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']);
@ -243,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 ));
@ -262,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']);
@ -279,26 +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';
}
@ -308,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';
@ -486,66 +370,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;
}
@ -602,10 +463,10 @@ class DataBase{
}
/*********************************/
/*** retourne les notes par UE ***/
/*********************************/
public function getNotesByUEs($etudiant, $semestre, $annee){
/****************************************/
/*** retourne les notes d'un étudiant ***/
/****************************************/
public function getNotesEtudiant($etudiant, $semestre, $annee){
// on vérifie que le semestre exist et que l'étudiant est inscrit à ce semestre
if( !($semestreUID=semestreRepo::UID($semestre, $annee)) ) return 'unknown_semestre'; else $semestreUID = (int) $semestreUID;
if( !($etudiantUID=userRepo::UID($etudiant, $semestreUID)) ) return 'unknown_user';
@ -629,134 +490,103 @@ class DataBase{
}
/*******************************************/
/*** retourne les notes d'un enseignant ***/
/*******************************************/
public function getControlesEnseignant($enseignant, $semestre_pair, $annee){
// on vérifie que le semestre existe et que l'enseignant y enseigne
if( !($enseignantUID=userRepo::UID($enseignant, null, $semestre_pair, $annee)) ) return 'unknown_teacher';
debug();
// on récupère les semestres de cette année
$semestreList = semestreRepo::forTeacher($enseignantUID, $semestre_pair, $annee);
/**************************************/
/*** 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';
foreach($semestreList as $iter_s=>$a){
/*** 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 ".
$semestreList[$iter_s]['UElist'] = ueRepo::forTeacher($enseignantUID, $semestreList[$iter_s]['id']);
"AND mcc_ue.id_ue = ue.id_ue ".
"AND mcc_ue.id_semestre = app.id_semestre ".
"AND mcc_ue.id_semestre = :semestreUID ".
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 mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
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']);
"AND mcc_m.id_module = m.id_module ".
$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']);
"AND m.nom = :module ");
$getModuleUID->execute(array(
':module' => $module,
':etudiantUID' => $etudiantUID,
':semestreUID' => $semestreUID
));
}
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( $moduleUID = $getModuleUID->fetch()['id'] )
$moduleUID = (int) $moduleUID;
else
return 'unknown_module';
}
$EtudiantInscritAuModule = false; // par défaut on dit que l'étudiant n'est pas inscrit à ce module
foreach(moduleRepo::forStudent($etudiant, $semestreUID) as $module ) // on récupère parmi les modules auquel est inscrit l'utilisateur
if( $module['id'] == $moduleUID ){ // s'il est inscrit au module donné
$EtudiantInscritAuModule = true;
break;
}
// si l'étudiant n'a pas ce module dans ceux auxquels il est inscrit
if( !$EtudiantInscritAuModule ) return 'unknown_module';
}
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
$getNoteList = DataBase::getPDO()->prepare("SELECT m.nom as module, m.libelle as modulelib, ctrl.intitule, note.valeur, ctrl.base, ctrl.coefficient ".
"FROM note, appartenance as app, semestre as s, module as m, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
"WHERE note.id_appartenance = app.id_appartenance ".
"AND ctrl.id_controle = note.id_controle ".
"AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_ue.id_semestre = app.id_semestre ".
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_module = m.id_module ".
"AND m.id_module = :moduleUID ".
"AND app.id_etudiant = :etudiantUID ".
"AND s.id_semestre = :semestreUID ".
"ORDER BY ctrl.date_publication ASC");
$getNoteList->execute(array(
':moduleUID' => $moduleUID,
':etudiantUID' => $etudiantUID,
':semestreUID' => $semestreUID
));
// on retourne la liste des notes et supprime les doublons à indices numériques
return DataBase::delNumeric( $getNoteList->fetchAll() );
return $semestreList;
}
/********************************************/
/*** retourne les notes pour un contrôle ***/
/********************************************/
public function getNotesEnseignant($enseignant, $semestre_pair, $annee, $controle, $groupe=null){ // [OPTIONNEL] $groupe
/**********************************/
/*** 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';
// on récupère les informations du contrôle
if( ! ($controlObj=controleRepo::info($controle)) ) return 'unknown_controle';
// on ajoute la moyenne au contrôle
$controlObj['moyenne'] = noteRepo::moyenneForControle($controlObj['id']);
$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;
}
/* [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
// si l'étudiant n'a pas ce module dans ceux auxquels il est inscrit
if( !$EtudiantInscritAlUE ) return 'unknown_module';
$controlObj['userlist'] = groupRepo::membres($groupeUID, $controlObj['id_semestre']); // on récupère la liste des étudiants de ce groupe
// 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 ".
foreach($controlObj['userlist'] as $iter=>$note)
if( $resultNote = noteRepo::forStudent($controlObj['userlist'][$iter]['identifiant'], $controle) ) // si l'étudiant a une note pour ce controle
$controlObj['userlist'][$iter]['note'] = $resultNote[0]['valeur'];
else
$controlObj['userlist'][$iter]['note'] = null;
"AND mcc_ue.id_ue = ue.id_ue ".
"AND mcc_ue.id_semestre = app.id_semestre ".
"AND mcc_ue.id_semestre = s.id_semestre ".
/* [2] si on veut par groupe
=======================================*/
}else{
$controlObj['grouplist'] = groupRepo::forControle($controle);
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
foreach($controlObj['grouplist'] as $iter=>$grpe)
if( $controleNotes = noteRepo::forGroupe($controle, $grpe['id_groupe']) ) // si le groupe a des notes, on les ajoutes
$controlObj['grouplist'][$iter] = array_merge($controlObj['grouplist'][$iter], $controleNotes);
// var_dump( $controlObj );
debug();
}
"AND mcc_m.id_module = m.id_module ".
return $controlObj;
}
"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
));
/******************************************/
/*** 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';
// on retourne la liste de notes et supprime les doublons à indices numériques
return DataBase::delNumeric( $getNoteList->fetchAll() );
}
}

View File

@ -168,20 +168,9 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
$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,23 +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, $_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;
@ -266,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';

View File

@ -82,16 +82,16 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $enseignantCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
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

View File

@ -14,12 +14,21 @@ class controleRepo extends DBAccess{
*
* @controleUID<int> l'UID du controle duquel on veut les infos
*
* @return controle<Array> tableau associatif contenant tout les champs de la BDD pour ce controle
* @return controle<Array> tableau associatif contenant tout les champs de la BDD pour ce controle
*
*/
public static function info($controleUID){
// 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
));
@ -57,4 +66,34 @@ class controleRepo extends DBAccess{
/* RENVOIE LES CONTROLES QU'UN ENSEIGNANT PEUT CORRIGER POUR UN MODULE ET SEMESTRE PARTICULIER
*
* @enseignant<String> l'identifiant de l'enseignant
* @module<int> l'UID du module concerné
* @semestre<int> l'UID du semestre concerné
*
* @return controles<Array> retourne les controles q'un enseignant peut corriger pour un module d'un semestre
*
*/
public static function forTeacher($enseignant, $module, $semestre){
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
"FROM enseignement as ens, module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND ens.id_enseignant = :enseignant ".
"AND mcc_m.id_module = :module ".
"AND mcc_ue.id_semestre = :semestre ".
"GROUP BY ctrl.id_controle");
$getControleList->execute(array( ':enseignant' => $enseignant, ':module' => $module, ':semestre' => $semestre ));
return DataBase::delNumeric( $getControleList->fetchAll() );
}
}

View File

@ -110,7 +110,7 @@ class groupRepo extends DBAccess{
}
/* AJOUTER UN MEMBRE A UN GROUPE
/* AJOUTER UN MEMBRE A UN GROUPE / DEPLACER UN MEMBRE VERS UN GROUPE DONNE (si déjà dans un groupe)
*
* @etudiant<String> l'identifiant (UID) de l'étudiant à ajouter au groupe
* @groupe<int> l'UID du groupe auquel on veut le ratacher
@ -121,18 +121,10 @@ class groupRepo extends DBAccess{
*
*/
public static function ajouterMembre($etudiant, $groupe, $semestre){
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
==============================*/
@ -140,8 +132,8 @@ class groupRepo extends DBAccess{
$ajouterMembres = DataBase::getPDO()->prepare("UPDATE appartenance ".
"SET id_groupe = :groupe ".
"WHERE id_appartenance = :appartenanceUID");
$ajouterMembre->execute(array(
':groupe' => $groupeUID,
$ajouterMembres->execute(array(
':groupe' => $groupe,
':appartenanceUID' => $appartenanceUID
));
@ -156,9 +148,9 @@ class groupRepo extends DBAccess{
"(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->execute(array(
':etudiant' => $etudiant,
':groupe' => $groupe,
':semestre' => $semestre
));
@ -182,9 +174,10 @@ 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 ".
$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 ". // à virer (peut-être)
@ -202,50 +195,100 @@ class groupRepo extends DBAccess{
/* RETOURNE LE GROUPE AUQUEL EST INSCRIT UN ETUDIANT POUR UN SEMESTRE DONNÉ
*
* @etudiant<String> l'UID de l'étudiant en question
* @semestre<int> l'UID du semestre en question
*
* @return trouve<Boolean> FAUX si aucun groupe ne correspond aux critères
* @return groupe<int> retourne l'UID du groupe correspondant
*
*/
public static function forStudent($etudiant, $semestre){
$getGroupe = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_appartenance, g.id_groupe as id, g.nom, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation ".
"FROM groupe as g, appartenance as app, formation as f, semestre as s ".
"WHERE s.id_formation = f.id_formation ".
"AND app.id_groupe = g.id_groupe ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_etudiant = :etudiant ".
"AND s.id_semestre = :semestre ".
"ORDER BY g.nom");
$getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
return $getGroupe->fetch();
}
/* RETOURNE TOUS LES GROUPES QUI ONT UN ENSEIGNANT PARTICULIER POUR UNE ANNEE DONNEE
*
* @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 ".
"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 ".
$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 ". // 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 ".
"AND g.nom LIKE '".$groupeOpt."' ".
"AND s.nom LIKE '".$semestreOpt."' ".
"AND u.identifiant = :enseignant ".
"AND s.rang % 2 = :semestre_pair ".
"AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
"AND s.annee = :annee ".
"ORDER BY s.rang, g.nom");
$getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
$getGroupeList->execute(array( ':enseignant' => $enseignant, ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
}
/* RETOURNE LES GROUPES INSCRITS A UN CONTROLE
*
* @controle<int> l'UID du contrôle en question
*
*
* @return groupes<Array> retourne un tableau contenant les groupes inscrits à ce contrôle
* @return FALSE<Boolean> retourne FALSE si aucun groupe n'y est inscrit
*
*/
public static function forControle($controle){
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom ".
"FROM groupe as g, appartenance as app, mcc_ue, mcc_module as mcc_m, controle as ctrl ".
"WHERE app.id_groupe = g.id_groupe ".
"AND ctrl.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND app.id_semestre = mcc_ue.id_semestre ".
"AND ctrl.id_controle = :controle ".
"ORDER BY g.nom ASC");
$getGroupeList->execute(array( ':controle' => $controle ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
}
@ -254,36 +297,28 @@ 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; }
public static function forYear($semestre_pair, $annee){
// si le groupe est donné, on cherche uniquement celui-ci, sinon on les affiche tous
$groupeOpt = '%';
if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ".
"FROM groupe as g, semestre as s, appartenance as app ".
"WHERE g.id_groupe = app.id_groupe ".
$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 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_pair ".
"AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
"AND s.annee = :annee ".
"ORDER BY g.nom");
$getGroupeList->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
$getGroupeList->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
return DataBase::delNumeric( $getGroupeList->fetchAll() );
}

View File

@ -75,18 +75,46 @@ class moduleRepo extends DBAccess{
/* RENVOIE LA LISTE DES MODULES QU'ENSEIGNE UN ENSEIGNANT POUR UN UE D'UNE ANNEE
*
* @enseignant<String> Identifiant de l'enseignant
* @UEUID<int> L'UID de l'UE en question
* @semestre<int> L'UID du semestre en question
*
* @return Modules<Array> retourne un tableau contenant les modules de l'enseignant pour ce semestre et cet UE
*
*/
public static function forTeacher($enseignant, $UEUID, $semestre){
/* RENVOIE LA LISTE DES MODULES D'UN UE D'UNE ANNEE COURANTE (SEMESTRES COURANTS)
// on récupère les modules
$getModulesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ".
"FROM module as m, mcc_module as mcc_m, mcc_ue, enseignement as ens ".
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
"AND mcc_m.id_module = m.id_module ".
"AND mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND ens.id_enseignant = :enseignant ".
"AND mcc_ue.id_ue = :UEUID ".
"AND mcc_ue.id_semestre = :semestre ".
"ORDER BY m.nom, m.libelle");
$getModulesForTeacher->execute(array( ':enseignant' => $enseignant, ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForTeacher->fetchAll() );
}
/* RENVOIE LA LISTE DES MODULES D'UN UE D'UN SEMESTRE PARTICULIER
*
* @UEUID<int> l'UID d'un UE
* @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 ".
@ -95,10 +123,9 @@ class moduleRepo extends DBAccess{
"AND mcc_ue.id_semestre = s.id_semestre ".
"AND mcc_ue.id_ue = :UEUID ".
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"AND s.id_semestre = :semestre ".
"ORDER BY s.rang, m.nom, m.libelle");
$getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
$getModulesForYear->execute(array( ':UEUID' => $UEUID, ':semestre' => $semestre ));
return DataBase::delNumeric( $getModulesForYear->fetchAll() );
}

View File

@ -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
/* [1] Cas 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 on cherche si un étudiant est inscrit à un semestre
==============================================================*/
$getUtilisateurUID = DataBase::getPDO()->prepare("SELECT u.identifiant as id ".
"FROM utilisateur as u, appartenance as app ".
"WHERE u.identifiant = app.id_etudiant ".
"AND u.identifiant = :identifiant ".
"AND app.id_semestre = :semestre");
$getUtilisateurUID->execute(array( ':identifiant' => $identifiant, ':semestre' => $semestre ));
public static function UID($etudiant, $controle){
$getNoteUID = DataBase::getPDO()->prepare("SELECT note.id_note as id ".
"FROM appartenance as app, note, controle as ctrl ".
"WHERE app.id_appartenance = note.id_appartenance ".
"AND ctrl.id_controle = note.id_controle ".
}else{
/* [2] Cas 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'];
}
@ -112,4 +87,181 @@ class noteRepo extends DBAccess{
/* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
*
* [1] Par groupe si aucun groupe spécifié (statistiques: moyenne, min, max, nb notes, ...)
* [2] Liste des élèves d'un groupe si aucun groupe spécifié
*
*
* @controle<int> l'UID du controle concerné
*
* @groupe<int> ***OPTIONNEL*** l'UID du groupe spécifique
*
*
* @return notes<Array> [1] retourne les stats des notes pour les groupes à ce contrôle
* [2] retourne les notes des étudiants du groupe spécifié pour ce contrôle
*
*/
public static function forTeacher($controle, $groupe=null){
/* [1] Statistiques des groupes
============================================================*/
if( !is_int($groupe) ){
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes ".
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
"WHERE n.id_appartenance = app.id_appartenance ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND s.id_semestre = mcc_ue.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND n.id_controle = ctrl.id_controle ".
"AND ctrl.id_controle = :controle ".
"GROUP BY g.id_groupe ".
"ORDER BY g.nom ASC");
$getNoteList->execute(array( ':controle' => $controle ));
/* [2] Notes des étudiants d'un groupe
============================================================*/
}else{
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, g.nom as groupe, app.id_etudiant as etudiant, n.id_appartenance, n.id_controle, n.valeur ".
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
"WHERE n.id_appartenance = app.id_appartenance ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND s.id_semestre = mcc_ue.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND n.id_controle = ctrl.id_controle ".
"AND ctrl.id_controle = :controle ".
"AND app.id_groupe = :groupe ".
"ORDER BY g.nom ASC");
$getNoteList->execute(array( ':controle' => $controle, ':groupe' => $groupe ));
}
return DataBase::delNumeric( $getNoteList->fetchAll() );
}
/* RENVOIE LES STATISTIQUES ASSOCIÉES À UN CONTRÔLE POUR UN GROUPE SPÉCIFIQUE
*
* @controle<int> l'UID du controle concerné
* @groupe<int> l'UID du groupe spécifique
*
*
* @return notes<Array> retourne les stats des notes pour les groupes à ce contrôle
* @return FALSE<Boolean> retourne FALSE si aucun résultat n'est trouvé
*
*/
public static function forGroupe($controle, $groupe){
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes ".
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
"WHERE n.id_appartenance = app.id_appartenance ".
"AND app.id_semestre = s.id_semestre ".
"AND app.id_groupe = g.id_groupe ".
"AND s.id_semestre = mcc_ue.id_semestre ".
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
"AND n.id_controle = ctrl.id_controle ".
"AND ctrl.id_controle = :controle ".
"AND app.id_groupe = :groupe ".
"GROUP BY g.id_groupe ".
"ORDER BY g.nom ASC");
$getNoteList->execute(array( ':controle' => $controle, ':groupe' => $groupe ));
return $getNoteList->fetch();
}
/* RETOURNE LA MOYENNE D'UN CONTRÔLE PARTICULIER
*
* @controle<int> l'UID du contrôle en question
*
*
* @return moyenne<Float> retourne la moyenne d'un contrôle
* @return NULL retourne NULL s'il y a aucune note à ce contrôle
*
*/
public static function moyenneForControle($controle){
$getMoyenne = DataBase::getPDO()->prepare("SELECT ctrl.id_controle, AVG(n.valeur) as moyenne ".
"FROM controle as ctrl, note as n ".
"WHERE ctrl.id_controle = n.id_controle ".
"AND ctrl.id_controle = :controle ".
"GROUP BY ctrl.id_controle");
$getMoyenne->execute(array( ':controle' => $controle ));
if( $fetchObj = $getMoyenne->fetch() )
return $fetchObj['moyenne'];
else
return null;
}
/* CRÉATION/MODIFICATION D'UNE NOTE POUR UN ETUDIANT À UN CONTRÔLE
*
* @etudiant<String> l'UID de l'étudiant en question
* @controle<int> l'UID du contrôle en question
* @semestre<int> l'UID du semestre en question
* @valeur<number> valeur de la note à saisir
*
*
* @return noteUID<int> l'UID de la note si elle a bien été créé
* @return cree<Boolean> FALSE si la note n'a pas été créé
*
*/
public static function creer($etudiant, $controle, $semestre, $valeur){
/* [1] Premier cas : il faut créer la note de cet étudiant pour ce contrôle
============================================================================*/
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ){
$creationNote = DataBase::getPDO()->prepare("INSERT INTO note(id_note, id_appartenance, id_controle, valeur) ".
"VALUES(".
"DEFAULT, ".
"(SELECT id_appartenance FROM appartenance WHERE id_etudiant = :etudiant AND id_semestre = :semestre), ".
":controle, ".
":valeur".
")");
$creationNote->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre, ':controle' => $controle, ':valeur' => $valeur ));
/* [2] Second cas : il faut modifier la note de cet étudiant
============================================================================*/
}else{
$modificationNote = DataBase::getPDO()->prepare("UPDATE note SET valeur = :valeur WHERE id_note = :noteUID");
$modificationNote->execute(array( ':valeur' => $valeur, ':noteUID' => $noteUID ));
}
/* [3] On vérifie que la note a bien été créé pour cet étudiant et ce contrôle
=================================================================================*/
if( !($noteUID=noteRepo::UID($etudiant, $controle)) ) return false;
/* [4] On vérifie que la note créée a bien la valeur qu'on a attribuée
=================================================================================*/
$verificationValeur = DataBase::getPDO()->prepare("SELECT note.valeur FROM note WHERE id_note = :noteUID");
$verificationValeur->execute(array( ':noteUID' => $noteUID ));
return ( $verificationValeur->fetch()['valeur'] == $valeur );
}
}

View File

@ -57,7 +57,10 @@ class semestreRepo extends DBAccess{
*/
public static function info($semestreUID){
// 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,9 +89,10 @@ 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 ".
@ -106,6 +110,56 @@ class semestreRepo extends DBAccess{
/* retourne la liste des semestres qu'à un enseignant
*
* @enseignant<String> l'UID de l'enseignant en question
* @semestre_pair<Boolean> VRAI si le semestre en cours est pair
* @annee<int> l'année en question
*
*
* @return semestres<Array> retourne la liste des semestres répondant aux critères
* @return FALSE<Boolean> retourne FALSE si aucun semestre ne correspond aux critères
*
*/
public static function forTeacher($enseignant, $semestre_pair, $annee){
$getSemestreList = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee ".
"FROM semestre as s, formation as f, enseignement as ens, mcc_module as mcc_m, mcc_ue ".
"WHERE s.id_semestre = mcc_ue.id_semestre ". // semestre <-> mcc_ue
"AND s.id_formation = f.id_formation ". // semestre <-> formation
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ". // mcc_ue <-> mcc_module
"AND mcc_m.id_mcc_module = ens.id_mcc_module ". // mcc_module <-> enseignement
"AND ens.id_enseignant = :enseignant ".
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"ORDER BY s.rang ASC");
$getSemestreList->execute(array( ':enseignant' => $enseignant, ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
return DataBase::delNumeric( $getSemestreList->fetchAll() );
}
/* retourne la liste des semestres d'une année
*
* @annee<int> l'année en question
*
*
* @return semestres<Array> retourne la liste des semestres de cette année
* @return FALSE<Boolean> retourne FALSE si aucun semestre ne correspond aux critères
*
*/
public static function forYear($annee){
$getSemestreList = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code as formation, f.nom as nom_formation, s.nom, s.rang, s.annee ".
"FROM semestre as s, formation as f ".
"WHERE s.id_formation = f.id_formation ".
"AND annee = :annee ".
"ORDER BY rang ASC");
$getSemestreList->execute(array( ':annee' => $annee ));
return DataBase::delNumeric( $getSemestreList->fetchAll() );
}
}

View File

@ -57,7 +57,7 @@ class ueRepo extends DBAccess{
*/
public static function forStudent($etudiant, $semestre){
// on récupère les modules
$getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
$getUesForStudent = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle ".
"FROM appartenance as app, semestre as s, mcc_ue, ue ".
"WHERE app.id_semestre = s.id_semestre ".
"AND mcc_ue.id_semestre = s.id_semestre ".
@ -73,58 +73,55 @@ class ueRepo extends DBAccess{
/* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UNE ANNEE
/* RENVOIE LA LISTE DES UEs QU'ENSEIGNE UN ENSEIGNANT POUR UN SEMESTRE
*
* @enseignant<String> Identifiant de l'enseignant
* @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.annee, s.rang, ue.nom, ue.libelle ".
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle ".
"FROM enseignement as ens, semestre as s, ue, mcc_ue, mcc_module as mcc_m ".
"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 ".
"AND ens.id_enseignant = :enseignant ".
"AND s.rang % 2 = :semestre_pair ".
"AND s.annee = :annee ".
"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 ));
$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, ue.nom, ue.libelle ".
$getUEList = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, ue.nom, ue.libelle ".
"FROM ue, mcc_ue, semestre as s ".
"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 ".
"AND s.id_semestre = :semestre ".
"ORDER BY s.rang, ue.nom, ue.libelle");
$getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
$getUEList->execute(array( ':semestre' => $semestre ));
return DataBase::delNumeric( $getUEsForYear->fetchAll() );
return DataBase::delNumeric( $getUEList->fetchAll() );
}

View File

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

View File

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

View File

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

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

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

View File

@ -1,104 +1,137 @@
<!--
var subSections = document.querySelectorAll('hgroup');
// si aucune sous-partie n'est active, on active la première
if( document.querySelector('#CONTAINER hgroup.active') == null )
selectSubSection( document.querySelector('#CONTAINER hgroup') );
/* Gestion du déroulement des tableaux des groupes */
function afficherCacherGroupes(e){
e.preventDefault();
// s'il s'agit de la case "Voir plus"
if( e.target.className == 'more' ){
var thead = e.target.parentNode.parentNode.parentNode.children[0];
thead.className = (thead.className=='active') ? '' : 'active';
}
}
if( !afficherCacherGroupesDefined )
DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false);
var afficherCacherGroupesDefined = true;
/* on définit le Drag'n'Drop */
var dnd = new DragnDrop();
/* GESTION DU DRAG N DROP */
/* GESTION DU DEPLACEMENT D'ELEVES */
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin
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]);
/* DEPLACEMENT A L'AIDE DES <SELECT> */
var deplacementElements = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td select');
var deplacementObj = [];
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;
// on référencie tous les select dans un objet
for( var i = 0 ; i < deplacementElements.length ; i++ ){
var request = { // on définit la requête pour API
level_0: 'groups',
level_1: 'move',
etudiant: id_etudiant,
groupe: nom_groupe
deplacementElements[i].dataset.i = i; // le rang du <select> dans la liste
deplacementObj[i] = {
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>
};
// l'ordre n'est pas alphabétique mais va à la fin
// on créé l'évènement qui affiche le validateur dès le changement de valeur
deplacementObj[i].select.addEventListener('change', function(e){
// on récupère le rang dans la liste et qu'il s'agit du même élément
if( e.target.dataset.hasOwnProperty('i') && deplacementObj[e.target.dataset.i].select == e.target ){
var obj = deplacementObj[e.target.dataset.i];
API.send(request, function(response){ // on gère la réponse de API
if( 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]') );
if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton)
addClass( obj.select, 'active' );
else
remClass( obj.select, 'active' );
}
});
});
}, false);
// on créé l'évènement de confirmation du déplacement
deplacementObj[i].button.addEventListener('click', function(e){
// s'il s'agit bien d'un bouton de validation, que le <select> associé a data-i existante et que ça match correctement
if( /^confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && deplacementObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
var obj = deplacementObj[e.target.parentNode.children[0].dataset.i];
var request = { // on définit la requête pour API
level_0: 'groups',
level_1: 'move',
etudiant: obj.userid,
groupe: obj.select.value,
semestre: obj.streid
};
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
if( response.request == 'success' ) reload();
});
}
}, false);
}
}
/***************************************************/
/*** GESTION DES SELECT 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 L'AFFINAGE PAR SEMESTRE //
for( var i = 0 ; i < partList.length ; i++ ){
partList[i].addEventListener('click', function(e){
var tableauParent = e.target.parentNode.parentNode.parentNode;
if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){
/* SI c'est une affinage par FORMATION */
if( tableauParent.getAttribute('name') == 'formation' ){
pageM.vars[1] = 'f:'+e.target.dataset.value;
if( pageM.vars.length > 2 ) // si un deuxième affinage existe, on le supprime lors du choix de la formation
pageM.vars.pop();
}
/* SI c'est une affinage par SEMESTRE */
if( tableauParent.getAttribute('name') == 'semestre' )
pageM.vars[2] = 's:'+e.target.dataset.value;
// si la formation n'est pas définie, on l'active
if( !/^f:/.test(pageM.vars[1]) )
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop();
reload();
}
}, false);
}
// GESTION DE LA PRISE EN COMPTE DES SELECT //
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 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();
}
selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
}
}, false);
}, false);
}

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

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

View File

@ -4,6 +4,47 @@ require_once __ROOT__.'/manager/groups.php';
require_once __ROOT__.'/manager/modules.php';
require_once __ROOT__.'/manager/career.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/
// on initialise les paramètres optionnels
$controleOpt = null;
$groupeOpt = null;
$etudiantOpt = null;
$ueOpt = null;
$semestreOpt = null;
$formationOpt = null;
// on cherche dans toutes les variables _get si on trouve des paramètres
foreach($_POST as $k=>$v){
if( preg_match('/^g:(.+)$/', $k, $m) ) // g:nomGroupe
$groupeOpt = $m[1];
if( preg_match('/^c:(.+)$/', $k, $m) ) // c:idControle
$controleOpt = $m[1];
if( preg_match('/^e:(.+)$/', $k, $m) ) // e:idEtudiant
$etudiantOpt = $m[1];
if( preg_match('/^u:(.+)$/', $k, $m) ) // u:nomUe
$ueOpt = $m[1];
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
$semestreOpt = $m[1];
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
}
$controleOpt = ($controleOpt == null || $controleOpt == '*') ? null : $controleOpt;
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
$etudiantOpt = ($etudiantOpt == null || $etudiantOpt == '*') ? null : $etudiantOpt;
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/****************************************
* *
* SECTION "PARCOURS" *
@ -21,18 +62,17 @@ 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 = 'getNotesByUEs';
$request->level_1 = 'getNotesEtudiant';
$request->etudiant = $_SESSION['identifiant'];
$request->semestre = $_SESSION['semestre'];
$request->annee = $_SESSION['annee'];
@ -41,35 +81,467 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
////////////////////////////////////////////////////////////////////////////////
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
echo "<table class='basic col4'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $module) // pour chaque module
foreach($module['controles'] as $controle) // pour chaque contrôle
foreach($controle['notes'] as $note){ // pour chaque note
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>';
echo '<td>'.number_format($note['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
echo '<td><span class=unstressed>Pas de note</span></td>';
else // si une note, alors on l'affiche
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
}
echo '</tbody>';
}
echo '</table>';
echo '</tbody>';
echo '</table>';
}
}
////////////////////////////////////////////////////////////////////////////////
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='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><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
echo '</thead></table>';
foreach($UE['modules'] as $module){ // pour chaque module
echo '<table class=basic><thead>';
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<tr>';
echo '<td><span class=link>'.$controle['intitule'].'</span></td>';
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
echo '<td><span class=unstressed>Pas de note</span></td>';
else // si une note, alors on l'affiche
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
}
echo '</tbody>';
}
echo '</table>';
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}else
echo "<section name='studentcase' data-title='Dossier étudiant' class='basic'><table class=basic><tbody><tr><td>Aucune note trouvée</td></tr></tbody></table></section>";
}
?>

View File

@ -18,32 +18,34 @@ require_once __ROOT__.'/manager/groups.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/
$postVars = array(); // on récupère les variables post
// on initialise les paramètres optionnels
$semestreOpt = null;
$groupeOpt = null;
$formationOpt = null;
foreach($_POST as $k=>$v)
array_push($postVars, $k);
// 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];
/* GESTION SEMESTRE OPTIONNEL */
if( isset($postVars[1]) && preg_match('/^S[0-9]{1}$/', $postVars[1]) )
$semestreOpt = $postVars[1];
else
$semestreOpt = null;
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
$semestreOpt = $m[1];
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
/* GESTION GROUPES OPTIONNEL */
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
$groupeOpt = $postVars[2];
else
$groupeOpt = null;
}
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/************************/
/*** TOUS LES GROUPES ***/
/************************/
/*
* UTILISATEUR -> affichage du même semestre
*
*
*/
if( permission('student') ){ // si connecté && utilisateur
@ -59,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>';
@ -100,117 +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( 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>";
} ?>
@ -219,9 +116,6 @@ if( permission('teacher') ){ // si connecté && prof
<!-- mon groupe -->
<?php
/******************/
/*** MON GROUPE ***/
/******************/
@ -253,7 +147,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
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>';
@ -284,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,64 +203,121 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
*/
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'grouplistForTeacher'; /******************************************************************************************************** A FAIRE **/
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
$request = new stdClass(); $answer = new stdClass();
groups_switch_level_1($request, $answer);
$request->level_1 = 'grouplistForTeacher';
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersgroups' title='Mes groupes' class='basic'>";
/* select pour SEMESTRES */
$lastSemestre = null;
groups_switch_level_1($request, $answer);
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>';
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' data-title='Mes groupes' class='basic'>";
$lastSemestre = $group['semestre'];
}
}
echo "<select>";
/* select pour GROUPES */
$lastGroupe = null;
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$ListeUIDFormations = array();
$ListeUIDSemestres = array();
$ListeUIDGroupes = array();
echo "<select name='groupe'>";
echo "<option value='*'>Tous les groupes</option>";
foreach($answer->grouplist as $group){
if( $lastGroupe == null || $lastGroupe != $group->nom ){
// 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['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>';
// 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];
$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
/**************************/
/* 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 "<td data-value='".$groupe['id_formation']."'>".$groupe['formation'].'</td>';
// on ajoute la formation à la liste pour ne pas la répéter
array_push($ListeUIDFormations, $groupe['id_formation']);
}}
echo "</tr></tbody></table>";
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && !in_array($groupe['id_semestre'], $ListeUIDSemestres) ){
if( $groupe['id_semestre'] == $semestreOpt ) // si c'est le groupe séléctionné
echo "<td data-value='".$groupe['id_semestre']."' class='active'>".$groupe['semestre'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$groupe['id_semestre']."'>".$groupe['semestre'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id']);
}}
echo "</tr></tbody></table>";
/***********************/
/* AFFINAGE PAR GROUPE */
/***********************/
echo "<select name='groupe'>";
if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
else echo "<option value='*'>Tous les groupes</option>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
if( $groupe['id'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$groupe['id']."' selected>".$groupe['nom'].'</option>';
else // sinon on affiche normalement
echo "<option value='".$groupe['id']."'>".$groupe['nom'].'</option>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id']);
}}
echo "</select>";
echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>';
echo '<th>Prenom</td>';
echo '<th>Nom</td>';
echo '<th>Semestre</td>';
echo '<th>Groupe</td>';
echo '</tr></thead></table>';
foreach($answer->grouplist as $group){ // pour chaque groupe
if( $group['id_formation'] == $formationOpt && ($semestreOpt==null || $semestreOpt==$group['id_semestre']) && ($groupeOpt==null || $groupeOpt==$group['id']) ){
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
@ -393,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>';
////////////////////////////////////////////////////////////////////////////////
}else
echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} ?>
@ -422,50 +375,91 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
$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);
groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
if( $answer->request == 'success' ){ // si pas d'erreur
if( $answer->request == 'success' && $answer->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<section name='movestudents' title='Déplacements' class='basic'>";
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'>";
/* select pour SEMESTRES */
$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'] ){
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>';
// 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']);
$lastSemestre = $group['semestre'];
}
}
echo "<select>";
// 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];
/* 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) ){
// 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>';
$lastGroupe = $group['nom'];
}
}
echo "<select>";
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDGroupes, $groupe['id']);
}}
echo "</select>";
@ -473,46 +467,63 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
foreach($answer->grouplist as $group){ // pour chaque groupe
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
if( $group['id_formation'] == $formationOpt && ($semestreOpt==null || $semestreOpt==$group['id_semestre']) && ($groupeOpt==null || $groupeOpt==$group['id']) ){
echo "<table class='basic col4'>";
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
echo '<thead>';
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe <span>'.$group['nom'].'</span>';
echo "<span style='font-weight:normal;padding-left:1em; font-size: .8em;'>(glisser-déposer étudiant pour le déplacer)</span>";
echo '</th>';
echo '</tr>';
echo '</thead>';
echo "<table class='basic col4'>";
echo '<tbody>';
// pour chaque utilisateur
foreach($group['userlist'] as $user){
echo '<thead>';
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
echo '<th colspan=5>';
echo 'Groupe <span>'.$group['nom'].'</span>';
echo '</th>';
echo '</tr>';
}
echo '</thead>';
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>';
echo '<tbody>';
// pour chaque utilisateur
foreach($group['userlist'] as $user){
echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>';
// echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
// changement de groupe
echo '<td>';
echo "<select data-stre='".$group['id_semestre']."' class='deplacement_groupe'>";
foreach($answer->grouplist as $groupemodif) // pour tous les groupes
if( $groupemodif['semestre'] == $group['semestre'] ) // si c'est un groupe du même semestre uniquement
if( $groupemodif['nom'] == $group['nom'] ) // si c'est le groupe en cours, on le pré-sélectionne
echo "<option value='".$groupemodif['nom']."' selected>".$groupemodif['nom']."</option>";
else
echo "<option value='".$groupemodif['nom']."'>".$groupemodif['nom']."</option>";
echo '</select>';
echo "<div class='confirm'>déplacer</div>";
echo '</td>';
echo '</tr>';
}
// echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody>';
echo '</table>';
}
}
}
echo '</section>';
////////////////////////////////////////////////////////
}else
echo "<section name='movestudents' title='Déplacements' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
}
} ?>
@ -524,7 +535,7 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
/*** IMPORTATION FICHIER EXCEL ***/
/*********************************/
// if( permission('admin') ){
// echo "<section name='importexcel' title='Importation/Export' class='basic'>";
// echo "<section name='importexcel' data-title='Importation/Export' class='basic'>";
// //inclusion des classes de PHPExcel
// include __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel.php"));

View File

@ -16,7 +16,7 @@ require_once __ROOT__.'/manager/groups.php';
?>
<section name='presentation' title='Présentation'>
<section name='presentation' data-title='Présentation'>
<p>Bienvenue sur la plateforme de gestion des étudiants de l'IUT Informatique de l'université Paul Sabatier, Toulouse 3<br>
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>

View File

@ -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,35 +62,73 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
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){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
}
if( $ueOpt == null || $UE['nom'] == $ueOpt ){
echo '</tbody>';
echo '</table>';
echo "<table class='basic'>";
echo "<thead class='normal'>";
echo '<tr>';
echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}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,36 +147,159 @@ if( permission('teacher') ){ // si l'utilisateur est un prof
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersmodules' title='Mes modules' class='basic'>";
echo "<section name='teachersmodules' data-title='Mes modules' class='basic'>";
foreach($answer->UEs as $UE){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
}
/* 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) ){
echo '</tbody>';
echo '</table>';
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $semestre['id']);
}}
echo "</tr></tbody></table>";
/*******************/
/* AFFINAGE PAR UE */
/*******************/
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
// on ajoute l'UE à la liste pour ne pas le répéter
array_push($ListeUIDUE, $UE['id']);
}}
}}
echo "</tr></tbody></table>";
foreach($answer->semestres as $semestre){
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
foreach($semestre['UElist'] as $UE){
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche les UEs en fonction de l'affinage
echo "<table class='basic'>";
echo "<thead>";
echo '<tr>';
echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
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,33 +315,175 @@ 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'>";
foreach($answer->UEs as $UE){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '</tr>';
}
/* 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) ){
echo '</tbody>';
echo '</table>';
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$semestre['id']."' class='active'>".$semestre['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$semestre['id']."'>".$semestre['nom'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $semestre['id']);
}}
echo "<td data-value='+'>+</td>"; // ajouter un semestre
echo "</tr></tbody></table>";
/*******************/
/* AFFINAGE PAR UE */
/*******************/
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des UEs en accord avec la FORMATION et le SEMESTRE sélectionnés */
foreach($answer->semestres as $semestre){ if( $semestre['id_formation'] == $formationOpt && in_array($semestre['id'], $ListeUIDSemestres) ){
foreach($semestre['UElist'] as $UE){ if( !in_array($UE['id'], $ListeUIDUE) ){
if( $UE['id'] == $ueOpt ) // si c'est l'UE séléctionnée
echo "<td data-value='".$UE['id']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['id']."'>".$UE['nom'].'</td>';
// on ajoute l'UE à la liste pour ne pas le répéter
array_push($ListeUIDUE, $UE['id']);
}}
}}
echo "<td data-value='+'>+</td>"; // ajouter un UE
echo "</tr></tbody></table>";
foreach($answer->semestres as $semestre){
if( ($semestreOpt == null || $semestre['id'] == $semestreOpt) && ($formationOpt == null || $semestre['id_formation'] == $formationOpt) ){ // on affiche les semestres en fonction de l'affinage
foreach($semestre['UElist'] as $UE){
if( $ueOpt == null || $UE['id'] == $ueOpt ){ // on affiche les UEs en fonction de l'affinage
echo "<table class='basic'>";
echo "<thead>";
echo '<tr>';
echo '<th colspan=5>'.$semestre['nom_formation'].' - '.$semestre['nom'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach($UE['modules'] as $MODULE){
echo '<tr>';
echo '<td>'.$MODULE['nom'].'</td>';
echo '<td>'.$MODULE['libelle'].'</td>';
echo '<td>'.$UE['nom'].' - '.$UE['libelle'].'</td>';
echo '</tr>';
}
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>";
} ?>
}
/***************************************/
/*** GESTION DES MCC (version admin) ***/
/***************************************/
if( permission('admin') ){ // si l'utilisateur est un admin
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'getMCC';
$request->annee = $_SESSION['annee'];
modules_switch_level_1($request, $answer);
// var_dump( $answer );
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<section name='managemcc' data-title='MCC' class='basic'>";
echo "<input type='text'>";
}else
echo "<section name='managemcc' data-title='MCC' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";
}
?>

View File

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

6
rdv1.client Normal file → Executable file
View File

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

View File

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

Before

Width:  |  Height:  |  Size: 218 B

View File

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

59
src/validate.svg Executable file
View File

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

After

Width:  |  Height:  |  Size: 2.0 KiB

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

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

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

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

View File

@ -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 |

View File

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