Modification page/modules affichage par semestre, par UE, par modules

This commit is contained in:
xdrm-brackets 2015-11-16 12:02:03 +01:00
parent 499d17346c
commit 4d4f2aae45
8 changed files with 165 additions and 63 deletions

View File

@ -438,13 +438,23 @@ class DataBase{
/*** retourne les modules des semestres en cours ***/ /*** retourne les modules des semestres en cours ***/
/***************************************************/ /***************************************************/
public function getModulesByUEByYear($semestre_pair, $annee){ // ***OPTIONNEL*** semestre_pair 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 debug();
$UEList[$iter]['modules'] = moduleRepo::forYear($UE['id'], $semestre_pair, $annee);
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;
} }

View File

@ -112,14 +112,13 @@ require_once __ROOT__.'/manager/database.php';
$anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $anneeCheck = $nEmptyParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format
if( $anneeCheck ){ // si tout les paramètres sont bons if( $anneeCheck ){ // si tout les paramètres sont bons
$UEList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee); $semestreList = DataBase::getInstance()->getModulesByUEByYear(null, $request->annee);
// $UEList = DataBase::getInstance()->getModulesByUEByYear($_SESSION['semestre_pair'], $request->annee);
// STRUCTURE // STRUCTURE
// tableau d'UES contenant un tableau de MODULES // tableau d'UES contenant un tableau de MODULES
if( is_array($UEList) ){ // si on a bien un tableau if( is_array($semestreList) ){ // si on a bien un tableau
$answer->UEs = $UEList; // on renvoie dans answer->ues $answer->semestres = $semestreList; // on renvoie dans answer->ues
$answer->request = 'success'; // et on renvoie success $answer->request = 'success'; // et on renvoie success
}else // sinon si c'est pas un tableau }else // sinon si c'est pas un tableau
$answer->request = $UEList; // on retourne l'erreur $answer->request = $UEList; // on retourne l'erreur

View File

@ -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<int> l'UID d'un UE * @UEUID<int> l'UID d'un UE
* @semestre_pair<Boolean> VRAI si le semestre est pair * @semestre<int> l'UID du semestre en question
* @annee<int> l'année en cours
* *
* @return modules<Array> retourne un tableau contenant les modules de l'utilisateur pour ce semestre * @return modules<Array> retourne un tableau contenant les modules de l'utilisateur pour ce semestre
* @return existent<Boolean> FAUX si aucun module n'a été trouvé * @return existent<Boolean> 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 // on récupère les modules
$getModulesForYear = DataBase::getPDO()->prepare("SELECT DISTINCT m.id_module as id, m.nom, m.libelle ". $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 ". "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_semestre = s.id_semestre ".
"AND mcc_ue.id_ue = :UEUID ". "AND mcc_ue.id_ue = :UEUID ".
"AND s.rang % 2 = :semestre_pair ". "AND s.id_semestre = :semestre ".
"AND s.annee = :annee ".
"ORDER BY s.rang, m.nom, m.libelle"); "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() ); return DataBase::delNumeric( $getModulesForYear->fetchAll() );
} }

View File

@ -106,6 +106,26 @@ class semestreRepo extends DBAccess{
/* retourne la liste des semestres d'une année
*
* @annee<int> l'année en question
*
*
* @return semestres<Array> retourne la liste des semestres de cette année
* @return FALSE<Boolean> 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() );
}
} }

View File

@ -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<Boolean> VRAI si le semestre est pair * @semestre<int> l'UID du semestre en question
* @annee<int> l'année en cours
* *
* @return UEs<Array> retourne un tableau contenant les UEs des semestres en cours * @return UEs<Array> retourne un tableau contenant les UEs du semestre en question
* @return existent<Boolean> FAUX si aucun UE n'a été trouvé * @return existent<Boolean> FAUX si aucun UE n'a été trouvé
* *
*/ */
public static function forYear($semestre_pair, $annee){ public static function forYear($semestre){
$semestrePair0 = '0'; $semestrePair1 = '1';
if( is_bool($semestre_pair) ){ $semestrePair0 = $semestre_pair; $semestrePair1 = $semestre_pair; }
// on récupère les modules // 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 ". "FROM ue, mcc_ue, semestre as s ".
"WHERE ue.id_ue = mcc_ue.id_ue ". "WHERE ue.id_ue = mcc_ue.id_ue ".
"AND mcc_ue.id_semestre = s.id_semestre ". "AND mcc_ue.id_semestre = s.id_semestre ".
"AND (s.rang % 2 = :semestre_pair0 OR s.rang % 2 = :semestre_pair1) ". "AND s.id_semestre = :semestre ".
"AND s.annee = :annee ".
"ORDER BY s.rang, ue.nom, ue.libelle"); "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() );
} }

View File

@ -54,15 +54,15 @@
error_reporting(-1); error_reporting(-1);
} }
function distinctArray($inArray){ // function distinctArray($inArray){
$outArray = array(); // $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 // 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) ) // if( !in_array($value, $outArray) )
array_push($outArray, $value); // array_push($outArray, $value);
return $outArray; // return $outArray;
} // }
function secure_sha1($text){ function secure_sha1($text){

View File

@ -5,14 +5,21 @@
/********************************/ /********************************/
/* GESTION DE L'AFFINAGE PAR UE */ /* 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++ ){ 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') == 'UE' && e.target.dataset.hasOwnProperty('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; pageM.vars[1] = 'u:'+e.target.dataset.value;
// si on a '*' comme valeur, on l'enlève // si on a '*' comme valeur, on l'enlève

View File

@ -8,16 +8,21 @@ require_once __ROOT__.'/manager/modules.php';
// on initialise les paramètres optionnels // on initialise les paramètres optionnels
$ueOpt = null; $ueOpt = null;
$semestreOpt = 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){
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 = $m[1];
} }
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt; $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 "<section name='allmodules' data-title='Tous les modules' class='basic'>"; echo "<section name='allmodules' data-title='Tous les modules' class='basic'>";
/* ON RECUPERE UNE LISTE UNIQUE DES UEs */ /* ON RECUPERE UNE LISTE UNIQUE DES SEMESTRES */
$ListeNomsSemestres = array();
$ListeNomsUE = array(); $ListeNomsUE = array();
foreach($answer->UEs as $UE) 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'] ); array_push( $ListeNomsUE, $UE['nom'] );
}
$ListeNomsSemestres = array_unique($ListeNomsSemestres);
$ListeNomsUE = array_unique($ListeNomsUE); $ListeNomsUE = array_unique($ListeNomsUE);
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>";
foreach($ListeNomsSemestres as $NomSemestre)
if( $NomSemestre == $semestreOpt ) // si c'est le semestre séléctionné
echo "<td data-value='".$NomSemestre."' class='active'>".$NomSemestre.'</td>';
else // sinon on affiche normalement
echo "<td data-value='".$NomSemestre."'>".$NomSemestre.'</td>';
echo "</tr></tbody></table>";
echo "<table class='partlist' name='UE'><tbody><tr>"; echo "<table class='partlist' name='UE'><tbody><tr>";
if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>"; if( $ueOpt == null ) echo "<td data-value='*' class='active'>Tous</td>";
@ -202,14 +229,19 @@ if( permission('admin') ){ // si l'utilisateur est un admin
echo "</tr></tbody></table>"; echo "</tr></tbody></table>";
foreach($answer->UEs as $UE){
if( $ueOpt == null || $UE['nom'] == $ueOpt ){ 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 "<table class='basic'>"; echo "<table class='basic'>";
echo "<thead class='normal'>"; echo "<thead class='normal'>";
echo '<tr>'; echo '<tr>';
echo '<th colspan=5><strong>'.$UE['semestre'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>'; echo '<th colspan=5><strong>'.$semestre['nom'].'</strong> - '.$UE['nom'].' - '.$UE['libelle'].'</th>';
echo '</tr>'; echo '</tr>';
echo '</thead>'; echo '</thead>';
echo '<tbody>'; echo '<tbody>';
@ -225,11 +257,52 @@ if( permission('admin') ){ // si l'utilisateur est un admin
} }
} }
}
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
echo '</section>'; echo '</section>';
}else }else
echo "<section name='allmodules' data-title='Tous les modules' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>"; echo "<section name='allmodules' data-title='Tous les modules' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";
} ?> }
/***************************************/
/*** 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 "<section name='managemcc' data-title='MCC' class='basic'>";
}else
echo "<section name='managemcc' data-title='MCC' class='basic'><table class='basic'><tbody><tr><td>Aucun module trouvé</td></tr></tbody></table></section>";
}
?>