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;
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
}

View File

@ -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;
}
}