Création d'archive zip avec ZipWriter

FossilOrigin-Name: fdc718ec0f5734bb532742f6da61db7ed55f3373ace6f01aba3629f93c37aa79
This commit is contained in:
engel 2022-01-25 16:19:31 +00:00
parent 36060b71c8
commit 41c93cf556
2 changed files with 40 additions and 14 deletions

View File

@ -3,6 +3,7 @@
namespace Garradin\Plugin\RecusFiscaux; namespace Garradin\Plugin\RecusFiscaux;
use Garradin\DB; use Garradin\DB;
use KD2\ZipWriter;
class Services class Services
{ {
@ -35,7 +36,7 @@ class Services
printf(\"%.2f\", services_fees.amount/100) as montantTarif printf(\"%.2f\", services_fees.amount/100) as montantTarif
FROM services_fees FROM services_fees
WHERE services_fees.id_service = ?", WHERE services_fees.id_service = ?",
$activite $activite
); );
} }
@ -177,4 +178,25 @@ class Services
WHERE key = 'adresse_asso'" WHERE key = 'adresse_asso'"
)[0]->value; )[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
} }

View File

@ -18,7 +18,7 @@ foreach ($list as $indice => $ligne) {
// cumuler les versements d'une personne // cumuler les versements d'une personne
$totalPersonnes = cumulerVersements($versementsSelectionnes); $totalPersonnes = cumulerVersements($versementsSelectionnes);
print_r($totalPersonnes); // print_r($totalPersonnes);
// générer les reçus // générer les reçus
$nomAsso = Services::getNomAsso(); $nomAsso = Services::getNomAsso();
@ -26,7 +26,7 @@ $adresseAsso = Services::getAdresseAsso();
// TODO // TODO
// - mémoriser numéro reçu pour pouvoir générer des reçus en plusieurs sessions indépendantes // - 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 // - paramétrer l'année fiscale
$num_recu = 1; // $num_recu = 1;
$annee_recu = "2021"; $annee_recu = "2021";
// récupérer le logo CERFA (bôf) et la signature // récupérer le logo CERFA (bôf) et la signature
// TODO : paramétrer le répertoire des images // TODO : paramétrer le répertoire des images
@ -51,36 +51,40 @@ foreach ($totalPersonnes as $idPersonne => $personne) {
} }
$pdf->imprimer_recu( $pdf->imprimer_recu(
$annee_recu, $annee_recu,
$num_recu, $personne->id, //$num_recu,
$personne->nomPrenom, $personne->nomPrenom,
$lesMontants, $lesMontants,
$personne->adresse, $personne->adresse,
$personne->ville, $personne->ville,
$personne->codePostal $personne->codePostal
); );
++$num_recu; //++$num_recu;
// fabriquer le nom du fichier PDF // fabriquer le nom du fichier PDF
$nom = str_replace(' ', '_', $personne->nomPrenom); $nom = str_replace(' ', '_', $personne->nomPrenom);
$nom = str_replace("'", "", $nom); $nom = str_replace("'", "", $nom);
// $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf'; // $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf';
$nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $annee_recu . '_' . $nom . '.pdf'; $nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $annee_recu . '_' . $nom . '.pdf';
$pdf->Output('F', $nomFichier); $pdf->Output('F', $nomFichier);
// ajouter le nom du fichier à la liste pour mettre dans une archive // ajouter le nom du fichier à la liste pour mettre dans une archive
$listeFichiers[] = $nomFichier; $listeFichiers[] = $nomFichier;
} }
// faire une archive zip // faire une archive zip
/* $fichierZip = Services::makeArchive(
$fichierZip = Utils::makeArchive($listeFichiers, $annee_recu, Utils::getZipDirectory()); $listeFichiers,
$_SESSION['zipfile'] = $fichierZip; $annee_recu,
PLUGIN_ROOT . "/zip"
);
// la copier dans le cache ?
// afficher la page de téléchargement // afficher la page de téléchargement => n'est plus utile
$action = 'telecharger_archive'; // le téléchargement démarre dès la fin de la création du fichier zip
require('vue/vueTelechargerArchive.php'); //$_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 * @param tableau des versements
* @return tableau des versements cumulés * @return tableau des versements cumulés
*/ */
@ -132,4 +136,4 @@ function cumulerVersements($versements)
); );
return $totalPersonnes; return $totalPersonnes;
} }