Affinage par formation pour enseignant@mes_groupes + admin@tous_les_groupes + utilisation d'UIDs

This commit is contained in:
xdrm-brackets 2015-11-17 08:35:21 +01:00
parent f0643a8d05
commit 6efa758cab
4 changed files with 273 additions and 307 deletions

View File

@ -175,8 +175,9 @@ class groupRepo extends DBAccess{
public static function membres($groupeUID, $semestreUID){ public static function membres($groupeUID, $semestreUID){
// si le groupe existe => on récupère ses utilisateurs // si le groupe existe => on récupère ses utilisateurs
$getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe ". $getMembres = DataBase::getPDO()->prepare("SELECT u.identifiant, u.prenom, u.nom, u.mail, u.droits, s.nom as semestre, g.id_groupe, g.nom as groupe ".
"FROM utilisateur as u, groupe as g, semestre as s, appartenance as app ". "FROM utilisateur as u, groupe as g, semestre as s, appartenance as app, formation as f ".
"WHERE u.identifiant = app.id_etudiant ". "WHERE s.id_formation = f.id_formation ".
"AND u.identifiant = app.id_etudiant ".
"AND g.id_groupe = app.id_groupe ". "AND g.id_groupe = app.id_groupe ".
"AND app.id_semestre = app.id_semestre ". // à virer (peut-être) "AND app.id_semestre = app.id_semestre ". // à virer (peut-être)
@ -205,12 +206,14 @@ class groupRepo extends DBAccess{
* *
*/ */
public static function forStudent($etudiant, $semestre){ public static function forStudent($etudiant, $semestre){
$getGroupe = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_appartenance, g.id_groupe as id, g.nom ". $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 ". "FROM groupe as g, appartenance as app, formation as f, semestre as s ".
"WHERE app.id_groupe = g.id_groupe ". "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 app.id_etudiant = :etudiant ".
"AND app.id_semestre = :semestre ". "AND s.id_semestre = :semestre ".
"ORDER BY g.nom"); "ORDER BY g.nom");
$getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre )); $getGroupe->execute(array( ':etudiant' => $etudiant, ':semestre' => $semestre ));
@ -244,9 +247,10 @@ class groupRepo extends DBAccess{
if( $pGroupe != null ){ $groupeOpt = $pGroupe; } if( $pGroupe != null ){ $groupeOpt = $pGroupe; }
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ". $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation ".
"FROM 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 ". "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 mcc_ue.id_semestre = s.id_semestre ". "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_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
"AND mcc_m.id_module = m.id_module ". "AND mcc_m.id_module = m.id_module ".
@ -325,9 +329,10 @@ class groupRepo extends DBAccess{
$semestrePair0 = '0'; $semestrePair1 = '1'; $semestrePair0 = '0'; $semestrePair1 = '1';
if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; } if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; }
$getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre ". $getGroupeList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe as id, g.nom, s.rang, s.id_semestre, s.nom as semestre, f.id_formation, f.code as formation, f.nom as nom_formation ".
"FROM groupe as g, semestre as s, appartenance as app ". "FROM groupe as g, semestre as s, appartenance as app, formation as f ".
"WHERE g.id_groupe = app.id_groupe ". "WHERE s.id_formation = f.id_formation ".
"AND g.id_groupe = app.id_groupe ".
"AND s.id_semestre = app.id_semestre ". "AND s.id_semestre = app.id_semestre ".
"AND g.nom LIKE '".$groupeOpt."' ". "AND g.nom LIKE '".$groupeOpt."' ".

View File

@ -2,37 +2,6 @@
// 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();
@ -98,11 +67,12 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
} }
/***************************************************/
/*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/ /**********************************************************************/
/***************************************************/ /*** GESTION DES SELECT/TABLES D'AFFINAGES POUR AFFINER LES GROUPES ***/
/**********************************************************************/
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select[name=groupe]"); var selectList = document.querySelectorAll("#CONTAINER > section[name] > select[name=groupe]");
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=semestre]"); var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=semestre], #CONTAINER > section[name] > table.partlist[name=formation]");
// GESTION DE L'AFFINAGE PAR SEMESTRE // // GESTION DE L'AFFINAGE PAR SEMESTRE //
for( var i = 0 ; i < partList.length ; i++ ){ for( var i = 0 ; i < partList.length ; i++ ){
@ -110,11 +80,26 @@ for( var i = 0 ; i < partList.length ; i++ ){
partList[i].addEventListener('click', function(e){ partList[i].addEventListener('click', function(e){
var tableauParent = e.target.parentNode.parentNode.parentNode; var tableauParent = e.target.parentNode.parentNode.parentNode;
if( tableauParent.tagName == 'TABLE' && tableauParent.getAttribute('name') == 'semestre' && e.target.dataset.hasOwnProperty('value') ){ if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){
pageM.vars[1] = 's:'+e.target.dataset.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 // si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[1]) ) if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop(); pageM.vars.pop();
reload(); reload();
@ -130,9 +115,15 @@ for( var i = 0 ; i < selectList.length ; i++ ){
selectList[i].addEventListener('change', function(e){ selectList[i].addEventListener('change', function(e){
if( e.target.tagName == 'SELECT' && e.target.getAttribute('name') == 'groupe' ){ if( e.target.tagName == 'SELECT' && e.target.getAttribute('name') == 'groupe' ){
pageM.vars[1] = 'g:'+e.target.value; pageM.vars[2] = 'g:'+e.target.value;
if( /\*$/.test(pageM.vars[1]) ) // si on a '*' comme valeur, on l'enlève // 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(); pageM.vars.pop();
reload(); reload();

View File

@ -19,8 +19,9 @@ require_once __ROOT__.'/manager/groups.php';
/*** GESTION DES PARAMETRES OPTIONNELS ***/ /*** GESTION DES PARAMETRES OPTIONNELS ***/
// on initialise les paramètres optionnels // on initialise les paramètres optionnels
$semestreOpt = null; $semestreOpt = null;
$groupeOpt = null; $groupeOpt = null;
$formationOpt = null;
// on cherche dans toutes les variables _get si on trouve des paramètres // on cherche dans toutes les variables _get si on trouve des paramètres
foreach($_POST as $k=>$v){ foreach($_POST as $k=>$v){
@ -31,9 +32,14 @@ require_once __ROOT__.'/manager/groups.php';
if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre
$semestreOpt = $m[1]; $semestreOpt = $m[1];
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1];
} }
$groupeOpt = ($groupeOpt == null || $groupeOpt == '*') ? null : $groupeOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt;
/************************/ /************************/
/*** TOUS LES GROUPES ***/ /*** TOUS LES GROUPES ***/
@ -102,109 +108,6 @@ if( permission('student') ){ // si connecté && utilisateur
/************************/
/*** TOUS LES GROUPES ***/
/************************/
/*
* PROFESSEUR -> affichage des semestres en cours
* ADMINISTRATEUR -> affichage des semestres en cours
*
*
*/
if( false && permission('teacher') ){ // si connecté && prof
$request = new stdClass();
$answer = new stdClass();
$request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer);
if( $answer->request == 'success' ){ // si pas d'erreur
//////////////////////////////////////////////////////////////
echo "<section name='allgroups' data-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' data-title='tous les groupes' class='basic'><table class=basic><tbody><tr><td>Aucun groupe trouvé</td></tr></tbody></table></section>";
} ?>
@ -213,11 +116,6 @@ if( false && permission('teacher') ){ // si connecté && prof
<!-- mon groupe -->
<?php
/******************/ /******************/
/*** MON GROUPE ***/ /*** MON GROUPE ***/
/******************/ /******************/
@ -306,68 +204,108 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
$request = new stdClass(); $answer = new stdClass(); $request = new stdClass(); $answer = new stdClass();
$requestPourListeGroupes = new stdClass();$answerPourListeGroupes = new stdClass();
$request->level_1 = 'grouplistForTeacher'; $request->level_1 = 'grouplistForTeacher';
$request->enseignant = $_SESSION['identifiant']; $request->enseignant = $_SESSION['identifiant'];
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
$requestPourListeGroupes->level_1 = 'grouplistForTeacher';
$requestPourListeGroupes->enseignant = $_SESSION['identifiant'];
$requestPourListeGroupes->annee = $_SESSION['annee'];
groups_switch_level_1($request, $answer); groups_switch_level_1($request, $answer);
groups_switch_level_1($requestPourListeGroupes, $answerPourListeGroupes);
if( $answer->request == 'success' && $answerPourListeGroupes->request == 'success' && count($answerPourListeGroupes->grouplist) > 0 ){ // si on a bien récupéré les membres du groupe if( $answer->request == 'success' && $answer->request == 'success' && count($answer->grouplist) > 0 ){ // si on a bien récupéré les membres du groupe
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'>"; echo "<section name='teachersgroups' data-title='Mes groupes' class='basic'>";
/* select pour SEMESTRES */
$lastSemestre = null; /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$ListeUIDFormations = array();
$ListeUIDSemestres = array();
$ListeUIDGroupes = array();
// Vérification de la formation si elle est définie
$verificationUIDFormations = array();
foreach($answer->grouplist as $groupe) // on récupère la liste des UID de FORMATIONS
if( !in_array($groupe['id_formation'], $verificationUIDFormations) )
array_push($verificationUIDFormations, $groupe['id_formation']);
// si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
$formationOpt = $verificationUIDFormations[0];
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt != null ) // si aucun semestre n'est spécifié, on selectionne "Tous" par défaut
echo "<td data-value='*'>Tous</td>";
else
echo "<td data-value='*' class='active'>Tous</td>";
foreach($answerPourListeGroupes->grouplist as $group){ /**************************/
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){ /* AFFINAGE PAR FORMATION */
/**************************/
echo "<table class='partlist' name='formation'><tbody><tr>";
foreach($answer->grouplist as $groupe){ if( !in_array($groupe['id_formation'], $ListeUIDFormations) ){
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$group['semestre']."' class='active'>".$group['semestre'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$group['semestre']."'>".$group['semestre'].'</td>';
$lastSemestre = $group['semestre']; 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>"; echo "</tr></tbody></table>";
/* select pour GROUPES */
$lastGroupe = null;
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && !in_array($groupe['id_semestre'], $ListeUIDSemestres) ){
if( $groupe['id_semestre'] == $semestreOpt ) // si c'est le groupe séléctionné
echo "<td data-value='".$groupe['id_semestre']."' class='active'>".$groupe['semestre'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$groupe['id_semestre']."'>".$groupe['semestre'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id']);
}}
echo "</tr></tbody></table>";
/***********************/
/* AFFINAGE PAR GROUPE */
/***********************/
echo "<select name='groupe'>"; echo "<select name='groupe'>";
echo "<option value='*'>Tous les groupes</option>"; if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
foreach($answer->grouplist as $group){ else echo "<option value='*'>Tous les groupes</option>";
if( $lastGroupe == null || $lastGroupe != $group->nom ){
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
if( $groupe['id'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$groupe['id']."' selected>".$groupe['nom'].'</option>';
else // sinon on affiche normalement
echo "<option value='".$groupe['id']."'>".$groupe['nom'].'</option>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id']);
}}
echo "</select>";
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>';
else
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
$lastGroupe = $group['nom'];
}
}
echo "<select>";
echo "<table class='basic col5'><thead><tr>"; echo "<table class='basic col5'><thead><tr>";
echo '<th>Identifiant</td>'; echo '<th>Identifiant</td>';
@ -379,27 +317,31 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
foreach($answer->grouplist as $group){ // pour chaque groupe foreach($answer->grouplist as $group){ // pour chaque groupe
if( 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 margin col5'>"; if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
echo '<tbody>'; echo "<table class='basic margin col5'>";
echo '<tbody>';
// pour chaque utilisateur // pour chaque utilisateur
foreach($group['userlist'] as $user){ foreach($group['userlist'] as $user){
echo '<tr>'; echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>'; echo "<td><span class=link>".$user['identifiant'].'</span></td>';
echo '<td>'.$user['prenom'].'</td>'; echo '<td>'.$user['prenom'].'</td>';
echo '<td>'.$user['nom'].'</td>'; echo '<td>'.$user['nom'].'</td>';
echo '<td>'.$group['semestre'].'</td>'; echo '<td>'.$group['semestre'].'</td>';
echo '<td>Groupe <span class=stressed>'.$group['nom'].'</span></td>'; echo '<td>Groupe <span class=stressed>'.$group['nom'].'</span></td>';
echo '</tr>'; echo '</tr>';
} }
// echo '<tr><td colspan=5 class=more></td></tr>'; // echo '<tr><td colspan=5 class=more></td></tr>';
echo '</tbody></table>'; echo '</tbody></table>';
}
} }
@ -431,69 +373,93 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
$request = new stdClass(); $request = new stdClass();
$answer = new stdClass(); $answer = new stdClass();
/* ce jeu de données sert à récupérer la liste des groupes (même quand on applique un filtrage) */
$requestPourListeGroupes = new stdClass();
$answerPourListeGroupes = new stdClass();
$request->level_1 = 'grouplistForYear'; $request->level_1 = 'grouplistForYear';
$request->annee = $_SESSION['annee']; $request->annee = $_SESSION['annee'];
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis
$requestPourListeGroupes->level_1 = 'grouplistForYear'; if( $answer->request == 'success' && $answer->request == 'success' ){ // si pas d'erreur
$requestPourListeGroupes->annee = $_SESSION['annee'];
groups_switch_level_1($requestPourListeGroupes, $answerPourListeGroupes); // on fait la requête pour avoir la liste des groupes quel que soit le filtrage
if( $answer->request == 'success' && $answerPourListeGroupes->request == 'success' ){ // si pas d'erreur
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
echo "<section name='movestudents' data-title='Tous les groupes' class='basic'>"; echo "<section name='movestudents' data-title='Tous les groupes' class='basic'>";
/* select pour SEMESTRES */ /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$lastSemestre = null; $ListeUIDFormations = array();
$ListeUIDSemestres = array();
$ListeUIDGroupes = array();
echo "<table class='partlist' name='semestre'><tbody><tr>"; // 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( $semestreOpt != null && $semestreOpt != '*') // si aucun semestre n'est spécifié, on selectionne "Tous" par défaut // si la formation optionnelle n'est pas définie ou incohérente, on le fait (première valeur trouvée)
echo "<td data-value='*'>Tous</td>"; if( $formationOpt == null || !in_array($formationOpt, $verificationUIDFormations) )
else $formationOpt = $verificationUIDFormations[0];
echo "<td data-value='*' class='active'>Tous</td>";
foreach($answerPourListeGroupes->grouplist as $group){
if( $lastSemestre == null || $lastSemestre != $group['semestre'] ){
if( $group['semestre'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$group['semestre']."' class='active'>".$group['semestre'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$group['semestre']."'>".$group['semestre'].'</td>';
$lastSemestre = $group['semestre']; /**************************/
} /* 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>"; echo "</tr></tbody></table>";
/* select pour GROUPES */
$lastGroupe = null;
/*************************/
/* AFFINAGE PAR SEMESTRE */
/*************************/
echo "<table class='partlist' name='semestre'><tbody><tr>";
if( $semestreOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
/* On récupère la liste des SEMESTRES en accord avec la FORMATION sélectionnée */
foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && !in_array($groupe['id_semestre'], $ListeUIDSemestres) ){
// si c'est le semestre séléctionné
if( $groupe['id_semestre'] == $semestreOpt ) echo "<td data-value='".$groupe['id_semestre']."' class='active'>".$groupe['semestre'].'</td>';
else echo "<td data-value='".$groupe['id_semestre']."'>".$groupe['semestre'].'</td>';
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDSemestres, $groupe['id_semestre']);
}}
echo "</tr></tbody></table>";
/***********************/
/* AFFINAGE PAR GROUPE */
/***********************/
echo "<select name='groupe'>"; echo "<select name='groupe'>";
echo "<option value='*'>Tous les groupes</option>"; if( $groupeOpt == null ) echo "<option value='*' selected>Tous les groupes</option>";
foreach($answer->grouplist as $group){ else echo "<option value='*'>Tous les groupes</option>";
if( $lastGroupe == null || $lastGroupe != $group['nom'] ){
if( $group['nom'] == $groupeOpt ) // si c'est le groupe séléctionné /* On récupère la liste des GROUPES en accord avec la FORMATION et le SEMESTRE sélectionnée */
echo "<option value='".$group['nom']."' selected>".$group['nom'].'</option>'; foreach($answer->grouplist as $groupe){ if( $groupe['id_formation'] == $formationOpt && in_array($groupe['id_semestre'], $ListeUIDSemestres) && !in_array($groupe['id'], $ListeUIDGroupes) ){
else
echo "<option value='".$group['nom']."'>".$group['nom'].'</option>';
$lastGroupe = $group['nom']; // si c'est le groupe sélectionné
} if( $groupe['id'] == $groupeOpt ) echo "<option value='".$groupe['id']."' selected>".$groupe['nom'].'</option>';
} else echo "<option value='".$groupe['id']."'>".$groupe['nom'].'</option>';
echo "<select>";
// on ajoute le semestre à la liste pour ne pas le répéter
array_push($ListeUIDGroupes, $groupe['id']);
}}
echo "</select>";
@ -501,52 +467,56 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
foreach($answer->grouplist as $group){ // pour chaque groupe foreach($answer->grouplist as $group){ // pour chaque groupe
if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs if( $group['id_formation'] == $formationOpt && ($semestreOpt==null || $semestreOpt==$group['id_semestre']) && ($groupeOpt==null || $groupeOpt==$group['id']) ){
echo "<table class='basic col4'>"; if( count($group['userlist']) > 0 ){ // s'il y a des utilisateurs
echo '<thead>'; echo "<table class='basic col4'>";
echo '<tr>';
echo '<th colspan=5>';
echo 'Groupe <span>'.$group['nom'].'</span>';
echo '</th>';
echo '</tr>';
echo '</thead>';
echo '<thead>';
echo '<tbody>';
// pour chaque utilisateur
foreach($group['userlist'] as $user){
echo '<tr>'; echo '<tr>';
echo "<td><span class=link>".$user['identifiant'].'</span></td>'; echo '<th colspan=5>';
echo '<td>'.$user['prenom'].'</td>'; echo 'Groupe <span>'.$group['nom'].'</span>';
echo '<td>'.$user['nom'].'</td>'; echo '</th>';
// echo '<td><strong><span>'.$group['nom'].'</span></strong></td>';
// changement de groupe
echo '<td>';
echo "<select data-stre='".$group['id_semestre']."' class='deplacement_groupe'>";
foreach($answerPourListeGroupes->grouplist as $groupemodif) // pour tous les groupes
if( $groupemodif['semestre'] == $group['semestre'] ) // si c'est un groupe du même semestre 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>';
} 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>';
}
} }
} }

View File

@ -476,7 +476,7 @@ if( permission('admin') ){ // si l'utilisateur est un admin
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo "<section name='managemcc' data-title='MCC' class='basic'>"; echo "<section name='managemcc' data-title='MCC' class='basic'>";
echo "<input type='text'>";
}else }else
echo "<section name='managemcc' data-title='MCC' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>"; echo "<section name='managemcc' data-title='MCC' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";