511 lines
14 KiB
PHP
Executable File
511 lines
14 KiB
PHP
Executable File
<?php
|
|
|
|
function xlsx_switch_lvl1($request, $answer){
|
|
|
|
//inclusion des classes de PHPExcel et des fichiers necessaires
|
|
|
|
require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel.php"));
|
|
require_once __ROOT__.DIRECTORY_SEPARATOR.join(DIRECTORY_SEPARATOR, array("src", "phpexcel", "Classes", "PHPExcel", "Writer", "Excel2007.php"));
|
|
|
|
|
|
/* [1] TABLE DE ROUTAGE
|
|
============================================================*/
|
|
|
|
switch ($request->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++;
|
|
}
|
|
}
|
|
|
|
// A refaire, incompréhensible et beaucoup plus facile à faire C.F : export notes-->
|
|
|
|
//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_userlist_group':
|
|
|
|
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());
|
|
|
|
// Variables stack pour la liste de élèves
|
|
|
|
$listeEleves = array();
|
|
|
|
// Boucle sur le format suivant : ligne[0] : [NOM] / ligne[1] : [PRENOM] / ligne[2] : [GROUPE]
|
|
|
|
foreach($mccData as $line) {
|
|
|
|
$listeEleves[$i++] = array($line[0],$line[1],$line[2]);
|
|
}
|
|
|
|
// Vérification de la présence de tous les élèves
|
|
|
|
if($i-2 == getHighestRow()) {
|
|
|
|
$answer->listeEleves = $listeEleves;
|
|
$answer->request = 'success';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Erreur de paramètre(s)
|
|
|
|
else {
|
|
|
|
$answer->request='param_error';
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
/*// EXPORTATION DE NOTES POUR UN CONTROLE DONNEE, UNE FORMATION DONNEE ET UN GROUPE DONNE
|
|
case 'export_notes':
|
|
|
|
//vérificationd es paramètres en entrée
|
|
if(isset($request->formation) && isset($request->groupe) && isset($request->controle)){
|
|
|
|
// Création / Activation de la feuille
|
|
|
|
$workbook = new PHPExcel();
|
|
$sheet = $workbook->getActiveSheet();
|
|
$writer = new PHPExcel_Writer_Excel2007($workbook);
|
|
|
|
$workbook->getProperties()->setTitle($request->formation." ".$request->groupe." ".$request->controle. date("d/m/Y G:m"));
|
|
|
|
$sheet->getColumnDimension('A')->setWidth(20);
|
|
$sheet->getColumnDimension('B')->setWidth(20);
|
|
$sheet->getColumnDimension('C')->setWidth(10);
|
|
|
|
// Écriture de l'en-tête du document
|
|
|
|
$sheet->setCellValue('A1',$request->formation." ".$request->groupe." ".$request->controle);
|
|
$sheet->setCellValue('B1', date("d/m/Y G:m"));
|
|
$sheet->setCellValue('A3', 'Nom');
|
|
$sheet->setCellValue('A4', 'Prénom');
|
|
$sheet->setCellValue('A5', 'Note');
|
|
|
|
$i = 6;
|
|
|
|
while(// TANT QUE IL Y A UN ELEVE) {
|
|
|
|
$sheet->setCellValue('A'.$i,// NOM DE LELEVE);
|
|
$sheet->setCellValue('B'.$i,// PRENOM DE LELEVE);
|
|
if(// NOTE EXISTE )
|
|
$sheet->setCellValue('C'.$i,// NOTE DE LELEVE);
|
|
else {
|
|
$sheet->setCellValue('C'.$i,"Non noté");
|
|
}
|
|
$i++;
|
|
}
|
|
|
|
// Sauvegarde du fichier sous le format .xlsx
|
|
|
|
$writer->save( $request->formation." ".$request->groupe." ".$request->controle. date("d/m/Y G:m").'xlsx' );
|
|
$answer->request = 'success';
|
|
}
|
|
|
|
//Si il y a un problème dans les paramètres
|
|
|
|
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);
|
|
$mccData = $sheet->rangeToArray('A2:'.$sheet->getHighestColumn().''.$sheet->getHighestRow());
|
|
|
|
// Varaible stack pour la liste des notes
|
|
|
|
$listeNotes = array();
|
|
|
|
// Boucle sur le format suivant : ligne[0] : [NOM] / ligne[1] : [PRENOM] / ligne[2] : [NOTE]
|
|
|
|
foreach($mccData as $line) {
|
|
|
|
$listeNotes[$i++] = array($line[0],$line[1],$line[2]);
|
|
}
|
|
|
|
if($i-2 == getHighestRow()) {
|
|
|
|
$answer->listeNotes = $listeNotes;
|
|
$answer->request = 'success';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 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';
|
|
|
|
// file_put_contents($filePath, $file['file']);
|
|
|
|
// // $inputFileType = 'Excel2007';
|
|
// $inputFileName = $request->docPath;
|
|
|
|
// 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[0] != null ){
|
|
|
|
|
|
/* [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 / ! \
|
|
|
|
// foreach($mccData as $line) {
|
|
|
|
// $resultatJury[$i++] = array($line[0],$line[1]);
|
|
// }
|
|
|
|
// if($i-2 == getHighestRow()) {
|
|
|
|
// $answer->resultatJury = $resultatJury;
|
|
// $answer->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;
|
|
}
|
|
}
|
|
|
|
?>
|