From 76f17132bd7b140b462ad73c8991177e84db56c0 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 15 Nov 2015 19:10:33 +0100 Subject: [PATCH] Suppression doublons semestres --- manager/database.php | 2 +- manager/modules.php | 3 +- manager/repo/ue.php | 13 ++-- manager/security.php | 10 ++- page/_JS/career.js | 6 +- page/_JS/modules.js | 30 ++++++++ page/modules.php | 173 ++++++++++++++++++++++++++++++++----------- 7 files changed, 180 insertions(+), 57 deletions(-) create mode 100644 page/_JS/modules.js diff --git a/manager/database.php b/manager/database.php index 5e75e7d..214d6f1 100755 --- a/manager/database.php +++ b/manager/database.php @@ -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); diff --git a/manager/modules.php b/manager/modules.php index 1196e04..fb45ff5 100755 --- a/manager/modules.php +++ b/manager/modules.php @@ -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 diff --git a/manager/repo/ue.php b/manager/repo/ue.php index 8a35824..3976063 100755 --- a/manager/repo/ue.php +++ b/manager/repo/ue.php @@ -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() ); } diff --git a/manager/security.php b/manager/security.php index 62f96ec..7cd2eb6 100755 --- a/manager/security.php +++ b/manager/security.php @@ -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){ diff --git a/page/_JS/career.js b/page/_JS/career.js index 96b10cc..d3e9b5a 100644 --- a/page/_JS/career.js +++ b/page/_JS/career.js @@ -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++ ){ diff --git a/page/_JS/modules.js b/page/_JS/modules.js new file mode 100644 index 0000000..55eb1f9 --- /dev/null +++ b/page/_JS/modules.js @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/page/modules.php b/page/modules.php index 8808e62..038dbfe 100755 --- a/page/modules.php +++ b/page/modules.php @@ -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,23 +54,39 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un //////////////////////////////////////////////////////////////////////////////// echo "
"; + echo ""; + if( $ueOpt == null ) echo ""; + else echo ""; + + foreach($answer->UEs as $UE) + if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné + echo "'; + else // sinon on affiche normalement + echo "'; + echo "
TousTous".$UE['nom'].'".$UE['nom'].'
"; + foreach($answer->UEs as $UE){ - echo ""; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - foreach($UE['modules'] as $MODULE){ - echo ''; - echo ''; - echo ''; - echo ''; - } + + if( $ueOpt == null || $UE['nom'] == $ueOpt ){ - echo ''; - echo '
'.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + echo ""; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($UE['modules'] as $MODULE){ + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
'.$UE['semestre'].' - '.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + + } } //////////////////////////////////////////////////////////////////////////////// echo '
'; @@ -84,23 +117,41 @@ if( permission('teacher') ){ // si l'utilisateur est un prof //////////////////////////////////////////////////////////////////////////////// echo "
"; + + echo ""; + if( $ueOpt == null ) echo ""; + else echo ""; + + foreach($answer->UEs as $UE) + if( $UE['nom'] == $ueOpt ) // si c'est le semestre séléctionné + echo "'; + else // sinon on affiche normalement + echo "'; + echo "
TousTous".$UE['nom'].'".$UE['nom'].'
"; + + foreach($answer->UEs as $UE){ - echo ""; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - foreach($UE['modules'] as $MODULE){ - echo ''; - echo ''; - echo ''; - echo ''; - } + + if( $ueOpt == null || $UE['nom'] == $ueOpt ){ - echo ''; - echo '
'.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + echo ""; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($UE['modules'] as $MODULE){ + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
'.$UE['semestre'].' - '.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + + } } //////////////////////////////////////////////////////////////////////////////// echo '
'; @@ -131,23 +182,55 @@ if( permission('admin') ){ // si l'utilisateur est un admin //////////////////////////////////////////////////////////////////////////////// echo "
"; + + + /* 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 ""; + if( $ueOpt == null ) echo ""; + else echo ""; + + foreach($ListeNomsUE as $NomUE) + if( $NomUE == $ueOpt ) // si c'est le semestre séléctionné + echo "'; + else // sinon on affiche normalement + echo "'; + echo "
TousTous".$NomUE.'".$NomUE.'
"; + + foreach($answer->UEs as $UE){ - echo ""; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - foreach($UE['modules'] as $MODULE){ - echo ''; - echo ''; - echo ''; - echo ''; - } + + if( $ueOpt == null || $UE['nom'] == $ueOpt ){ - echo ''; - echo '
'.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + echo ""; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($UE['modules'] as $MODULE){ + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
'.$UE['semestre'].' - '.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + + } } //////////////////////////////////////////////////////////////////////////////// echo '
';