level_1){ /*****************************************************/ /* Export la liste des étudiants d'un semestre donné */ /*****************************************************/ case 'export_grouplist': // Vérification de la présence des groupes if( isset($request->grouplist) ){ // [1] On crée une instance du fichier xls, activation de la feuille $workbook = new PHPExcel(); $sheet = $workbook->getActiveSheet(); $writer = new PHPExcel_Writer_Excel2007($workbook); // [2] Définition des paramètres du document $workbook->getProperties()->setCreator($_SESSION['identifiant']); $workbook->getProperties()->setLastModifiedBy('ACGA'); $workbook->getProperties()->setTitle('Liste étudiants '.$_SESSION['annee']); // [3] Définition du format des cellules (document Excel) $sheet->getColumnDimension('A')->setWidth(15); $sheet->getColumnDimension('B')->setWidth(15); $sheet->getColumnDimension('C')->setWidth(15); $sheet->getColumnDimension('D')->setWidth(5); $sheet->getColumnDimension('E')->setWidth(15); $sheet->getColumnDimension('F')->setWidth(10); $sheet->getColumnDimension('G')->setWidth(10); // [4] Écriture des colonnes du tableau $sheet->setCellValue('A1', date("d/m/Y")); $sheet->setCellValue('A4', 'Identifiant'); $sheet->setCellValue('B4', 'Prénom'); $sheet->setCellValue('C4', 'Nom'); $sheet->setCellValue('D4', 'Sexe'); $sheet->setCellValue('E4', 'Mail étudiant'); $sheet->setCellValue('F4', 'Groupe'); $sheet->setCellValue('G4', 'Formation'); // [5] Écriture des valeurs dans le document Excel $index = 5; foreach($request->grouplist as $group){ $index++; foreach($group->userlist as $student){ $sheet->setCellValue('A'.$index, $student->identifiant); $sheet->setCellValue('B'.$index, $student->prenom); $sheet->setCellValue('C'.$index, $student->nom); $sheet->setCellValue('D'.$index, ($student->sexe)?'M':'F'); $sheet->setCellValue('E'.$index, $student->mail); $sheet->setCellValue('F'.$index, $group->nom); $sheet->setCellValue('G'.$index, $group->formation); $index++; } } // [6] On enregistre ce nouveau fichier, et on lance son téléchargement $filePath = __EXCEL_PATH__.$_SESSION['identifiant'].'_export_liste_etudiants.xlsx'; $writer->save( $filePath ); // [7] On retourne l'état du traitement 'success' $answer->request = 'success'; // [8] On retourne le chemin relatif du serveur $answer->pathfile = '/src/files/'.$_SESSION['identifiant'].'_export_liste_etudiants.xlsx'; } // [7] On retourne l'état du traitement 'param_error' 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 = __EXCEL_PATH__.$_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 = __EXCEL_PATH__.$_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; /**********************************************/ /* Export la liste des étudiants pour le jury */ /**********************************************/ case 'export_jury': // Vérification de la présence des groupes if( isset($request->grouplist) ){ // [1] On crée une instance du fichier xls, activation de la feuille $workbook = new PHPExcel(); $sheet = $workbook->getActiveSheet(); $writer = new PHPExcel_Writer_Excel2007($workbook); // [2] Définition des paramètres du document $workbook->getProperties()->setCreator($_SESSION['identifiant']); $workbook->getProperties()->setLastModifiedBy('ACGA'); $workbook->getProperties()->setTitle('Liste étudiants jury'); // [3] Définition du format des cellules (document Excel) $sheet->getColumnDimension('A')->setWidth(15); $sheet->getColumnDimension('B')->setWidth(15); $sheet->getColumnDimension('C')->setWidth(15); $sheet->getColumnDimension('D')->setWidth(15); // [4] Écriture des colonnes du tableau $sheet->setCellValue('B1', "" ); $sheet->setCellValue('A2', date("d/m/Y G:m") ); $sheet->setCellValue('A4', 'Identifiant' ); $sheet->setCellValue('B4', 'Formation' ); $sheet->setCellValue('C4', 'Groupe' ); $sheet->setCellValue('D4', 'Mention' ); // [5] Écriture des valeurs dans le document Excel $index = 5; foreach($request->grouplist as $group){ $index++; foreach($group->userlist as $student){ $sheet->setCellValue('A'.$index, $student->identifiant); $sheet->setCellValue('B'.$index, $group->formation); $sheet->setCellValue('C'.$index, $group->nom); $sheet->setCellValue('D'.$index, 'À compléter'); $index++; } } // [6] On enregistre ce nouveau fichier, et on lance son téléchargement $filePath = __EXCEL_PATH__.$_SESSION['identifiant'].'_export_jury.xlsx'; $writer->save( $filePath ); // [7] On retourne l'état du traitement 'success' $answer->request = 'success'; // [8] On retourne le chemin relatif du serveur $answer->pathfile = '/src/files/'.$_SESSION['identifiant'].'_export_jury.xlsx'; } // [7] On retourne l'état du traitement 'param_error' else $answer->request = 'param_error'; 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] $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; // DEFAULT default: $answer->request = 'unknown_level_1'; break; } } } ?>