diff --git a/manager/career.php b/manager/career.php index 3d642d1..d212eb1 100755 --- a/manager/career.php +++ b/manager/career.php @@ -189,15 +189,20 @@ require_once __ROOT__.'/manager/database.php'; /**********************************************/ /* informations relatives au dossier étudiant */ /**********************************************/ - case 'studentcase': if( permission('teacher') || permission('master') || permission('admin') ){ + case 'studentcase': if( permission('master') || permission('admin') ){ - $areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings - $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types - $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format + $areSetParam = isset($request->etudiant) ; // les arguments existent + $typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings + $etudiantCheck = $typeOkParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format if( $etudiantCheck ){ // si tout les paramètres sont bons - $answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note); + $parcours = DataBase::getInstance()->getParcoursEtudiant($request->etudiant); + + if( is_array($parcours) ){ + $answer->parcours = $parcours; + $answer->request = 'success'; + }else + $answer->request = $parcours; }else $answer->request = 'param_error'; diff --git a/manager/database.php b/manager/database.php index 631b903..b0b12e4 100755 --- a/manager/database.php +++ b/manager/database.php @@ -740,6 +740,36 @@ class DataBase{ } + + /*************************************************/ + /* retourne les informations du dossier étudiant */ + /*************************************************/ + public function getParcoursEtudiant($etudiant){ + // on vérifie l'existence de l'étudiant + if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user'; + + + $parcours = semestreRepo::getParcours($etudiantUID); + foreach($parcours as $iter_s=>$semestre){ + $parcours[$iter_s]['UEs'] = ueRepo::forStudent($etudiantUID, $semestre['id']); + + foreach($parcours[$iter_s]['UEs'] as $iter_ue=>$UE){ + $parcours[$iter_s]['UEs'][$iter_ue]['modules'] = moduleRepo::forStudent($UE['id'], $semestre['id']); + + foreach($parcours[$iter_s]['UEs'][$iter_ue]['modules'] as $iter_mod=>$MOD){ + $parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($MOD['id'], $semestre['id']); + + foreach($parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$CONTROLE) + $parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($etudiantUID, $CONTROLE['id']); + + } + } + } + + return $parcours; + } + + /*******************************************/ /*** retourne les notes d'un enseignant ***/ /*******************************************/ diff --git a/manager/repo/semestre.php b/manager/repo/semestre.php index 6fad16c..2f7f9d5 100755 --- a/manager/repo/semestre.php +++ b/manager/repo/semestre.php @@ -231,6 +231,29 @@ class semestreRepo extends DBAccess{ } + /* retourne le parcours d'un étudiant sous forme d'un tableau de semestres + * + * @etudiant l'UID de l'étudiant en question + * + * + * @return semestres retourne la liste des semestres du parcours de l'étudiant (ordre chronologique) + * + */ + public static function getParcours($etudiant){ + $getSemestreListe = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code, f.nom as formation, f.nb_semestres, s.nom as semestre, s.rang, s.annee + FROM formation as f, semestre as s, appartenance as app + WHERE s.id_formation = f.id_formation + AND app.id_semestre = s.id_semestre + AND app.id_etudiant = :etudiant + ORDER BY s.annee, s.rang"); + $getSemestreListe->execute(array( ':etudiant' => $etudiant )); + + + return DataBase::delNumeric( $getSemestreListe->fetchAll() ); + } + + + /* retourne la liste des semestres qu'à un enseignant * diff --git a/page/_JS/career.js b/page/_JS/career.js index 881d88f..e208ce1 100755 --- a/page/_JS/career.js +++ b/page/_JS/career.js @@ -394,5 +394,40 @@ if( document.querySelector('#CONTAINER section[name=allcontroles]') != null ){ / +/*******************************/ +/* GESTION DU DOSSIER ETUDIANT */ +/*******************************/ +var studentCase = document.querySelector('#CONTAINER > section[name=studentcase]'); +if( studentCase != null ){ + + var semestreLinks = document.querySelectorAll('#CONTAINER > section[name=studentcase] .semestre_circle'); + + // pour chaque semestre, on créé l'évènement + for( var i = 0 ; i < semestreLinks.length ; i++ ){ + + semestreLinks[i].addEventListener('click', function(e){ + if( e.target.getAttribute('class') == 'semestre_circle' && e.target.getAttribute('data-stre') != null ){ + console.log(e.target); + pageM.vars[2] = 's:'+e.target.getAttribute('data-stre'); + reload(); + } + + }, false); + + } + + +} + + + + + + + + + + + --> \ No newline at end of file diff --git a/page/career.php b/page/career.php index 6b94880..cc4af6e 100755 --- a/page/career.php +++ b/page/career.php @@ -849,11 +849,8 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ $request = new stdClass(); $answer = new stdClass(); - $request->level_1 = 'getNotesEtudiant'; + $request->level_1 = 'studentcase'; $request->etudiant = $etudiantOpt; - $request->formation = '1'; // ITINN1 2015 - $request->semestre = '1'; // S1 ITINN1 2015 - $request->annee = $_SESSION['annee']; career_switch_level_1($request, $answer); @@ -861,38 +858,45 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ //////////////////////////////////////////////////////////////////////////////// echo "
"; - $parcours = array('ITINN1 S1', 'ITINN1 S2', 'ITINN2 S3', 'ITINN2 S4'); - displayParcours( $parcours ); + $parcoursChart = array(); + foreach($answer->parcours as $semestre) array_push($parcoursChart, array('id'=>$semestre['id'], 'nom' => $semestre['formation'].' '.$semestre['semestre']) ); + + displayParcours( $parcoursChart ); - foreach($answer->UEs as $UE){ // pour chaque UE - echo ""; - - echo "'; - - echo '
".$UE['nom'].' - '.$UE['libelle'].'
'; - foreach($UE['modules'] as $module){ // pour chaque module - echo ''; - echo ''; + // pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné) + foreach($answer->parcours as $semestre){ if( $semestreOpt == null || $semestreOpt == $semestre['id'] ){ - foreach($module['controles'] as $controle){ // pour chaque contrôle - echo ''; - echo ''; + foreach($semestre['UEs'] as $UE){ // pour chaque UE + echo "
'.$module['nom'].' - '.$module['libelle'].'
'.$controle['libelle'].'
"; + + echo "'; + + echo '
".$UE['nom'].' - '.$UE['libelle'].'
'; + foreach($UE['modules'] as $module){ // pour chaque module + echo ''; + echo ''; - if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note' - echo ''; - else // si une note, alors on l'affiche - echo ''; - - echo ""; - echo ''; - echo ''; + foreach($module['controles'] as $controle){ // pour chaque contrôle + echo ''; + echo ''; + + if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note' + echo ''; + else // si une note, alors on l'affiche + echo ''; + + echo ""; + echo ''; + echo ''; + } + echo ''; } - echo ''; - } - echo '
'.$module['nom'].' - '.$module['libelle'].'
Pas de note'.number_format($controle['notes'][0]['valeur'], 2).' / '.$controle['base'].'".$module['nom']." - ".$module['libelle']."Coefficient '.number_format($controle['coefficient'], 2).'
'.$controle['libelle'].'Pas de note'.number_format($controle['notes'][0]['valeur'], 2).' / '.$controle['base'].'".$module['nom']." - ".$module['libelle']."Coefficient '.number_format($controle['coefficient'], 2).'
'; + echo ''; - } + } + + }} //////////////////////////////////////////////////////////////////////////////// echo '
'; }else diff --git a/src/files/admin2_import_mcc.xlsx b/src/files/admin2_import_mcc.xlsx new file mode 100755 index 0000000..7c391af Binary files /dev/null and b/src/files/admin2_import_mcc.xlsx differ diff --git a/svg.php b/svg.php index fdfa572..e69d143 100644 --- a/svg.php +++ b/svg.php @@ -6,7 +6,7 @@ function displayParcours($parcours){ /* paramètres de texte */ $lettrePixel = 10; // taille d'une lettre pour centrer le texte $maxLettres = 0; - foreach($parcours as $p) if( strlen($p) > $maxLettres ) $maxLettres = strlen($p); // on récupère le libellé le plus long + foreach($parcours as $p) if( strlen($p['nom']) > $maxLettres ) $maxLettres = strlen($p['nom']); // on récupère le libellé le plus long /* calcul du positionnement */ @@ -57,9 +57,9 @@ function displayParcours($parcours){ // [3] points d'ancrages for($i = 0 ; $i < $n ; $i++){ - $ti = $lettrePixel * strlen( $parcours[$i] ); // longueur du texte actuel - echo "".$parcours[$i].""; - echo ""; + $ti = $lettrePixel * strlen( $parcours[$i]['nom'] ); // longueur du texte actuel + echo "".$parcours[$i]['nom'].""; + echo ""; } echo ""; @@ -67,4 +67,18 @@ function displayParcours($parcours){ /* FIN DU SVG */ /**************/ } + + + + + +// exemple +// displayParcours(array( +// array('id'=>1, 'nom'=>'S1'), +// array('id'=>2, 'nom'=>'S2'), +// array('id'=>3, 'nom'=>'S3'), +// array('id'=>4, 'nom'=>'S4') +// )); + + ?> \ No newline at end of file diff --git a/test.php b/test.php index 846ecbf..5622478 100755 --- a/test.php +++ b/test.php @@ -48,35 +48,35 @@ debug(); // $_SESSION['annee'] = 2015; -require_once __ROOT__.'/manager/phpExcel.php'; -require_once __ROOT__.'/manager/groups.php'; +// require_once __ROOT__.'/manager/phpExcel.php'; +// require_once __ROOT__.'/manager/groups.php'; -$_SESSION['identifiant'] = 'modele'; // afin de lire le fichier +// $_SESSION['identifiant'] = 'modele'; // afin de lire le fichier -$r1 = new stdClass(); $a1 = new stdClass(); -$r1->level_1 = 'import_mcc'; +// $r1 = new stdClass(); $a1 = new stdClass(); +// $r1->level_1 = 'import_mcc'; -xlsx_switch_lvl1($r1, $a1); +// xlsx_switch_lvl1($r1, $a1); -if( $a1->request == 'success' ){ +// if( $a1->request == 'success' ){ - $mcc = $a1->mcc; - $ue11 = $mcc[0]; $ue11mods = $ue11['modules']; - $ue12 = $mcc[1]; $ue12mods = $ue12['modules']; +// $mcc = $a1->mcc; +// $ue11 = $mcc[0]; $ue11mods = $ue11['modules']; +// $ue12 = $mcc[1]; $ue12mods = $ue12['modules']; - var_dump( $ue11mods[0]['controles'] ); +// var_dump( $ue11mods[0]['controles'] ); - // $r2 = new stdClass(); $a2 = new stdClass(); - // $r2->level_1 = 'addUserlist'; - // $r2->rang = 1; - // $r2->annee = 2018; - // $r2->formationList = $a1->formationList; +// // $r2 = new stdClass(); $a2 = new stdClass(); +// // $r2->level_1 = 'addUserlist'; +// // $r2->rang = 1; +// // $r2->annee = 2018; +// // $r2->formationList = $a1->formationList; - // groups_switch_level_1($r2, $a2); +// // groups_switch_level_1($r2, $a2); - // var_dump( $a2 ); -} +// // var_dump( $a2 ); +// }