Suppression doublons semestres

This commit is contained in:
xdrm-brackets 2015-11-15 19:10:33 +01:00
parent 80c247d425
commit 76f17132bd
7 changed files with 180 additions and 57 deletions

View File

@ -534,7 +534,7 @@ class DataBase{
/***************************************************/
/*** retourne les modules des semestres en cours ***/
/***************************************************/
public function getModulesByUEByYear($semestre_pair, $annee){
public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair
// on récupère la liste des UEs
$UEList = ueRepo::forYear($semestre_pair, $annee);

View File

@ -112,7 +112,8 @@ 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);
$UEList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee);
// $UEList = DataBase::getInstance()->getModulesByUEByYear($_SESSION['semestre_pair'], $request->annee);
// STRUCTURE
// tableau d'UES contenant un tableau de MODULES

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 ".
@ -84,7 +84,7 @@ class ueRepo extends DBAccess{
*/
public static function forTeacher($enseignant, $semestre_pair, $annee){
// on récupère les modules
$getUesForTeacher = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
$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
@ -114,16 +114,19 @@ class ueRepo extends DBAccess{
*
*/
public static function forYear($semestre_pair, $annee){
$semestrePair0 = '0'; $semestrePair1 = '1';
if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; }
// on récupère les modules
$getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.annee, ue.nom, ue.libelle ".
$getUEsForYear = 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.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ".
"AND s.annee = :annee ".
"ORDER BY s.rang, ue.nom, ue.libelle");
$getUEsForYear->execute(array( ':semestre_pair' => ($semestre_pair) ? '0' : '1', ':annee' => $annee ));
$getUEsForYear->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee ));
return DataBase::delNumeric( $getUEsForYear->fetchAll() );
}

View File

@ -54,9 +54,15 @@
error_reporting(-1);
}
debug();
function distinctArray($inArray){
$outArray = array();
foreach($inArray as $value) // pour chaque élément du tableau d'entrée, on l'ajoute uniquement si aucune entrée du tableau de sortie n'a la même valeur
if( !in_array($value, $outArray) )
array_push($outArray, $value);
return $outArray;
}
function secure_sha1($text){

View File

@ -2,9 +2,9 @@
/**************************************/
/* GESTION DE L'AFFINAGE PAR SEMESTRE */
/**************************************/
/********************************/
/* GESTION DE L'AFFINAGE PAR UE */
/********************************/
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE]");
for( var i = 0 ; i < partList.length ; i++ ){

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

@ -0,0 +1,30 @@
<!--
/********************************/
/* GESTION DE L'AFFINAGE PAR UE */
/********************************/
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE]");
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' && tableauParent.getAttribute('name') == 'UE' && e.target.dataset.hasOwnProperty('value') ){
pageM.vars[1] = 'u:'+e.target.dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[1]) )
pageM.vars.pop();
reload();
}
}, false);
}
-->

View File

@ -3,6 +3,23 @@ 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;
// on cherche dans toutes les variables _get si on trouve des paramètres
foreach($_POST as $k=>$v){
if( preg_match('/^u:(.+)$/', $k, $m) ) // s:nomSemestre
$ueOpt = $m[1];
}
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt;
/****************************************
* *
* SECTION "MODULES" *
@ -37,11 +54,25 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentsmodules' data-title='Mes modules' class='basic'>";
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
foreach($answer->UEs as $UE)
if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$UE['nom']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['nom']."'>".$UE['nom'].'</td>';
echo "</tr></tbody></table>";
foreach($answer->UEs as $UE){
if( $ueOpt == null || $UE['nom'] == $ueOpt ){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo "<thead class='normal'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
@ -54,6 +85,8 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
echo '</tbody>';
echo '</table>';
}
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
@ -84,11 +117,27 @@ if( permission('teacher') ){ // si l'utilisateur est un prof
////////////////////////////////////////////////////////////////////////////////
echo "<section name='teachersmodules' data-title='Mes modules' class='basic'>";
echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
else echo "<td data-value='*'>Tous</td>";
foreach($answer->UEs as $UE)
if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$UE['nom']."' class='active'>".$UE['nom'].'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$UE['nom']."'>".$UE['nom'].'</td>';
echo "</tr></tbody></table>";
foreach($answer->UEs as $UE){
if( $ueOpt == null || $UE['nom'] == $ueOpt ){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo "<thead class='normal'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
@ -101,6 +150,8 @@ if( permission('teacher') ){ // si l'utilisateur est un prof
echo '</tbody>';
echo '</table>';
}
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
@ -131,11 +182,41 @@ if( permission('admin') ){ // si l'utilisateur est un admin
////////////////////////////////////////////////////////////////////////////////
echo "<section name='allmodules' data-title='Tous les modules' class='basic'>";
/* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
// $ListeNomsSemestres = array();
// foreach($answer->UEs as $UE)
// array_push( $ListeNomsSemestres, $UE['semestre'] );
// $ListeNomsSemestres = array_unique($ListeNomsSemestres);
/* ON RECUPERE UNE LISTE UNIQUE DES UEs */
$ListeNomsUE = array();
foreach($answer->UEs as $UE)
array_push( $ListeNomsUE, $UE['nom'] );
$ListeNomsUE = array_unique($ListeNomsUE);
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($ListeNomsUE as $NomUE)
if( $NomUE == $ueOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$NomUE."' class='active'>".$NomUE.'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$NomUE."'>".$NomUE.'</td>';
echo "</tr></tbody></table>";
foreach($answer->UEs as $UE){
if( $ueOpt == null || $UE['nom'] == $ueOpt ){
echo "<table class='basic'>";
echo "<thead class='active'>";
echo "<thead class='normal'>";
echo '<tr>';
echo '<th colspan=5>'.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
@ -148,6 +229,8 @@ if( permission('admin') ){ // si l'utilisateur est un admin
echo '</tbody>';
echo '</table>';
}
}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';