From e25aa52d9634f23019986fec2c57fe7650c062a3 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sat, 2 Jan 2016 15:55:25 +0100 Subject: [PATCH] =?UTF-8?q?[x]=20Clonage=20d'un=20MCC=20=09+=20On=20r?= =?UTF-8?q?=C3=A9cup=C3=A8re=20la=20derni=C3=A8re=20ann=C3=A9e=20ayant=20d?= =?UTF-8?q?es=20MCC=20(au=20moins=20un=20UE)=20=09+=20On=20clone=20les=20s?= =?UTF-8?q?emestres=20=09=09+=20On=20clone=20les=20mcc=5Fue=20=09=09=09+?= =?UTF-8?q?=20On=20clone=20les=20mcc=5Fmodules=20=09=09=09=09+=20On=20dupl?= =?UTF-8?q?ique=20les=20contr=C3=B4les?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/career.php | 23 ++++++++++++++-- manager/database.php | 58 +++++++++++++++++++++++++++++++++++++++ manager/repo/controle.php | 2 +- manager/repo/semestre.php | 14 ++++++++++ page/_JS/modules.js | 34 +++++++++++++++++++++++ page/modules.php | 20 ++++++++++++++ test.php | 3 +- 7 files changed, 148 insertions(+), 6 deletions(-) diff --git a/manager/career.php b/manager/career.php index 8f4d625..eb62ef7 100755 --- a/manager/career.php +++ b/manager/career.php @@ -265,9 +265,9 @@ class careerManager{ - /**********************/ - /* intégration du MCC */ - /**********************/ + /***********************/ + /* intégration des MCC */ + /***********************/ case 'setMCC': if( permission('admin') ){ @@ -283,6 +283,23 @@ class careerManager{ + /*******************/ + /* clonage des MCC */ + /*******************/ + case 'cloneMCC': if( permission('admin') ){ + + + if( isset($request->annee) && checkParam($request->annee, 'semestre.annee') ){ // si tout les paramètres sont bons + $answer->request = DataBase::getInstance()->cloneMCC($request->annee); + }else + $answer->request = 'param_error'; + + }else + $answer->request = 'permission_error'; + break; + + + diff --git a/manager/database.php b/manager/database.php index a78b1d9..436e753 100755 --- a/manager/database.php +++ b/manager/database.php @@ -150,6 +150,64 @@ class DataBase{ } + + /* clone les MCC de la dernière année à l'année donnée + * + * @annee L'année de destination + * + * @return status "success" si tout s'est bien passé, sinon code erreur + * + */ + public function cloneMCC($annee){ + // on récupère la dernière année à être référencée, si aucun résultat, on retourne une erreur + if( !($srcYear=semestreRepo::getLastMCCYear()['annee']) ) return 'no_mcc_found'; + + // année de destination + $dstYear = $annee; + + + /* [1] Pour chaque SEMESTRE de l'année + ============================================*/ + $listSemestre = semestreRepo::forYear($srcYear); + foreach($listSemestre as $SEMESTRE){ + // on clone le semestre pour la nouvelle année + $newSemestreUID = semestreRepo::creer($SEMESTRE['formation'], $SEMESTRE['nom_formation'], $SEMESTRE['nom'], $SEMESTRE['rang'], $dstYear); + + /* [2] Pour chaque UE de ce semestre + ============================================*/ + $listUE = ueRepo::forYear($SEMESTRE['id']); + foreach($listUE as $UE){ + // on clone le mcc_ue mais pour le nouveau semestre + $newUEUID = ueRepo::forMCC($newSemestreUID, $UE['nom'], $UE['libelle'], $UE['coefficient']); + + /* [3] Pour chaque MODULE de cet UE + ============================================*/ + $listModule = moduleRepo::forYear($UE['id'], $SEMESTRE['id']); + foreach($listModule as $MODULE){ + // on clone le mcc_module mais pour le nouvel mcc_ue + $newModuleUID = moduleRepo::forMCC($newUEUID, $MODULE['nom'], $MODULE['libelle'], $MODULE['coefficient']); + + /* [4] Pour chaque CONTRÔLE de ce module + ============================================*/ + $listControle = controleRepo::forYear($MODULE['id'], $SEMESTRE['id']); + foreach($listControle as $CONTROLE){ + // on duplique le contrôle mais pour le nouveau mcc_module + $newControleUID = controleRepo::forMCC($newModuleUID, $CONTROLE['nom'], $CONTROLE['libelle'], $CONTROLE['coefficient']); + + } + + } + + } + + } + + + // tout s'est bien déroulé si on est arrivé jusque là + return 'success'; + + } + diff --git a/manager/repo/controle.php b/manager/repo/controle.php index 822920d..b0080b7 100755 --- a/manager/repo/controle.php +++ b/manager/repo/controle.php @@ -241,7 +241,7 @@ class controleRepo{ } - // on retourne enfin l'UID du mcc_ue en question + // on retourne enfin l'UID du contrôle en question return $controleUID; } diff --git a/manager/repo/semestre.php b/manager/repo/semestre.php index dab2d88..801e895 100755 --- a/manager/repo/semestre.php +++ b/manager/repo/semestre.php @@ -430,4 +430,18 @@ class semestreRepo{ } + + /* RETOURNE LA DERNIERE ANNEE AYANT UN MCC + * + * @return annee Retourne l'année en question + * + */ + public static function getLastMCCYear(){ + $getLastMccYear = DataBase::getPDO()->query("SELECT DISTINCT max(s.annee) as annee + FROM semestre as s, mcc_ue + GROUP BY s.annee"); + + return $getLastMccYear->fetch(); + } + } \ No newline at end of file diff --git a/page/_JS/modules.js b/page/_JS/modules.js index d025dbb..d835600 100755 --- a/page/_JS/modules.js +++ b/page/_JS/modules.js @@ -226,4 +226,38 @@ if( creerSemestre != null ){ // si la page est présente + + +/*****************************/ +/* GESTION DU CLONAGE DE MCC */ +/*****************************/ +var cloneMCC = document.querySelector('#clone_mcc[data-year]'); + +if( cloneMCC != null ){ // si la page est présente + + cloneMCC.addEventListener('click', function(e){ + + addClass( cloneMCC, 'loading' ); + + // année de destination + var fAnnee = cloneMCC.dataset.year; + + var request = { + level_0: 'career', + level_1: 'cloneMCC', + annee: fAnnee, + } + + API.send(request, function(e){ + if( e.request == 'success' ) + reload(); + }); + + + }, false); + +} + + + --> \ No newline at end of file diff --git a/page/modules.php b/page/modules.php index f372641..eb8888e 100755 --- a/page/modules.php +++ b/page/modules.php @@ -764,6 +764,26 @@ if( permission('admin') ){ } +if( permission('admin') ){ + + // on définit correctement l'année + if( $anneeOpt == null || $anneeOpt < $_SESSION['annee'] || $anneeOpt > $_SESSION['annee']+5 ) $anneeOpt = $_SESSION['annee']; + + + echo "
"; + + echo "
"; + + echo "
Clonage des MCC de la dernière année pour l'année suivante
"; + echo "
Cloner pour " .($_SESSION['annee']+1). "
"; + + echo "
"; + + echo "
"; + +} + + ?> diff --git a/test.php b/test.php index 0a1e14f..dfa5039 100755 --- a/test.php +++ b/test.php @@ -45,8 +45,7 @@ require_once __ROOT__.'/manager/security.php'; debug(); -$_SESSION['semestre'] = 37; -var_dump( $_SESSION ); +var_dump( semestreRepo::getLastMCCYear() ); // [1] On récupère tous les UE d'un étudiant // $uelist = DataBase::getInstance()->getUEsEtudiant('mrd1609a', 16, 2015);