From 41c93cf5568f5239acec3835bf66c3d136d82d24 Mon Sep 17 00:00:00 2001 From: engel <> Date: Tue, 25 Jan 2022 16:19:31 +0000 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'archive=20zip=20avec=20ZipWri?= =?UTF-8?q?ter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FossilOrigin-Name: fdc718ec0f5734bb532742f6da61db7ed55f3373ace6f01aba3629f93c37aa79 --- lib/Services.php | 24 +++++++++++++++++++++++- www/admin/action.php | 30 +++++++++++++++++------------- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/lib/Services.php b/lib/Services.php index d3f26d1..b1b62a4 100644 --- a/lib/Services.php +++ b/lib/Services.php @@ -3,6 +3,7 @@ namespace Garradin\Plugin\RecusFiscaux; use Garradin\DB; +use KD2\ZipWriter; class Services { @@ -35,7 +36,7 @@ class Services printf(\"%.2f\", services_fees.amount/100) as montantTarif FROM services_fees WHERE services_fees.id_service = ?", - $activite + $activite ); } @@ -177,4 +178,25 @@ class Services WHERE key = 'adresse_asso'" )[0]->value; } + + // ------------------------------------------------------------------------ + // zip archive creation + // ------------------------------------------------------------------------ + + static function makeArchive( + $fileList, + $year, + $archiveDir) + { + $zipFilename = "recus_dons" . $year . ".zip"; + header('Content-type: application/zip'); + header(sprintf('Content-Disposition: attachment; filename="%s"', $zipFilename)); + $zip = new ZipWriter('php://output'); + $zip->setCompression(0); + foreach ($fileList as $fileName) + { + $zip->add(basename($fileName), null, $fileName); + } + $zip->close(); + } // makeArchive } diff --git a/www/admin/action.php b/www/admin/action.php index b8b8ee9..7e83b8e 100644 --- a/www/admin/action.php +++ b/www/admin/action.php @@ -18,7 +18,7 @@ foreach ($list as $indice => $ligne) { // cumuler les versements d'une personne $totalPersonnes = cumulerVersements($versementsSelectionnes); -print_r($totalPersonnes); +// print_r($totalPersonnes); // générer les reçus $nomAsso = Services::getNomAsso(); @@ -26,7 +26,7 @@ $adresseAsso = Services::getAdresseAsso(); // TODO // - mémoriser numéro reçu pour pouvoir générer des reçus en plusieurs sessions indépendantes // - paramétrer l'année fiscale -$num_recu = 1; +// $num_recu = 1; $annee_recu = "2021"; // récupérer le logo CERFA (bôf) et la signature // TODO : paramétrer le répertoire des images @@ -51,36 +51,40 @@ foreach ($totalPersonnes as $idPersonne => $personne) { } $pdf->imprimer_recu( $annee_recu, - $num_recu, + $personne->id, //$num_recu, $personne->nomPrenom, $lesMontants, $personne->adresse, $personne->ville, $personne->codePostal ); - ++$num_recu; + //++$num_recu; // fabriquer le nom du fichier PDF $nom = str_replace(' ', '_', $personne->nomPrenom); $nom = str_replace("'", "", $nom); // $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf'; $nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $annee_recu . '_' . $nom . '.pdf'; + $pdf->Output('F', $nomFichier); // ajouter le nom du fichier à la liste pour mettre dans une archive $listeFichiers[] = $nomFichier; } // faire une archive zip -/* -$fichierZip = Utils::makeArchive($listeFichiers, $annee_recu, Utils::getZipDirectory()); -$_SESSION['zipfile'] = $fichierZip; +$fichierZip = Services::makeArchive( + $listeFichiers, + $annee_recu, + PLUGIN_ROOT . "/zip" +); +// la copier dans le cache ? -// afficher la page de téléchargement -$action = 'telecharger_archive'; -require('vue/vueTelechargerArchive.php'); -*/ +// afficher la page de téléchargement => n'est plus utile +// le téléchargement démarre dès la fin de la création du fichier zip +//$_SESSION['zipfile'] = $fichierZip; +//$tpl->display(PLUGIN_ROOT . '/templates/telechargement.tpl'); /** - * Cumuler les versements de chaque pesonne par tarif et activité + * Cumuler les versements de chaque personne par tarif et activité * @param tableau des versements * @return tableau des versements cumulés */ @@ -132,4 +136,4 @@ function cumulerVersements($versements) ); return $totalPersonnes; -} \ No newline at end of file +}