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 des notes pour un contrôle */ /******************************************/ case 'import_notes': $filePath = __EXCEL_PATH__.$_SESSION['identifiant'].'_import_notes.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); $notesData = $sheet->rangeToArray('A1:'.'B'.$sheet->getHighestRow()); $notes = array(); // contiendra le tableau de retour /****************************/ /* TRAITEMENT SUR LES CASES */ /****************************/ foreach($notesData as $line){ /* [1] On récupère pour chaque étudiant si le format est bon =========================================================================*/ // si la case qui doit contenir la note n'est pas vide, on met au bon format numérique if( $line[1] != null ) $line[1] = str_replace(',', '.', $line[1]); if( checkParam($line[0], 'utilisateur.identifiant') && is_numeric($line[1]) ){ // bon format pour l'identifiant et la note array_push( // on ajoute l'étudiant et sa note $notes, array( 'etudiant' => $line[0], 'valeur' => $line[1] ) ); } } $answer->notes = $notes; $answer->request = 'success'; 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 $USER){ $sheet->setCellValue('A'.$index, $USER->identifiant); $sheet->setCellValue('B'.$index, $GROUP->formation); $sheet->setCellValue('C'.$index, $GROUP->nom); if( $USER->mention != null ) // si mention déjà spécifiée, on l'affiche $sheet->setCellValue('D'.$index, $USER->mention); else // sinon, on met "[À compléter]" $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': $filePath = __EXCEL_PATH__.$_SESSION['identifiant'].'_import_jury.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); $juryData = $sheet->rangeToArray('A6:'.'D'.$sheet->getHighestRow()); $jury = array(); // contiendra le tableau de retour $mentionsPossibles = array('ADM', 'ADJ', 'RDB', 'RFS'); /****************************/ /* TRAITEMENT SUR LES CASES */ /****************************/ foreach($juryData as $line){ /* [1] On récupère pour chaque étudiant si le format est bon =========================================================================*/ if( checkParam($line[0], 'utilisateur.identifiant') && in_array($line[3], $mentionsPossibles) ){ // bon format pour l'identifiant et la mention array_push( // on ajoute l'étudiant et sa mention $jury, array( 'etudiant' => $line[0], 'mention' => $line[3] ) ); } } $answer->jury = $jury; $answer->request = 'success'; break; // DEFAULT default: $answer->request = 'unknown_level_1'; break; } } } ?>