From 4d4f2aae45173999273b567f0cfca174dd9d4189 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 16 Nov 2015 12:02:03 +0100 Subject: [PATCH] Modification page/modules affichage par semestre, par UE, par modules --- manager/database.php | 20 +++++-- manager/modules.php | 7 +-- manager/repo/module.php | 12 ++-- manager/repo/semestre.php | 20 +++++++ manager/repo/ue.php | 21 +++---- manager/security.php | 14 ++--- page/_JS/modules.js | 13 +++- page/modules.php | 121 ++++++++++++++++++++++++++++++-------- 8 files changed, 165 insertions(+), 63 deletions(-) diff --git a/manager/database.php b/manager/database.php index df8eb43..cd8db30 100755 --- a/manager/database.php +++ b/manager/database.php @@ -438,13 +438,23 @@ class DataBase{ /*** retourne les modules des semestres en cours ***/ /***************************************************/ public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair - // on récupère la liste des UEs - $UEList = ueRepo::forYear($semestre_pair, $annee); - 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); + debug(); - return $UEList; + // on récupère les semestres de cette année + $semestreList = semestreRepo::forYear($annee); + + 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; } diff --git a/manager/modules.php b/manager/modules.php index fb45ff5..e8ae6c2 100755 --- a/manager/modules.php +++ b/manager/modules.php @@ -112,14 +112,13 @@ 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(null, $request->annee); - // $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 = $UEList; // on retourne l'erreur diff --git a/manager/repo/module.php b/manager/repo/module.php index b2c08fb..e99fdbc 100755 --- a/manager/repo/module.php +++ b/manager/repo/module.php @@ -105,17 +105,16 @@ class moduleRepo extends DBAccess{ - /* RENVOIE LA LISTE DES MODULES D'UN UE D'UNE ANNEE COURANTE (SEMESTRES COURANTS) + /* RENVOIE LA LISTE DES MODULES D'UN UE D'UN SEMESTRE PARTICULIER * * @UEUID l'UID d'un UE - * @semestre_pair VRAI si le semestre est pair - * @annee l'année en cours + * @semestre l'UID du semestre en question * * @return modules retourne un tableau contenant les modules de l'utilisateur pour ce semestre * @return existent 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 ". @@ -124,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() ); } diff --git a/manager/repo/semestre.php b/manager/repo/semestre.php index 3955503..0c2c76d 100755 --- a/manager/repo/semestre.php +++ b/manager/repo/semestre.php @@ -106,6 +106,26 @@ class semestreRepo extends DBAccess{ + /* retourne la liste des semestres d'une année + * + * @annee l'année en question + * + * + * @return semestres retourne la liste des semestres de cette année + * @return FALSE retourne FALSE si aucun semestre ne correspond aux critères + * + */ + public static function forYear($annee){ + $getSemestreList = DataBase::getPDO()->prepare("SELECT id_semestre as id, nom, rang, annee ". + "FROM semestre ". + "WHERE annee = :annee ". + "ORDER BY rang ASC"); + $getSemestreList->execute(array( ':annee' => $annee )); + + return DataBase::delNumeric( $getSemestreList->fetchAll() ); + } + + } \ No newline at end of file diff --git a/manager/repo/ue.php b/manager/repo/ue.php index 3976063..733c9bb 100755 --- a/manager/repo/ue.php +++ b/manager/repo/ue.php @@ -104,31 +104,26 @@ class ueRepo extends DBAccess{ - /* 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 VRAI si le semestre est pair - * @annee l'année en cours + * @semestre l'UID du semestre en question * - * @return UEs retourne un tableau contenant les UEs des semestres en cours + * @return UEs retourne un tableau contenant les UEs du semestre en question * @return existent FAUX si aucun UE n'a été trouvé * */ - public static function forYear($semestre_pair, $annee){ - $semestrePair0 = '0'; $semestrePair1 = '1'; - if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; } - + public static function forYear($semestre){ // on récupère les modules - $getUEsForYear = DataBase::getPDO()->prepare("SELECT DISTINCT ue.id_ue as id, s.id_semestre, s.nom as semestre, s.annee, 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_pair0 OR s.rang % 2 = :semestre_pair1) ". - "AND s.annee = :annee ". + "AND s.id_semestre = :semestre ". "ORDER BY s.rang, ue.nom, ue.libelle"); - $getUEsForYear->execute(array( ':semestre_pair0' => $semestrePair0, ':semestre_pair1' => $semestrePair1, ':annee' => $annee )); + $getUEList->execute(array( ':semestre' => $semestre )); - return DataBase::delNumeric( $getUEsForYear->fetchAll() ); + return DataBase::delNumeric( $getUEList->fetchAll() ); } diff --git a/manager/security.php b/manager/security.php index 7cd2eb6..2bdbd48 100755 --- a/manager/security.php +++ b/manager/security.php @@ -54,15 +54,15 @@ error_reporting(-1); } - function distinctArray($inArray){ - $outArray = array(); + // 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); + // 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; - } + // return $outArray; + // } function secure_sha1($text){ diff --git a/page/_JS/modules.js b/page/_JS/modules.js index 55eb1f9..87903cd 100644 --- a/page/_JS/modules.js +++ b/page/_JS/modules.js @@ -5,16 +5,23 @@ /********************************/ /* GESTION DE L'AFFINAGE PAR UE */ /********************************/ -var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE]"); +var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], #CONTAINER > section[name] > table.partlist[name=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' && tableauParent.getAttribute('name') == 'UE' && e.target.dataset.hasOwnProperty('value') ){ - pageM.vars[1] = 'u:'+e.target.dataset.value; + if( tableauParent.tagName == 'TABLE' && e.target.dataset.hasOwnProperty('value') ){ + /* SI c'est une affinage par SEMESTRE */ + if( tableauParent.getAttribute('name') == 'semestre' ) + pageM.vars[1] = 's:'+e.target.dataset.value; + + /* SI c'est un affinage par UE */ + if( tableauParent.getAttribute('name') == 'UE' ) + 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(); diff --git a/page/modules.php b/page/modules.php index f786a7b..ce1a4ed 100755 --- a/page/modules.php +++ b/page/modules.php @@ -8,16 +8,21 @@ require_once __ROOT__.'/manager/modules.php'; // on initialise les paramètres optionnels $ueOpt = null; + $semestreOpt = 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 + if( preg_match('/^s:(.+)$/', $k, $m) ) // s:nomSemestre + $semestreOpt = $m[1]; + + if( preg_match('/^u:(.+)$/', $k, $m) ) // u:nomUE $ueOpt = $m[1]; } $ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt; + $semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt; /**************************************** @@ -183,12 +188,34 @@ if( permission('admin') ){ // si l'utilisateur est un admin echo "
"; - /* ON RECUPERE UNE LISTE UNIQUE DES UEs */ + /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */ + $ListeNomsSemestres = array(); $ListeNomsUE = array(); - foreach($answer->UEs as $UE) - array_push( $ListeNomsUE, $UE['nom'] ); + foreach($answer->semestres as $semestre){ + array_push( $ListeNomsSemestres, $semestre['nom'] ); + + /* ON RECUPERE UNE LISTE UNIQUE DES UEs */ + foreach($semestre['UElist'] as $UE) + array_push( $ListeNomsUE, $UE['nom'] ); + } + + $ListeNomsSemestres = array_unique($ListeNomsSemestres); $ListeNomsUE = array_unique($ListeNomsUE); + echo ""; + if( $semestreOpt == null ) echo ""; + else echo ""; + + foreach($ListeNomsSemestres as $NomSemestre) + if( $NomSemestre == $semestreOpt ) // si c'est le semestre séléctionné + echo "'; + else // sinon on affiche normalement + echo "'; + echo "
TousTous".$NomSemestre.'".$NomSemestre.'
"; + + + + echo ""; if( $ueOpt == null ) echo ""; @@ -202,34 +229,80 @@ if( permission('admin') ){ // si l'utilisateur est un admin echo "
Tous
"; - foreach($answer->UEs as $UE){ - if( $ueOpt == null || $UE['nom'] == $ueOpt ){ - - 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'].'
'; + foreach($answer->semestres as $semestre){ + + if( $semestreOpt == null || $semestre['nom'] == $semestreOpt ){ // on affiche les semestres en fonction de l'affinage + + foreach($semestre['UElist'] as $UE){ + + if( $ueOpt == null || $UE['nom'] == $ueOpt ){ // on affiche les UEs en fonction de l'affinage + + echo ""; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($UE['modules'] as $MODULE){ + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
'.$semestre['nom'].' - '.$UE['nom'].' - '.$UE['libelle'].'
'.$MODULE['nom'].''.$MODULE['libelle'].'
'; + + } + } } + } //////////////////////////////////////////////////////////////////////////////// echo '
'; }else echo "
Aucun module trouvé
"; -} ?> +} + + + + + + + + + + +/***************************************/ +/*** 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 "
"; + + + + }else + echo "
Aucun module trouvé
"; + +} + + +?>