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) && isset($request->formation) && isset($request->groupe) && isset($request->controle)) { // 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[3] : [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': if(isset($request->docPath)) { // $inputFileType = 'Excel2007'; $inputFileName = $request->docPath; // Charger le fichier en tant que document Excel $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); // 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'; }else $answer->request = 'param_error'; break; // DEFAULT default: $answer->request = 'unknown_level_1'; break; } } ?>