diff --git a/API.php b/API.php index dc8cf2c..17255c7 100755 --- a/API.php +++ b/API.php @@ -32,8 +32,8 @@ require_once __ROOT__.'/manager/security.php'; /* UTILISATEUR */ /***************/ case 'user': - if( isset($request->level_1) ){ require_once __ROOT__.'/manager/user.php'; user_switch_level_1($request, $answer); } - else { $answer->request = 'missing_level_1'; } + if( isset($request->level_1) ){ userManager::switch_level_1($request, $answer); } + else { $answer->request = 'missing_level_1'; } break; @@ -41,8 +41,8 @@ require_once __ROOT__.'/manager/security.php'; /* GROUPES */ /***********/ case 'groups': - if( isset($request->level_1) ){ require_once __ROOT__.'/manager/groups.php'; groups_switch_level_1($request, $answer); } - else { $answer->request = 'missing_level_1'; } + if( isset($request->level_1) ){ groupsManager::switch_level_1($request, $answer); } + else { $answer->request = 'missing_level_1'; } break; @@ -50,8 +50,8 @@ require_once __ROOT__.'/manager/security.php'; /* DOSSIER ETUDIANT (NOTES,...) */ /********************************/ case 'career': - if( isset($request->level_1) ){ require_once __ROOT__.'/manager/career.php'; career_switch_level_1($request, $answer); } - else { $answer->request = 'missing_level_1'; } + if( isset($request->level_1) ){ careerManager::switch_level_1($request, $answer); } + else { $answer->request = 'missing_level_1'; } break; @@ -59,16 +59,16 @@ require_once __ROOT__.'/manager/security.php'; /* MODULE */ /**********/ case 'modules': - if( isset($request->level_1) ){ require_once __ROOT__.'/manager/modules.php'; modules_switch_level_1($request, $answer); } - else { $answer->request = 'missing_level_1'; } + if( isset($request->level_1) ){ modulesManager::switch_level_1($request, $answer); } + else { $answer->request = 'missing_level_1'; } break; /**********/ /* MODULE */ /**********/ case 'phpExcel': - if( isset($request->level_1) ){ require_once __ROOT__.'/manager/phpExcel.php'; xlsx_switch_lvl1($request, $answer); } - else { $answer->request = 'missing_level_1'; } + if( isset($request->level_1) ){ excelManager::switch_lvl1($request, $answer); } + else { $answer->request = 'missing_level_1'; } break; diff --git a/manager/career.php b/manager/career.php index efccf65..91a9ff9 100755 --- a/manager/career.php +++ b/manager/career.php @@ -1,8 +1,4 @@ - - - -level_1 ){ @@ -354,5 +351,5 @@ require_once __ROOT__.'/manager/security.php'; } - +} ?> \ No newline at end of file diff --git a/manager/excel.php b/manager/excel.php new file mode 100755 index 0000000..f8f4abc --- /dev/null +++ b/manager/excel.php @@ -0,0 +1,553 @@ +level_1) { + + /***************************************************/ + /* Export la liste des étudiants d'un groupe donné */ + /***************************************************/ + case 'export_userlist_group': + + // Vérification de la présence des groupes + + if( isset($request->grouplist) && $request->grouplist != null ){ + + //On crée une instance du fichier xls,activation de la feuille + + $workbook = new PHPExcel(); + $sheet = $workbook->getActiveSheet(); + $writer = new PHPExcel_Writer_Excel2007($workbook); + + // Définition des paramètres du document + + $workbook->getProperties()->setCreator($_SESSION['identifiant']); + $workbook->getProperties()->setLastModifiedBy('ACGA'); + $workbook->getProperties()->setTitle('Liste étudiants '.$_SESSION['annee']); + + // Définition du format des cellules (document Excel) + + $sheet->getColumnDimension('B')->setWidth(20); + $sheet->getColumnDimension('C')->setWidth(20); + $sheet->getColumnDimension('D')->setWidth(15); + $sheet->getColumnDimension('E')->setWidth(8); + $sheet->getColumnDimension('F')->setWidth(35); + $sheet->getColumnDimension('G')->setWidth(12); + $sheet->getColumnDimension('H')->setWidth(12); + + // Écriture des colonnes du tableau + + $sheet->setCellValue('B1', "GROUPE DES ETUDIANTS DE L'ANNEE ".$_SESSION['annee']); + $sheet->setCellValue('A2', date("d/m/Y G:m")); + $sheet->setCellValue('A4', 'Numéro'); + $sheet->setCellValue('B4', 'Nom'); + $sheet->setCellValue('C4', 'Prénom'); + $sheet->setCellValue('D4', 'Identifiant'); + $sheet->setCellValue('E4', 'Sexe'); + $sheet->setCellValue('F4', 'Mail étudiant'); + $sheet->setCellValue('G4', 'Code IAE'); + $sheet->setCellValue('H4', 'IAE Etape'); + + // Écriture des valeurs dans le document Excel + + $index = 5; + foreach ( $request->grouplist as $group ) { + + $groupeName = $group['nom']; + $formation = $group['formation']; + + foreach ( $group['userlist'] as $student ) { + + $sheet->setCellValue('A'.$index, $index-4); + $sheet->setCellValue('B'.$index, $student['nom']); + $sheet->setCellValue('C'.$index, $student['prenom']); + $sheet->setCellValue('D'.$index, $student['identifiant']); + $sheet->setCellValue('E'.$index, $student['sexe']); + $sheet->setCellValue('F'.$index, $student['mail']); + $sheet->setCellValue('G'.$index, $formation); + $sheet->setCellValue('H'.$index, $groupeName); + $index++; + } + } + + //On enregistre ce nouveau fichier, et on lance son téléchargement + + $docPath = DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("page", "excelTemplates", + "Liste Etudiant ".$_SESSION['annee'].".xlsx")); + if(file_exists (__ROOT__.$docPath)){ + $index = 1; + $titleLen = strlen($docPath) - 5; + while(file_exists (__ROOT__.$docPath)){ + $docPath = mb_strimwidth($docPath, 0, $titleLen, "")." (".$index.").xlsx"; + $index++; + } + } + $writer->save(__ROOT__.$docPath); + $answer->docPath = $docPath; + } + + // Erreur de paramètre(s) + + else { + + $answer->request = 'param_error'; + } + break; + + + + /***************************************************************/ + /* Importation des listes d'élèves de l'année en format Excel */ + /***************************************************************/ + case 'import_inscrits': + + // Récupération du nom du fichier + $filePath = __ROOT__.'/src/files/'.$_SESSION['identifiant'].'_import_inscrits.xlsx'; + + // si on a pas le droit d'écriture, on quitte // + if( !is_readable($filePath) ){ $answer->request = 'read_permission'; return; } + + // Chargement du fichier + $objPHPExcel = PHPExcel_IOFactory::load($filePath); + + // Placement du curseur sur la première case + $sheet = $objPHPExcel->getSheet(0); + $userlistData = $sheet->rangeToArray('B2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + + + // Variables stack pour la liste de élèves + $listeFormations = array(); + + + // "IUT" | formation+ver. | formationCode | formationLibellé | Inscript. en cours | Redoublant | ident. | nom | prenom | sexe | naiss. | mail | sport + + $formationCodes = array(); + + // on parcourt toutes les lignes pour lesquelles il y a en 2ème cellule "IUT" + foreach($userlistData as $line){ if( $line[0] == 'IUT' ){ + + /* [1] On récupère la formation (code, libellé) + ========================================================================*/ + if( $line[2] != null && $line[3] != null ){ // si aucune des cases ne sont vides + + if( !in_array($line[2], $formationCodes) ){ // si on n'a toujours pas créé cette formation + array_push( // on ajoute la formation à la liste + $listeFormations, + array( + 'nom' => $line[2], + 'libelle' => $line[3], + 'userlist' => array() // contiendra les étudiants de cette formation + ) + ); + + // on signale pour ne pas répéter + array_push($formationCodes, $line[2]); + } + + + // on récupère l'index de la formation dans le tableau de retour + $formIndex = array_search($line[2], $formationCodes); + + } + + + + /* [2] On ajoute l'élève courant dans la formation + ========================================================================*/ + if( $line[6] != null && $line[7] != null && $line[8] != null && $line[9] != null && $line[1] != null ){ + + array_push( + $listeFormations[$formIndex]['userlist'], array( + 'identifiant' => $line[6], + 'nom' => $line[7], + 'prenom' => $line[8], + 'sexe' => $line[9] == 'M', + 'mail' => $line[11] + ) + ); + + } + + }} + + + // on vérifie qu'on a récupéré qqch + if( count($listeFormations) > 0 ){ + $answer->formationList = $listeFormations; + $answer->request = 'success'; + }else + $answer->request = 'corrupted_format'; + + break; + + + + + // EXPORTATION DE NOTES POUR UN CONTROLE DONNEE, UNE FORMATION DONNEE ET UN GROUPE DONNE + case 'export_notes': + + //vérificationd des paramètres en entrée + + // if(isset($request->formation) && isset($request->groupe) && isset($request->controle) && isset($request->resultat)){ + + + // // Création de la fiche + + // $workbook = new PHPExcel(); + // $sheet = $workbook->getActiveSheet(); + // $writer = new PHPExcel_Writer_Excel2007($workbook); + + // // Titre du document + + // $workbook->getProperties()->setTitle($request->formation.$request->groupe.$request->controle); + + // // Taille des cases + + // $sheet->getColumnDimension('A')->setWidth(20); + // $sheet->getColumnDimension('B')->setWidth(20); + // $sheet->getColumnDimension('C')->setWidth(10); + + // // Écriture des colonnes du tableau + + // $sheet->setCellValue('A1', $request->groupe); + // $sheet->setCellValue('B1', date("d/m/Y G:m")); + // $sheet->setCellValue('C1', $request->controle); + // $sheet->setCellValue('A3', 'Nom'); + // $sheet->setCellValue('B3', 'Prénom'); + // $sheet->setCellValue('C3', 'Note'); + + + // // Écriture des valeurs dans le document Excel + + // $index = 5; + // foreach ( $request->resultat as $eleve ) { + + // $sheet->setCellValue('A'.$index,$eleve->nom); + // $sheet->setCellValue('B'.$index,$eleve->prenom); + // $sheet->setCellValue('C'.$index,$eleve->note); + // } + // } + // //On enregistre ce nouveau fichier, et on lance son téléchargement + + // $docPath = DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("page", "excelTemplates", $request->formation.$request->groupe.$request->controle".xlsx")); + // if(file_exists (__ROOT__.$docPath)){ + // $index = 1; + // $titleLen = strlen($docPath) - 5; + // while(file_exists (__ROOT__.$docPath)){ + // $docPath = mb_strimwidth($docPath, 0, $titleLen, "")." (".$index.").xlsx"; + // $index++; + // } + // } + // $writer->save(__ROOT__.$docPath); + // $answer->docPath = $docPath; + // } + + // // Erreur de paramètre(s) + + // else { + + // $answer->request = 'param_error'; + // } + + break; + + + /***************************************************************************/ + /* Importation de notes pour un contrôle, une formation et un groupe donné */ + /***************************************************************************/ + case 'import_notes': + + + if( isset($request->docPath) ) { + + // Récupération du nom du fichier + + $inputFileName = $request->docPath; + + // Chargement du fichier + + $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); + + // Placement du curseur sur la première case + + $sheet = $objPHPExcel->getSheet(0); + $noteData = $sheet->rangeToArray('A3:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + + // Varaible stack pour la liste des notes + + $listeNotes = array(); + + // Boucle sur le format suivant : ligne[0] : [ID] / ligne[1] : [NOTE] + + foreach($noteData as $line) { + + if($line[0] != null && $line[1] != null) + array_push($listeNotes,array($line[0],$line[1])); + } + + } + + // Erreur de paramètre(s) + + else { + + $answer->request='param_error'; + } + + break; + + + + /***********************/ + /* Importation du MCC */ + /**********************/ + case 'import_mcc': + + + $filePath = __ROOT__.'/src/files/'.$_SESSION['identifiant'].'_import_mcc.xlsx'; + + // si on a pas le droit d'écriture, on quitte // + if( !is_readable($filePath) ){ $answer->request = 'read_permission'; return; } + + // Charger le fichier en tant que document Excel + $objPHPExcel = PHPExcel_IOFactory::load($filePath); + + // Get sur la première case + $sheet = $objPHPExcel->getSheet(0); + $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + + + /* permet d'éviter les doublons */ + $mcc = array(); // contiendra le tableau de retour + $ueuid = array(); + + /****************************/ + /* TRAITEMENT SUR LES CASES */ + /****************************/ + foreach($mccData as $line){ + if( $line[6] != null ){ // uniquement les lignes non vides + + + /* [1] On récupère les données de l'UE, si les champs sont définis + =========================================================================*/ + if( /*$line[0] != null && */ $line[1] != null && $line[2] != null ){ + + if( $line[0] != null && !in_array($line[0], $ueuid) ){ // on créé l'UE dans la liste s'il n'y est pas déjà + + array_push( // on ajoute l'UE + $mcc, + array( + 'nom' => $line[0], + 'libelle' => $line[1], + 'coefficient' => $line[2], + 'modules' => array(), + 'moduid' => array() + ) + ); + + array_push($ueuid, $line[0]); // on dis qu'on a déjà enregistré l'ue + } + + } + + if( $line[0] != null ) + $ueIndex = array_search($line[0], $ueuid); + + /* [2] On récupère les données du module, si les champs sont définis + =========================================================================*/ + if( /*$line[3] != null && */ $line[4] != null && $line[5] != null ){ + + if( $line[3] != null && !in_array($line[3], $mcc[$ueIndex]['moduid']) ){ // on créé le module dans la liste de cet UE s'il n'y est pas déjà + array_push( // on ajoute l'UE + $mcc[$ueIndex]['modules'], + array( + 'nom' => $line[3], + 'libelle' => $line[4], + 'coefficient' => $line[5], + 'controles' => array(), + 'ctrluid' => array() + ) + ); + + array_push($mcc[$ueIndex]['moduid'], $line[3]); // on dis qu'on a déjà enregistré le module + } + } + + if( $line[3] != null ) + $modIndex = array_search($line[3], $mcc[$ueIndex]['moduid']); + + /* [3] On récupère les contrôles du module, si les champs sont définis + =========================================================================*/ + if( $line[6] != null && $line[7] != null && $line[8] != null ){ + + if( !in_array($line[6], $mcc[$ueIndex]['modules'][$modIndex]['ctrluid']) ){ // on créé le contrôle dans la liste de ce module s'il n'y est pas déjà + array_push( // on ajoute l'UE + $mcc[$ueIndex]['modules'][$modIndex]['controles'], + array( + 'nom' => $line[6], + 'libelle' => $line[7], + 'coefficient' => $line[8] + ) + ); + + array_push($mcc[$ueIndex]['modules'][$modIndex]['ctrluid'], $line[6]); // on dis qu'on a déjà enregistré le module + } + } + + } + + } + + /* [4] Affinage des données, on supprime les données temporaires + =========================================================================*/ + foreach($mcc as $iter_ue=>$ue){ + unset( $mcc[$iter_ue]['moduid'] ); + + foreach($mcc[$iter_ue]['modules'] as $iter_m=>$mod) + unset( $mcc[$iter_ue]['modules'][$iter_m]['ctrluid'] ); + } + + + $answer->mcc = $mcc; + $answer->request = 'success'; + + break; + + + /************************************/ + /* Importation des résulats du jury */ + /************************************/ + case 'import_jury': + + if(isset($request->docPath)) { + + // Récupération du nom du fichier + + $inputFileName = $request->docPath; + + // Chargement du fichier + + $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); + + // Placement du curseur sur la première case + + $sheet = $objPHPExcel->getSheet(0); + $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); + + // Varaible stack pour les résultats du jury + + $resultatJury = array(); + + // Boucle sur le format suivant : ligne[0] : [IDETUDIANT] / ligne[1] : [DECISION JURY] + + // / ! \ LES RESULTATS NE DOIVENT PAS ETRE NOMINATIFs, UTILISER LES IDENTIFIANTS DES ÉTUDIANTS / ! \ + + $i = 0; + + foreach($mccData as $line) { + + $resultatJury[$i++] = array($line[0],$line[1]); + } + + $answer->resultatJury = $resultatJury; + $asnwer->request = 'success'; + } + + // Erreur de paramètre(s) + + else { + + $answer->request='param_error'; + } + break; + + + + // /************************************/ + // /* Exportation des résulats du jury */ + // /************************************/ + // case 'export_fiche_resultat_jury': + + // //vérificationd du paramètre en entrée + + // if(isset($request->formation) && isset($request->semestre)){ + + // // Création / Activation de la feuille + + // $workbook = new PHPExcel(); + // $sheet = $workbook->getActiveSheet(); + // $writer = new PHPExcel_Writer_Excel2007($workbook); + + // $workbook->getProperties()->setTitle("ResultatJury"." ".$request->formation." ".$request->semestre.date("d/m/Y G:m")); + + // $sheet->getColumnDimension('A')->setWidth(20); + // $sheet->getColumnDimension('B')->setWidth(20); + // $sheet->getColumnDimension('C')->setWidth(20); + // $sheet->getColumnDimension('D')->setWidth(20); + + // // Écriture de l'en-tête du document + + // $sheet->setCellValue('A1', 'Résultats jury'); + // $sheet->setCellValue('B1',$request->formation); + // $sheet->setCellValue('C1',$request->semestre); + // $sheet->setCellValue('D1', date("d/m/Y G:m")); + // $sheet->setCellValue('A3',"Id Étudiant"); + // $sheet->setCellValue('B3',"Avis jury"); + + + // $i = 6; + + // while(// TANT QUE IL Y A UN ELEVE) { + + // $sheet->setCellValue('A'.$i,// ID ELEVE); + // $sheet->setCellValue('B'.$i,// AVIS JURY); + // $i++; + // } + + // // Sauvegarde du fichier sous le format .xlsx + + // $writer->save("ResultatJury"." ".$request->formation." ".$request->semestre.date("d/m/Y G:m").'xlsx' ); + // $answer->request = 'success'; + // } + + // //Si il y a un problème dans les paramètre(s) + + // else { + + // $answer->request='param_error'; + // } + + // break; + + + + + + + // DEFAULT + default: + $answer->request = 'unknown_level_1'; + break; + } + } + + +} + +?> \ No newline at end of file diff --git a/manager/groups.php b/manager/groups.php index 42e5138..2191c59 100755 --- a/manager/groups.php +++ b/manager/groups.php @@ -1,5 +1,5 @@ -level_1 ){ @@ -294,5 +294,5 @@ require_once __ROOT__.'/manager/security.php'; } - +} ?> \ No newline at end of file diff --git a/manager/modules.php b/manager/modules.php index 96d8e5e..8d396be 100755 --- a/manager/modules.php +++ b/manager/modules.php @@ -1,5 +1,5 @@ -level_1 ){ @@ -170,5 +170,7 @@ require_once __ROOT__.'/manager/security.php'; } +} + ?> \ No newline at end of file diff --git a/manager/notifications.php b/manager/notifications.php index ed227ec..98b1622 100755 --- a/manager/notifications.php +++ b/manager/notifications.php @@ -25,12 +25,11 @@ +class notificationsManager{ - -// /* [1] ROUTAGE DE NIVEAU 1 -// ============================================================*/ - - function notifications_switch_lvl1($request, $answer) { + // /* [1] ROUTAGE DE NIVEAU 1 + // ============================================================*/ + public static function switch_lvl1($request, $answer) { switch( $request->level_1 ) { @@ -213,6 +212,7 @@ } +} ?> diff --git a/manager/phpExcel.php b/manager/phpExcel.php deleted file mode 100755 index 1fa6b90..0000000 --- a/manager/phpExcel.php +++ /dev/null @@ -1,545 +0,0 @@ -level_1) { - - /***************************************************/ - /* Export la liste des étudiants d'un groupe donné */ - /***************************************************/ - case 'export_userlist_group': - - // Vérification de la présence des groupes - - if( isset($request->grouplist) && $request->grouplist != null ){ - - //On crée une instance du fichier xls,activation de la feuille - - $workbook = new PHPExcel(); - $sheet = $workbook->getActiveSheet(); - $writer = new PHPExcel_Writer_Excel2007($workbook); - - // Définition des paramètres du document - - $workbook->getProperties()->setCreator($_SESSION['identifiant']); - $workbook->getProperties()->setLastModifiedBy('ACGA'); - $workbook->getProperties()->setTitle('Liste étudiants '.$_SESSION['annee']); - - // Définition du format des cellules (document Excel) - - $sheet->getColumnDimension('B')->setWidth(20); - $sheet->getColumnDimension('C')->setWidth(20); - $sheet->getColumnDimension('D')->setWidth(15); - $sheet->getColumnDimension('E')->setWidth(8); - $sheet->getColumnDimension('F')->setWidth(35); - $sheet->getColumnDimension('G')->setWidth(12); - $sheet->getColumnDimension('H')->setWidth(12); - - // Écriture des colonnes du tableau - - $sheet->setCellValue('B1', "GROUPE DES ETUDIANTS DE L'ANNEE ".$_SESSION['annee']); - $sheet->setCellValue('A2', date("d/m/Y G:m")); - $sheet->setCellValue('A4', 'Numéro'); - $sheet->setCellValue('B4', 'Nom'); - $sheet->setCellValue('C4', 'Prénom'); - $sheet->setCellValue('D4', 'Identifiant'); - $sheet->setCellValue('E4', 'Sexe'); - $sheet->setCellValue('F4', 'Mail étudiant'); - $sheet->setCellValue('G4', 'Code IAE'); - $sheet->setCellValue('H4', 'IAE Etape'); - - // Écriture des valeurs dans le document Excel - - $index = 5; - foreach ( $request->grouplist as $group ) { - - $groupeName = $group['nom']; - $formation = $group['formation']; - - foreach ( $group['userlist'] as $student ) { - - $sheet->setCellValue('A'.$index, $index-4); - $sheet->setCellValue('B'.$index, $student['nom']); - $sheet->setCellValue('C'.$index, $student['prenom']); - $sheet->setCellValue('D'.$index, $student['identifiant']); - $sheet->setCellValue('E'.$index, $student['sexe']); - $sheet->setCellValue('F'.$index, $student['mail']); - $sheet->setCellValue('G'.$index, $formation); - $sheet->setCellValue('H'.$index, $groupeName); - $index++; - } - } - - //On enregistre ce nouveau fichier, et on lance son téléchargement - - $docPath = DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("page", "excelTemplates", - "Liste Etudiant ".$_SESSION['annee'].".xlsx")); - if(file_exists (__ROOT__.$docPath)){ - $index = 1; - $titleLen = strlen($docPath) - 5; - while(file_exists (__ROOT__.$docPath)){ - $docPath = mb_strimwidth($docPath, 0, $titleLen, "")." (".$index.").xlsx"; - $index++; - } - } - $writer->save(__ROOT__.$docPath); - $answer->docPath = $docPath; - } - - // Erreur de paramètre(s) - - else { - - $answer->request = 'param_error'; - } - break; - - - - /***************************************************************/ - /* Importation des listes d'élèves de l'année en format Excel */ - /***************************************************************/ - case 'import_inscrits': - - // Récupération du nom du fichier - $filePath = __ROOT__.'/src/files/'.$_SESSION['identifiant'].'_import_inscrits.xlsx'; - - // si on a pas le droit d'écriture, on quitte // - if( !is_readable($filePath) ){ $answer->request = 'read_permission'; return; } - - // Chargement du fichier - $objPHPExcel = PHPExcel_IOFactory::load($filePath); - - // Placement du curseur sur la première case - $sheet = $objPHPExcel->getSheet(0); - $userlistData = $sheet->rangeToArray('B2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); - - - // Variables stack pour la liste de élèves - $listeFormations = array(); - - - // "IUT" | formation+ver. | formationCode | formationLibellé | Inscript. en cours | Redoublant | ident. | nom | prenom | sexe | naiss. | mail | sport - - $formationCodes = array(); - - // on parcourt toutes les lignes pour lesquelles il y a en 2ème cellule "IUT" - foreach($userlistData as $line){ if( $line[0] == 'IUT' ){ - - /* [1] On récupère la formation (code, libellé) - ========================================================================*/ - if( $line[2] != null && $line[3] != null ){ // si aucune des cases ne sont vides - - if( !in_array($line[2], $formationCodes) ){ // si on n'a toujours pas créé cette formation - array_push( // on ajoute la formation à la liste - $listeFormations, - array( - 'nom' => $line[2], - 'libelle' => $line[3], - 'userlist' => array() // contiendra les étudiants de cette formation - ) - ); - - // on signale pour ne pas répéter - array_push($formationCodes, $line[2]); - } - - - // on récupère l'index de la formation dans le tableau de retour - $formIndex = array_search($line[2], $formationCodes); - - } - - - - /* [2] On ajoute l'élève courant dans la formation - ========================================================================*/ - if( $line[6] != null && $line[7] != null && $line[8] != null && $line[9] != null && $line[1] != null ){ - - array_push( - $listeFormations[$formIndex]['userlist'], array( - 'identifiant' => $line[6], - 'nom' => $line[7], - 'prenom' => $line[8], - 'sexe' => $line[9] == 'M', - 'mail' => $line[11] - ) - ); - - } - - }} - - - // on vérifie qu'on a récupéré qqch - if( count($listeFormations) > 0 ){ - $answer->formationList = $listeFormations; - $answer->request = 'success'; - }else - $answer->request = 'corrupted_format'; - - break; - - - - - // EXPORTATION DE NOTES POUR UN CONTROLE DONNEE, UNE FORMATION DONNEE ET UN GROUPE DONNE - case 'export_notes': - - //vérificationd des paramètres en entrée - - // if(isset($request->formation) && isset($request->groupe) && isset($request->controle) && isset($request->resultat)){ - - - // // Création de la fiche - - // $workbook = new PHPExcel(); - // $sheet = $workbook->getActiveSheet(); - // $writer = new PHPExcel_Writer_Excel2007($workbook); - - // // Titre du document - - // $workbook->getProperties()->setTitle($request->formation.$request->groupe.$request->controle); - - // // Taille des cases - - // $sheet->getColumnDimension('A')->setWidth(20); - // $sheet->getColumnDimension('B')->setWidth(20); - // $sheet->getColumnDimension('C')->setWidth(10); - - // // Écriture des colonnes du tableau - - // $sheet->setCellValue('A1', $request->groupe); - // $sheet->setCellValue('B1', date("d/m/Y G:m")); - // $sheet->setCellValue('C1', $request->controle); - // $sheet->setCellValue('A3', 'Nom'); - // $sheet->setCellValue('B3', 'Prénom'); - // $sheet->setCellValue('C3', 'Note'); - - - // // Écriture des valeurs dans le document Excel - - // $index = 5; - // foreach ( $request->resultat as $eleve ) { - - // $sheet->setCellValue('A'.$index,$eleve->nom); - // $sheet->setCellValue('B'.$index,$eleve->prenom); - // $sheet->setCellValue('C'.$index,$eleve->note); - // } - // } - // //On enregistre ce nouveau fichier, et on lance son téléchargement - - // $docPath = DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("page", "excelTemplates", $request->formation.$request->groupe.$request->controle".xlsx")); - // if(file_exists (__ROOT__.$docPath)){ - // $index = 1; - // $titleLen = strlen($docPath) - 5; - // while(file_exists (__ROOT__.$docPath)){ - // $docPath = mb_strimwidth($docPath, 0, $titleLen, "")." (".$index.").xlsx"; - // $index++; - // } - // } - // $writer->save(__ROOT__.$docPath); - // $answer->docPath = $docPath; - // } - - // // Erreur de paramètre(s) - - // else { - - // $answer->request = 'param_error'; - // } - - break; - - - /***************************************************************************/ - /* Importation de notes pour un contrôle, une formation et un groupe donné */ - /***************************************************************************/ - case 'import_notes': - - - if( isset($request->docPath) ) { - - // Récupération du nom du fichier - - $inputFileName = $request->docPath; - - // Chargement du fichier - - $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); - - // Placement du curseur sur la première case - - $sheet = $objPHPExcel->getSheet(0); - $noteData = $sheet->rangeToArray('A3:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); - - // Varaible stack pour la liste des notes - - $listeNotes = array(); - - // Boucle sur le format suivant : ligne[0] : [ID] / ligne[1] : [NOTE] - - foreach($noteData as $line) { - - if($line[0] != null && $line[1] != null) - array_push($listeNotes,array($line[0],$line[1])); - } - - } - - // Erreur de paramètre(s) - - else { - - $answer->request='param_error'; - } - - break; - - - - /***********************/ - /* Importation du MCC */ - /**********************/ - case 'import_mcc': - - - $filePath = __ROOT__.'/src/files/'.$_SESSION['identifiant'].'_import_mcc.xlsx'; - - // si on a pas le droit d'écriture, on quitte // - if( !is_readable($filePath) ){ $answer->request = 'read_permission'; return; } - - // Charger le fichier en tant que document Excel - $objPHPExcel = PHPExcel_IOFactory::load($filePath); - - // Get sur la première case - $sheet = $objPHPExcel->getSheet(0); - $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); - - - /* permet d'éviter les doublons */ - $mcc = array(); // contiendra le tableau de retour - $ueuid = array(); - - /****************************/ - /* TRAITEMENT SUR LES CASES */ - /****************************/ - foreach($mccData as $line){ - if( $line[6] != null ){ // uniquement les lignes non vides - - - /* [1] On récupère les données de l'UE, si les champs sont définis - =========================================================================*/ - if( /*$line[0] != null && */ $line[1] != null && $line[2] != null ){ - - if( $line[0] != null && !in_array($line[0], $ueuid) ){ // on créé l'UE dans la liste s'il n'y est pas déjà - - array_push( // on ajoute l'UE - $mcc, - array( - 'nom' => $line[0], - 'libelle' => $line[1], - 'coefficient' => $line[2], - 'modules' => array(), - 'moduid' => array() - ) - ); - - array_push($ueuid, $line[0]); // on dis qu'on a déjà enregistré l'ue - } - - } - - if( $line[0] != null ) - $ueIndex = array_search($line[0], $ueuid); - - /* [2] On récupère les données du module, si les champs sont définis - =========================================================================*/ - if( /*$line[3] != null && */ $line[4] != null && $line[5] != null ){ - - if( $line[3] != null && !in_array($line[3], $mcc[$ueIndex]['moduid']) ){ // on créé le module dans la liste de cet UE s'il n'y est pas déjà - array_push( // on ajoute l'UE - $mcc[$ueIndex]['modules'], - array( - 'nom' => $line[3], - 'libelle' => $line[4], - 'coefficient' => $line[5], - 'controles' => array(), - 'ctrluid' => array() - ) - ); - - array_push($mcc[$ueIndex]['moduid'], $line[3]); // on dis qu'on a déjà enregistré le module - } - } - - if( $line[3] != null ) - $modIndex = array_search($line[3], $mcc[$ueIndex]['moduid']); - - /* [3] On récupère les contrôles du module, si les champs sont définis - =========================================================================*/ - if( $line[6] != null && $line[7] != null && $line[8] != null ){ - - if( !in_array($line[6], $mcc[$ueIndex]['modules'][$modIndex]['ctrluid']) ){ // on créé le contrôle dans la liste de ce module s'il n'y est pas déjà - array_push( // on ajoute l'UE - $mcc[$ueIndex]['modules'][$modIndex]['controles'], - array( - 'nom' => $line[6], - 'libelle' => $line[7], - 'coefficient' => $line[8] - ) - ); - - array_push($mcc[$ueIndex]['modules'][$modIndex]['ctrluid'], $line[6]); // on dis qu'on a déjà enregistré le module - } - } - - } - - } - - /* [4] Affinage des données, on supprime les données temporaires - =========================================================================*/ - foreach($mcc as $iter_ue=>$ue){ - unset( $mcc[$iter_ue]['moduid'] ); - - foreach($mcc[$iter_ue]['modules'] as $iter_m=>$mod) - unset( $mcc[$iter_ue]['modules'][$iter_m]['ctrluid'] ); - } - - - $answer->mcc = $mcc; - $answer->request = 'success'; - - break; - - - /************************************/ - /* Importation des résulats du jury */ - /************************************/ - case 'import_jury': - - if(isset($request->docPath)) { - - // Récupération du nom du fichier - - $inputFileName = $request->docPath; - - // Chargement du fichier - - $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); - - // Placement du curseur sur la première case - - $sheet = $objPHPExcel->getSheet(0); - $mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow()); - - // Varaible stack pour les résultats du jury - - $resultatJury = array(); - - // Boucle sur le format suivant : ligne[0] : [IDETUDIANT] / ligne[1] : [DECISION JURY] - - // / ! \ LES RESULTATS NE DOIVENT PAS ETRE NOMINATIFs, UTILISER LES IDENTIFIANTS DES ÉTUDIANTS / ! \ - - $i = 0; - - foreach($mccData as $line) { - - $resultatJury[$i++] = array($line[0],$line[1]); - } - - $answer->resultatJury = $resultatJury; - $asnwer->request = 'success'; - } - - // Erreur de paramètre(s) - - else { - - $answer->request='param_error'; - } - break; - - - - // /************************************/ - // /* Exportation des résulats du jury */ - // /************************************/ - // case 'export_fiche_resultat_jury': - - // //vérificationd du paramètre en entrée - - // if(isset($request->formation) && isset($request->semestre)){ - - // // Création / Activation de la feuille - - // $workbook = new PHPExcel(); - // $sheet = $workbook->getActiveSheet(); - // $writer = new PHPExcel_Writer_Excel2007($workbook); - - // $workbook->getProperties()->setTitle("ResultatJury"." ".$request->formation." ".$request->semestre.date("d/m/Y G:m")); - - // $sheet->getColumnDimension('A')->setWidth(20); - // $sheet->getColumnDimension('B')->setWidth(20); - // $sheet->getColumnDimension('C')->setWidth(20); - // $sheet->getColumnDimension('D')->setWidth(20); - - // // Écriture de l'en-tête du document - - // $sheet->setCellValue('A1', 'Résultats jury'); - // $sheet->setCellValue('B1',$request->formation); - // $sheet->setCellValue('C1',$request->semestre); - // $sheet->setCellValue('D1', date("d/m/Y G:m")); - // $sheet->setCellValue('A3',"Id Étudiant"); - // $sheet->setCellValue('B3',"Avis jury"); - - - // $i = 6; - - // while(// TANT QUE IL Y A UN ELEVE) { - - // $sheet->setCellValue('A'.$i,// ID ELEVE); - // $sheet->setCellValue('B'.$i,// AVIS JURY); - // $i++; - // } - - // // Sauvegarde du fichier sous le format .xlsx - - // $writer->save("ResultatJury"." ".$request->formation." ".$request->semestre.date("d/m/Y G:m").'xlsx' ); - // $answer->request = 'success'; - // } - - // //Si il y a un problème dans les paramètre(s) - - // else { - - // $answer->request='param_error'; - // } - - // break; - - - - - - - // DEFAULT - default: - $answer->request = 'unknown_level_1'; - break; - } -} - -?> \ No newline at end of file diff --git a/manager/security.php b/manager/security.php index 7263504..1495daa 100755 --- a/manager/security.php +++ b/manager/security.php @@ -162,18 +162,26 @@ /* [2] AUTOLOADER ================================================================*/ function autoLoader($className) { - // si on charge un Repo if( preg_match('/^([a-z]+)Repo$/', $className, $match) ){ + // si le fichier existe, on charge le repo + if( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.'repo'.DIRECTORY_SEPARATOR.$match[1].'.php') ) require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.'repo'.DIRECTORY_SEPARATOR.$match[1].'.php'; } // si c'est un manager - elseif( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.strtolower($className).'.php') ) - require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.strtolower($className).'.php'; + elseif( preg_match('/^([a-z]+)Manager$/', $className, $match) ){ + // si le fichier existe, on charge le manager + if( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.$match[1].'.php') ) + require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.$match[1].'.php'; + } + + // sinon => DataBase, on le charge + elseif( is_file(__ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.strtolower($className).'.php') ) + require_once __ROOT__.DIRECTORY_SEPARATOR.'manager'.DIRECTORY_SEPARATOR.strtolower($className).'.php'; + else + var_dump('ok'); - // sinon - // ..... } diff --git a/manager/user.php b/manager/user.php index 29ddf88..1d91c16 100755 --- a/manager/user.php +++ b/manager/user.php @@ -1,5 +1,5 @@ -level_1 ){ @@ -49,7 +49,7 @@ require_once __ROOT__.'/manager/security.php'; $mdpCheck = $identifiantCheck && preg_match('/^[\w -]{4,100}$/i', $request->mdp); // mdp bon format if( $mdpCheck ) // si tout les params sont ok - $answer->request = user_authentification($request->identifiant, $request->mdp); + $answer->request = userManager::user_authentification($request->identifiant, $request->mdp); else{ if ( !$areSetParam ) $answer->request = 'missing_param'; elseif( !$typeOkParam ) $answer->request = 'wrong_type'; @@ -223,7 +223,7 @@ require_once __ROOT__.'/manager/security.php'; ============================================================*/ /* [a] userlist */ - function user_getUserList(){ + public static function user_getUserList(){ $userlistFile = file_get_contents("src/userlist.json"); return json_decode( $userlistFile ); } @@ -247,9 +247,9 @@ require_once __ROOT__.'/manager/security.php'; * * @$answer->request = Boolean true si l'utilisateur est ok */ - function user_authentification($username, $password){ + public static function user_authentification($username, $password){ // [1] On récupère la liste d'utilisateurs (/src/userlist.json) - $userList = user_getUserList(); + $userList = userManager::user_getUserList(); // [2] On check l'existence de l'utilisateur if( isset($userList->{$username}) ){ @@ -269,7 +269,7 @@ require_once __ROOT__.'/manager/security.php'; $_SESSION['annee'] = getCurrentYear(); // on défini si le semestre est pair ou non - $_SESSION['semestre_pair'] = semestrePair(time()); + $_SESSION['semestre_pair'] = userManager::semestrePair(time()); // on défini le semestre par défaut à NULL @@ -307,7 +307,7 @@ require_once __ROOT__.'/manager/security.php'; * @$answer->request = isEven VRAI si pair, sinon FAUX (impair) * */ - function semestrePair($timestamp=null){ + public static function semestrePair($timestamp=null){ // si $datetime n'est pas défini, on prend la date actuelle if( $timestamp == null ) $timestamp = time(); @@ -315,4 +315,5 @@ require_once __ROOT__.'/manager/security.php'; return Date('m', $timestamp) < 8; } +} ?> \ No newline at end of file diff --git a/page/_JS/groups.js b/page/_JS/groups.js index 2034b9e..809536f 100755 --- a/page/_JS/groups.js +++ b/page/_JS/groups.js @@ -212,7 +212,7 @@ if( importInscrits != null ){ /* [2] LECTURE DU FICHIER =======================================*/ - var request = { level_0: 'phpExcel', level_1: 'import_inscrits' }; + var request = { level_0: 'excel', level_1: 'import_inscrits' }; API.send(request, function(e){ if( e.request == 'success' ){ diff --git a/page/_JS/modules.js b/page/_JS/modules.js index 69a3f57..d025dbb 100755 --- a/page/_JS/modules.js +++ b/page/_JS/modules.js @@ -147,7 +147,7 @@ if( importMcc != null ){ /* [2] LECTURE DU FICHIER =======================================*/ - var request = { level_0: 'phpExcel', level_1: 'import_mcc' }; + var request = { level_0: 'excel', level_1: 'import_mcc' }; API.send(request, function(e){ if( e.request == 'success' ){ diff --git a/page/career.php b/page/career.php index 2fac755..2bda1c1 100755 --- a/page/career.php +++ b/page/career.php @@ -1,8 +1,8 @@ semestre = $_SESSION['semestre']; $request->annee = $_SESSION['annee']; - career_switch_level_1($request, $answer); + careerManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes //////////////////////////////////////////////////////////////////////////////// @@ -168,7 +168,7 @@ if( permission('teacher') && $controleOpt == null ){ // si c'est un enseignant e $request->enseignant = $_SESSION['identifiant']; $request->annee = $_SESSION['annee']; - career_switch_level_1($request, $answer); + careerManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes //////////////////////////////////////////////////////////////////////////////// @@ -336,7 +336,7 @@ elseif( permission('teacher') ){ // si enseignant et qu'un contrôle est spécif $request->controle = $controleOpt; if( $groupeOpt != null ) $request->groupe = $groupeOpt; // on définit le groupe s'il est spécifié - career_switch_level_1($request, $answer); + careerManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ echo "
"; @@ -509,7 +509,7 @@ if( (permission('master') || permission('admin')) && $controleOpt == null ){ // $request->level_1 = 'getControlesForYear'; $request->annee = $_SESSION['annee']; - career_switch_level_1($request, $answer); + careerManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes //////////////////////////////////////////////////////////////////////////////// @@ -680,7 +680,7 @@ elseif( permission('master') || permission('admin') ){ // si enseignant et qu'un $request->controle = $controleOpt; if( $groupeOpt != null ) $request->groupe = $groupeOpt; // on définit le groupe s'il est spécifié - career_switch_level_1($request, $answer); + careerManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ echo "
"; @@ -855,7 +855,7 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ $request->level_1 = 'studentcase'; $request->etudiant = $etudiantOpt; - career_switch_level_1($request, $answer); + careerManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes //////////////////////////////////////////////////////////////////////////////// diff --git a/page/groups.php b/page/groups.php index 2360948..968015b 100755 --- a/page/groups.php +++ b/page/groups.php @@ -1,6 +1,5 @@ semestre = $_SESSION['semestre']; $request->annee = $_SESSION['annee']; - groups_switch_level_1($request, $answer); + groupsManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si pas d'erreur ////////////////////////////////////////////////////////////// @@ -138,7 +137,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un $request->formation = $_SESSION['formation']; $request->semestre = $_SESSION['semestre']; $request->annee = $_SESSION['annee']; - groups_switch_level_1($request, $answer); + groupsManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe //////////////////////////////////////////////////////////////////////////////// @@ -200,7 +199,7 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un $request->enseignant = $_SESSION['identifiant']; $request->annee = $_SESSION['annee']; - groups_switch_level_1($request, $answer); + groupsManager::switch_level_1($request, $answer); // var_dump( $answer ); @@ -369,7 +368,7 @@ if( permission('admin') || permission('master') ){ // si l'utilisateur est conne // on récupère la liste de tous les groupes (pour le déplacement) $requestAllGroups->level_1 = 'exhaustiveList'; - groups_switch_level_1($requestAllGroups, $answerAllGroups); + groupsManager::switch_level_1($requestAllGroups, $answerAllGroups); // on récupère les groupes affichés sur la page $request = new stdClass(); $answer = new stdClass(); @@ -377,7 +376,7 @@ if( permission('admin') || permission('master') ){ // si l'utilisateur est conne $request->annee = $_SESSION['annee']; - groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis + groupsManager::switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis if( $answer->request == 'success' && $answerAllGroups->request == 'success' ){ // si pas d'erreur @@ -562,7 +561,7 @@ if( permission('master') || permission('admin') ){ /* ON RÉCUPÈRE LA LISTE DES SEMESTRES EN FONCTION DE L'ANNEE */ $request = new stdClass(); $answer = new stdClass(); $request->level_1 = 'getSemestres'; - groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis + groupsManager::switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis if( $answer->request == 'success' ){ // si pas d'erreur echo "
"; diff --git a/page/modules.php b/page/modules.php index 8f86bc2..c5ae7f9 100755 --- a/page/modules.php +++ b/page/modules.php @@ -64,7 +64,7 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un $request->semestre = $_SESSION['semestre']; $request->annee = $_SESSION['annee']; - modules_switch_level_1($request, $answer); + modulesManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe @@ -152,7 +152,7 @@ if( permission('teacher') ){ // si l'utilisateur est un prof $request->enseignant = $_SESSION['identifiant']; $request->annee = $_SESSION['annee']; - modules_switch_level_1($request, $answer); + modulesManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe //////////////////////////////////////////////////////////////////////////////// @@ -328,7 +328,7 @@ if( permission('master') || permission('admin') ){ // si l'utilisateur est un ad $request->level_1 = 'getByYear'; $request->annee = $_SESSION['annee']; - modules_switch_level_1($request, $answer); + modulesManager::switch_level_1($request, $answer); if( $answer->request == 'success' ){ // si on a bien récupéré les membres du groupe @@ -518,7 +518,7 @@ if( permission('master') || permission('admin') ){ /* ON RÉCUPÈRE LA LISTE DES SEMESTRES EN FONCTION DE L'ANNEE */ $request = new stdClass(); $answer = new stdClass(); $request->level_1 = 'getSemestres'; - groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis + groupsManager::switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis if( $answer->request == 'success' ){ // si pas d'erreur echo "
"; diff --git a/page/settings.php b/page/settings.php index 13769da..4789b9b 100755 --- a/page/settings.php +++ b/page/settings.php @@ -1,6 +1,5 @@ level_1 = 'getByYear'; $rAffinage->annee = (String) $_SESSION['annee']; - modules_switch_level_1($rAffinage, $aAffinage); + modulesManager::switch_level_1($rAffinage, $aAffinage); // création de la requête d'affichage des utilisateurs à rôles @@ -82,7 +77,7 @@ if( permission('admin') ){ $request->level_1 = 'getListeEnseignantsModules'; // gestion de la requête - user_switch_level_1($request, $answer); + userManager::switch_level_1($request, $answer); if( $answer->request == 'success' && $aAffinage->request == 'success' ){ // si aucune erreur $allSemestres = $aAffinage->semestres; // liste du programme de l'année courante @@ -284,12 +279,10 @@ if( permission('admin') ){ /*** CHANGER L'ANNEE ***/ /***********************/ if( permission('master') || permission('admin') ){ - require_once __ROOT__.'/manager/groups.php'; - $request = new stdClass(); $answer = new stdClass(); $request->level_1 = 'getSemestres'; - groups_switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis + groupsManager::switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis