Ajout de la visualisation des modules d'un enseignant (page/modules.php|manager/modules.php|manager/database.php)

This commit is contained in:
xdrm-brackets 2015-11-06 23:00:08 +01:00
parent deb8976037
commit 53846ce4b8
12 changed files with 316 additions and 81 deletions

View File

@ -205,11 +205,16 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
/* [3] GESTION DE L'AUTHENTIFICATION
==============================================================*/
// ferme l'interface d'authentification quand clic autre part que sur zone AUTH
DOM.WRAPPER.addEventListener('mousedown', function(e){ remClass(DOM.WRAPPER, 'blurred'); }, false);
// ouvre l'interface d'authentification quand click sur bouton prévu à cet effet
DOM.LOGOUT.addEventListener('mouseup', function(e){ addClass(DOM.WRAPPER, 'blurred'); }, false);
DOM.LOGOUT.addEventListener('mouseup', function(e){ addClass(DOM.WRAPPER, 'blurred'); DOM.AUTH.children[1].focus(); }, false);
if( !connected ) // sur zone verte si pas connecté
DOM.MENU.children[0].addEventListener('mouseup', function(e){ addClass(DOM.WRAPPER, 'blurred'); }, false);
DOM.MENU.children[0].addEventListener('mouseup', function(e){ addClass(DOM.WRAPPER, 'blurred'); DOM.AUTH.children[1].focus(); }, false);
else // sinon amène sur le profil
DOM.MENU.children[0].addEventListener('mouseup', function(e){
@ -219,10 +224,6 @@ else // sinon amène sur le profil
// ferme l'interface d'authentification quand clic autre part que sur zone AUTH
DOM.WRAPPER.addEventListener('mousedown', function(e){ remClass(DOM.WRAPPER, 'blurred'); }, false);
/* [4] GESTION DES FORMULAIRES

View File

@ -716,6 +716,174 @@ class DataBase{
}
/**************************************************/
/*** retourne les modules d'un étudiant par UEs ***/
/**************************************************/
public function getModulesByUEByEnseignant($enseignant, $annee){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$getSemestreUID->execute(array(
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( ! $getSemestreUID->fetch() )
return 'unknown_year';
/*** on cherche un utilisateur avec cet identifiant ***/
$getEnseignantUID = $this->pdo->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 = :enseignant");
$getEnseignantUID->execute(array(
':annee' => $annee,
':enseignant' => $enseignant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if( $enseignantUID = $getEnseignantUID->fetch()['id'] )
$enseignantUID = $enseignantUID;
else
return 'unknown_teacher';
$UEList = $this->getUEsEnseignant($enseignant, $annee); // on récupère la liste des UEs
foreach($UEList as $iter=>$UE){
// si on a l'UID utilisateur & l'UID groupe => on récupère les modules
$getModuleList = $this->pdo->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 ".
"AND ens.id_enseignant = :enseignantUID ".
"AND ue.id_ue = :UEUID ".
"AND s.annee = :annee ".
"ORDER BY m.nom, m.libelle ASC");
$getModuleList->execute(array(
':enseignantUID' => $enseignantUID,
':UEUID' => $UE['id'],
':annee' => $annee
));
$modulelist = $getModuleList->fetchAll(); // on récupère la liste des modules
// on supprime les doublons des entrées (indice numérique)
for( $i = 0 ; $i < count($modulelist) ; $i++ ) // pour tout les modules
foreach($modulelist[$i] as $col => $val) // pour toutes les entrées
if( is_int($col) ) // si l'indice est un entier
unset( $modulelist[$i][$col] ); // on le supprime
$UEList[$iter]['modules'] = $modulelist; // on ajoute la liste des mdules
}
return $UEList;
}
/****************************************/
/*** retourne les UEs d'un enseignant ***/
/****************************************/
public function getUEsEnseignant($enseignant, $annee){
/*** on cherche un semestre avec ce rang et cette année (qui est unique) ***/
$getSemestreUID = $this->pdo->prepare("SELECT id_semestre as id FROM semestre WHERE annee = :annee");
$getSemestreUID->execute(array(
':annee' => $annee
));
// si on trouve, on le définit, sinon on retourne "unknown_group"
if( ! $getSemestreUID->fetch() )
return 'unknown_year';
/*** on cherche un utilisateur avec cet identifiant ***/
$getEnseignantUID = $this->pdo->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 = :enseignant");
$getEnseignantUID->execute(array(
':annee' => $annee,
':enseignant' => $enseignant
));
// si on trouve, on le définit, sinon on retourne "unknown_user"
if( $enseignantUID = $getEnseignantUID->fetch()['id'] )
$enseignantUID = $enseignantUID;
else
return 'unknown_teacher';
// si on a l'UID enseignant => on récupère les UEs
$getUEList = $this->pdo->prepare("SELECT DISTINCT ue.id_ue as id, s.annee as annee, ue.nom as nom, ue.libelle as 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 mcc_m.id_mcc_ue = mcc_ue.id_mcc_ue ".
"AND mcc_ue.id_ue = ue.id_ue ".
"AND ens.id_enseignant = :enseignantUID ".
"AND s.annee = :annee ".
"ORDER BY ue.nom, ue.libelle ASC");
$getUEList->execute(array(
':enseignantUID' => $enseignantUID,
':annee' => $annee
));
$UElist = $getUEList->fetchAll(); // on récupère la liste des modules
// on supprime les doublons des entrées (indice numérique)
for( $i = 0 ; $i < count($UElist) ; $i++ ) // pour tout les modules
foreach($UElist[$i] as $col => $val) // pour toutes les entrées
if( is_int($col) ) // si l'indice est un entier
unset( $UElist[$i][$col] ); // on le supprime
return $UElist;
}
/**************************************/
/*** retourne les notes par modules ***/
/**************************************/

View File

@ -33,36 +33,9 @@ require_once __ROOT__.'/manager/database.php';
switch( $request->level_1 ){
/***********************************/
/* liste des modules d'un ETUDIANT */
/***********************************/
// case 'getByEtudiant':
// $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
// $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->semestre) && is_numeric($request->annee); // des bon types
// $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{6,100}$/i', $request->etudiant); // nom bon format
// $semestreCheck = $etudiantCheck && preg_match('/^[1-4]{1}$/i', $request->semestre); // semestre (semestre) bon format
// $anneeCheck = $semestreCheck && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
// if( $anneeCheck ){ // si tout les paramètres sont bons
// $modules = DataBase::getInstance()->getModulesEtudiant($request->etudiant, $request->semestre, $request->annee);
// // STRUCTURE
// // tableau d'UES contenant un tableau de MODULES
// if( is_array($modules) ){ // si on a bien un tableau
// $answer->modules = $modules; // on renvoie dans answer->modules
// $answer->request = 'success'; // et on renvoie success
// }else // sinon si c'est pas un tableau
// $answer->request = $modules; // on retourne l'erreur
// }else
// $answer->request = 'param_error';
// break;
/*******************************/
/* liste des UES d'un ETUDIANT */
/*******************************/
/********************************************/
/* liste des modules d'un ETUDIANT (par UE) */
/********************************************/
case 'getByEtudiant':
$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
@ -86,6 +59,31 @@ require_once __ROOT__.'/manager/database.php';
$answer->request = 'param_error';
break;
/**********************************************/
/* liste des modules d'un ENSEIGNANT (par UE) */
/**********************************************/
case 'getByEnseignant':
$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 -]{6,100}$/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
$UEList = DataBase::getInstance()->getModulesByUEByEnseignant($request->enseignant, $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
$answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau
$answer->request = $UEList; // on retourne l'erreur
}else
$answer->request = 'param_error';
break;

View File

@ -23,7 +23,30 @@
/* [0] CONSTANTES
============================================================*/
function getPermissions(){ return array('student', 'teacher', 'master', 'admin'); }
function getPermissions(){ // retourne la liste des droits existants
return array('student', 'teacher', 'master', 'admin');
}
/** retourne l'état "connecté" de l'utilisateur courant
*
* @return state<Boolean> VRAI si connecté / FAUX si pas connecté
*
*/
function connected(){
return $_SESSION['identifiant'] != null;
}
/** retourne si un utilisateur a un droit ou non
*
* @return permission<Boolean> VRAI si l'utilisateur a ce droit / FAUX s'il ne l'a pas
*
* */
function permission($perm){
return connected() && is_int( array_search($perm, $_SESSION['droits']) );
}
function debug(){
ini_set('display_errors',1);
@ -60,24 +83,21 @@
session_start(); // on démarre la session
$PERMISSIONS = getPermissions();
// on vérifie l'intégrité des variables session
$identifiantDefinedProperly = isset($_SESSION['identifiant']) && !empty($_SESSION['identifiant']) && gettype($_SESSION['identifiant']) == 'string' && strlen($_SESSION['identifiant']) > 0;
$droitsDefinedProperly = isset($_SESSION['droits']) && !empty($_SESSION['droits']) && gettype($_SESSION['droits']) == 'string' && strlen($_SESSION['droits']) > 0;
$droitsDefinedProperly = isset($_SESSION['droits']) && !empty($_SESSION['droits']) && is_array($_SESSION['droits']) && count($_SESSION['droits']) > 0;
if( $droitsDefinedProperly )
foreach($_SESSION['droits'] as $droit)
if( !is_int( array_search($droit, getPermissions()) ) ) // si le droit n'est pas dans la liste des possibilitées, on retourne false
$droitsDefinedProperly = false;
// si les variables sessions ne sont pas toutes les 2 correctes
if( !($identifiantDefinedProperly && $droitsDefinedProperly) ){
if( !$identifiantDefinedProperly || !$droitsDefinedProperly ){
$_SESSION['identifiant'] = null; // on les initialise à NULL
$_SESSION['droits'] = null;
$_SESSION['droits'] = array();
}
}session_init();
}session_init();
?>

View File

@ -160,7 +160,7 @@ require_once __ROOT__.'/manager/database.php';
if( $userList->{$username}->password == $password ){
// on définit les variables session
$_SESSION['identifiant'] = $username;
$_SESSION['droits'] = $userList->{$username}->permissions;
$_SESSION['droits'] = $userList->{$username}->permissions; // est un TABLEAU
/******************************* TEMPO *********************************/
$_SESSION['semestre'] = '2';

View File

@ -28,7 +28,7 @@ require_once __ROOT__.'/manager/career.php';
/**************************************/
/*** MES MODULES (version étudiant) ***/
/**************************************/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
@ -81,7 +81,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
/**********************************/
/*** MES UEs (version étudiant) ***/
/**********************************/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
debug();

View File

@ -46,7 +46,7 @@ require_once __ROOT__.'/manager/groups.php';
*
*
*/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si connecté && utilisateur
if( permission('student') ){ // si connecté && utilisateur
echo "<section name='studentallgroups' title='tous les groupes' class='basic'>";
$request = new stdClass();
@ -116,7 +116,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
*
*
*/
if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_SESSION['droits'] == 'admin') ){ // si connecté && prof ou admin
if( permission('teacher') || permission('admin') ){ // si connecté && prof ou admin
echo "<section name='allgroups' title='tous les groupes' class='basic'>";
$request = new stdClass();
@ -231,7 +231,7 @@ if( $_SESSION['identifiant'] != null && ($_SESSION['droits'] == 'teacher' || $_S
* ETUDIANT -> son groupe de son semestre
*
*/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='studentsgroup' title='Mon groupe' class='basic'>";
$request = new stdClass(); $answer = new stdClass();
@ -307,7 +307,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
* PROFESSEUR -> les groupes inscrits aux modules qu'il enseigne
*
*/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // si l'utilisateur est connecté et que c'est un élève
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='teachersgroups' title='Mes groupes' class='basic'>";
$request = new stdClass(); $answer = new stdClass();
@ -415,7 +415,7 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'teacher' ){ // s
/****************************/
/*** DEPLACEMENT D'ELEVES ***/
/****************************/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'admin' ){ // si l'utilisateur est connecté et que c'est un élève
if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un élève
echo "<section name='movestudents' title=\"Déplacements\" class='basic'>";
for( $i = 2 ; $i <= 2 ; $i++ ){ // pour chaque semestre

View File

@ -16,7 +16,7 @@ require_once __ROOT__.'/manager/groups.php';
?>
<section name='home' title='Présentation'>
<section name='presentation' 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>
@ -36,7 +36,7 @@ require_once __ROOT__.'/manager/groups.php';
<?php /* [2] Notifications
=======================================================*/
if( $_SESSION['identifiant'] != null ){ // si on est connecté ?>
if( connected() ){ // si on est connecté ?>
<section name='notifications' title='Notifications'>
<p>Notification 3</p>
<p>Notification 2</p>

View File

@ -22,7 +22,7 @@ require_once __ROOT__.'/manager/modules.php';
/**************************************/
/*** MES MODULES (version étudiant) ***/
/**************************************/
if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // si l'utilisateur est connecté et que c'est un élève
if( permission('student') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
@ -61,3 +61,52 @@ if( $_SESSION['identifiant'] != null && $_SESSION['droits'] == 'student' ){ // s
echo "Erreur interne.";
} ?>
<!-- mes modules -->
<?php
/****************************************/
/*** MES MODULES (version enseignant) ***/
/****************************************/
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'getByEnseignant';
$request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee'];
modules_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe
////////////////////////////////////////////////////////////////////////////////
echo "<section name='mymodules' 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>';
}
echo '</tbody>';
echo '</table>';
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}else
echo "Erreur interne.";
} ?>

View File

@ -5,7 +5,7 @@ require_once __ROOT__.'/manager/security.php';
/***************/
/*** PROFILE ***/
/***************/
if( $_SESSION['identifiant'] != null ){ // si l'utilisateur est connecté
if( connected() ){ // si l'utilisateur est connecté
echo "<section name='myprofile' title='Profil'>";
echo 'profil';
echo '</section>';

View File

@ -1,36 +1,36 @@
{
"eleve1": {
"permissions": "student",
"permissions": ["student"],
"password" : "password"
},
"mrd1609a": {
"permissions": "student",
"permissions": ["student"],
"password" : "password"
},
"eleve2": {
"permissions": "student",
"permissions": ["student"],
"password" : "password"
},
"lbh1609a": {
"permissions": "teacher",
"permissions": ["teacher"],
"password" : "password"
},
"prof2": {
"permissions": "master",
"permissions": ["master"],
"password" : "password"
},
"admin1": {
"permissions": "admin",
"permissions": ["admin"],
"password" : "password"
},
"admin2": {
"permissions": "admin",
"permissions": ["admin"],
"password" : "password"
}

View File

@ -1,6 +1,7 @@
<?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/security.php';
var_dump( $_SESSION['droits'] );
/***************/
/*** A FAIRE ***/
@ -163,23 +164,21 @@ require_once __ROOT__.'/manager/security.php';
/*** AFFICHER LES GROUPES D'UNE ANNEE ***/
require __ROOT__.'/manager/groups.php';
// require __ROOT__.'/manager/groups.php';
$request = new stdClass();
$answer = new stdClass();
// $request = new stdClass();
// $answer = new stdClass();
$request->level_1 = 'grouplistForYear';
$request->semestre = '3'; // groupe.nom // OPTIONNEL
$request->annee = '2015'; // annee
// $request->groupe = 'S3A'; // OPTIONNEL
// $request->level_1 = 'grouplistForYear';
// $request->semestre = '3'; // groupe.nom // OPTIONNEL
// $request->annee = '2015'; // annee
// // $request->groupe = 'S3A'; // OPTIONNEL
groups_switch_level_1($request, $answer);
var_dump( $answer );
echo "<br><br><br><br><br><br><br>It works !";
// groups_switch_level_1($request, $answer);
// var_dump( $answer );
// echo "<br><br><br><br><br><br><br>It works !";