From 6452d91b834cebd3295f063baa27ed5d2333af19 Mon Sep 17 00:00:00 2001 From: Cedric Date: Thu, 19 Nov 2015 10:18:43 +0100 Subject: [PATCH] Premier puch de la branche ced --- css/layout.css | 9 +- manager/groups.php | 37 ++++- manager/xlsx.php | 132 +++++++++++++----- .../Liste Etudiant 2015 (1).xlsx | Bin 0 -> 12420 bytes .../Liste Etudiant 2015 (2).xlsx | Bin 0 -> 12420 bytes page/excelTemplates/Liste Etudiant 2015.xlsx | Bin 0 -> 12420 bytes page/groups.php | 64 ++++++--- 7 files changed, 182 insertions(+), 60 deletions(-) create mode 100644 page/excelTemplates/Liste Etudiant 2015 (1).xlsx create mode 100644 page/excelTemplates/Liste Etudiant 2015 (2).xlsx create mode 100644 page/excelTemplates/Liste Etudiant 2015.xlsx diff --git a/css/layout.css b/css/layout.css index 08649c6..3d97766 100755 --- a/css/layout.css +++ b/css/layout.css @@ -26,7 +26,14 @@ padding: 0; } -a{ text-decoration: none; color: inherit; } +/*************************** +** LIEN DE TELECHARGEMENT ** +****************************/ + +a { + text-decoration: none; + color: inherit; +} /* on initialise le body avec les valeurs par défaut [compatibilité] */ body{ diff --git a/manager/groups.php b/manager/groups.php index 7c252a5..5dce139 100755 --- a/manager/groups.php +++ b/manager/groups.php @@ -168,9 +168,20 @@ require_once __ROOT__.'/manager/database.php'; $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format $enseignantCheck = $anneeCheck && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // enseignant (annee) bon format + // paramètres optionnels + $optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre); + $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); + + // définition (ou pas) des paramètres optionnels + if( $optionalSemestre ) $semestre = $request->semestre; + else $semestre = null; + + if( $optionalGroupe ) $groupe = $request->groupe; + else $groupe = null; + if( $enseignantCheck ){ - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesEnseignant($request->annee, $_SESSION['semestre_pair'], $request->enseignant, $semestre, $groupe); if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs $answer->grouplist = $grouplist; @@ -194,10 +205,24 @@ require_once __ROOT__.'/manager/database.php'; $typeOkParam = $areSetParam && is_numeric($request->annee); // si c'est des strings $anneeCheck = $areSetParam && preg_match('/^[0-9]{4}$/i', $request->annee); // semestre (annee) bon format + + // paramètres optionnels + $optionalSemestre = isset($request->semestre) && is_string($request->semestre) && preg_match('/^S[0-9]{1}$/i', $request->semestre); + $optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); + + // définition (ou pas) des paramètres optionnels + if( $optionalSemestre ) $semestre = $request->semestre; + else $semestre = null; + + if( $optionalGroupe ) $groupe = $request->groupe; + else $groupe = null; + + + if( $anneeCheck ){ - // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair']); - $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null); + // $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, $_SESSION['semestre_pair'], $semestre, $groupe); + $grouplist = DataBase::getInstance()->listeEtudiantsTousGroupesAnnee($request->annee, null, $semestre, $groupe); if( is_array($grouplist) ){ // si on a récupéré la liste des utilisateurs $answer->grouplist = $grouplist; @@ -242,14 +267,14 @@ require_once __ROOT__.'/manager/database.php'; /************************************************/ case 'move': if( permission('admin') ){ - $areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre); // les arguments existent + $areSetParam = isset($request->etudiant) && isset($request->groupe); // les arguments existent $typeOkParam = $areSetParam && is_string($request->etudiant) && is_string($request->groupe); // si c'est des strings - $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère + $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && strlen($request->groupe) > 0; // d'au moins 1 caractère $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format $groupeCheck = $etudiantCheck && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe); // groupe (nom) bon format if( $groupeCheck ){ // si param ok - $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre); + $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $_SESSION['annee']); }else $answer->request = 'param_error'; diff --git a/manager/xlsx.php b/manager/xlsx.php index 5cff401..702ddf5 100644 --- a/manager/xlsx.php +++ b/manager/xlsx.php @@ -12,58 +12,120 @@ function xlsx_switch_lvl1($request, $answer){ //EXPORTATION DES LISTE D'ELEVE DE L'ANNEEE EN FORMAT EXCEL case 'export_userlist_group': - - //On crée une instance du fichier xls, ainsi que de la feuille active - $workbook = new PHPExcel(); - $sheet = $workbook->getActiveSheet(); - $writer = new PHPExcel_Writer_Excel2007($workbook); - //on prépare le tableau - $sheet->setCellValue('A1', 'IAE Etape'); - $sheet->setCellValue('B1', 'Nom'); - $sheet->setCellValue('C1', 'Prénom'); - $sheet->setCellValue('D1', 'Identifiant'); - $sheet->setCellValue('E1', 'Sexe'); - $sheet->setCellValue('F1', 'Mail étudiant'); + //Si on a bien les listes de groupes + if(isset($request->grouplist) && $request->grouplist != null){ + //On crée une instance du fichier xls, ainsi que de la feuille active + $workbook = new PHPExcel(); + $sheet = $workbook->getActiveSheet(); + $writer = new PHPExcel_Writer_Excel2007($workbook); - //on récupère l'ensemble des étudiants - $req = new stdClass(); - $ans = new stdClass(); + //on défini les paramètresdu document + $workbook->getProperties()->setCreator($_SESSION['identifiant']); + $workbook->getProperties()->setLastModifiedBy('ACGA'); + $workbook->getProperties()->setTitle('Liste étudiants '.$_SESSION['annee']); - $req->level_1 = 'grouplistForYear'; - $req->annee = $_SESSION['annee']; - groups_switch_level_1($req, $ans); + //On définit les + $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); - //Si l'execution s'est proprement effectuée - $index = 2; - if($ans->req == 'success') { - foreach ($ans->grouplist as $group) { + //on prépare le 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'); + + //On remplie le tableau des valeurs récupérée dans la requ^te + $index = 5; + foreach ($request->grouplist as $group) { $groupeName = $group['nom']; - foreach ($group->userlist as $student) { - $sheet->setCellValue('A'.$index, $groupeName); + $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; } - //On lance le téléchargement du fichier - header('Content-type: application/vnd.ms-excel'); - header('Content-Disposition: attachment; filename="file.xls"'); - $writer->save('php://output'); - } - break; - - default: - # code... - break; - } + //Si on a pas le tableau + else { + $answer->request = 'param_error'; + } + break; + + + + // IMPORTATION DES LISTE D'ELEVE DE L'ANNEEE EN FORMAT EXCEL + case 'import_userlist_group': + + 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)){ + + } + + //Si il y a un problème dans les paramètres + else { + $answer->request='param_error'; + } + break; + + + + + // IMPORTATION DE NOTES POUR UN CONTROLE DONNEE, UNE FORMATION DONNEE ET UN GROUPE DONNE + case 'import_notes': + //code + break; + + + + // DEFAULT + default: + $answer->request = 'unknown_level_1'; + break; + } } ?> \ No newline at end of file diff --git a/page/excelTemplates/Liste Etudiant 2015 (1).xlsx b/page/excelTemplates/Liste Etudiant 2015 (1).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d046302dc98c15adecfe2aecd549089694069089 GIT binary patch literal 12420 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 literal 0 HcmV?d00001 diff --git a/page/excelTemplates/Liste Etudiant 2015.xlsx b/page/excelTemplates/Liste Etudiant 2015.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d046302dc98c15adecfe2aecd549089694069089 GIT binary patch literal 12420 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 qzrp{fRQ9`--z=xAH$1lAI(2 les groupes inscrits aux modules qu'il enseigne * */ -if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève +if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un enseignant $request = new stdClass(); $answer = new stdClass(); @@ -527,35 +527,63 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm } } +?> + - - - - - - - - - - - +"; + echo "
"; - $answer = new stdClass(); - $request = new stdClass(); + //affichage sur la page + + echo "

Vous pouvez ici exporter et importer les listes des étudiants de l'année en cours"; - $request->level_1 = 'export_userlist_group'; + //on récupère l'ensemble des étudiants + $req = new stdClass(); + $ans = new stdClass(); - xlsx_switch_lvl1($request, $answer); + $req->level_1 = 'grouplistForYear'; + $req->annee = $_SESSION['annee']; + groups_switch_level_1($req, $ans); + + //on envoie les résultats + if($ans->request = 'success'){ + $listeGroupes = $ans->grouplist; + $req = new stdClass(); + $ans = new stdClass(); + $req->level_1 = 'export_userlist_group'; + $req->grouplist = $listeGroupes; + xlsx_switch_lvl1($req, $ans); + } + + if ($ans->request = 'success') { + //Lien vers le fichier correspondant + $ans->docPath = mb_strimwidth($ans->docPath, 1, strlen($ans->docPath)); + echo "
Fichier excel de liste des étudiatns de l'année

"; + } + + + //Importation des listes d'élèves + /*echo "
"; + echo ""; + echo ""; + echo "
";*/ + + + + if(false){ + + } + + echo "
"; } ?> \ No newline at end of file