Search by

libriciel / cakephp-datacompressor

ludeusepommateaupviver

Datacompressor permet de manipuler des fichiers compressés

Package info

gitlab.adullact.net/Libriciel/archivage/cakephp-datacompressor.git

Type:cakephp-plugin

pkg:composer/libriciel/cakephp-datacompressor

Statistics

Installs: 6 075

Dependents: 1

Suggesters: 0

1.7.1 2023-04-24 09:58 UTC

This package is auto-updated.

Last update: 2026-10-29 13:24:55 UTC


README

License build status coverage report

Compression et décompression d'archives zip et tar.gz, avec contrôle des entrées à l'extraction et prise en charge des transactions de cakephp-filesystem.

Dépendance de

ProjetBuildCoverage
asalaebuild statuscoverage report
versaebuild statuscoverage report
refaebuild statuscoverage report
asalae-corebuild statuscoverage report

Prérequis

  • PHP ~7.4 || ^8.1 avec les extensions fileinfo, iconv, intl, mbstring, zip, zlib
  • Outils système : tar (archives tar.gz) et unzip (extraction zip en ligne de commande)

Installation

composer require libriciel/cakephp-datacompressor:dev-master

Si cakephp-filesystem est installé, les écritures passent par ses transactions. Avec CakePHP, DataCompressor.encodeFilename définit l'encodage des noms de fichiers dans les archives créées (UTF-8 par défaut).

Utilisation

Utility

Datacompressor\Utility\DataCompressor :

  • compress() : crée une archive zip (ou tar.gz selon l'extension) à partir d'un fichier, d'un dossier ou d'une liste de fichiers
  • uncompress() : décompresse une archive zip ou tar.gz après vérification des entrées (pas d'écriture hors du dossier cible) et renvoie la liste des fichiers extraits
  • sanitizeZip() : convertit et normalise en UTF-8 les noms de fichiers d'un zip et supprime le dossier __MACOSX
  • detectType(), fileCount() : type d'archive (zip, rar, gzip) et nombre de fichiers d'un zip
  • useTransaction() : namespace de transaction cakephp-filesystem à utiliser

src/Model/Entity/OutgoingTransfer.php (asalae)

        return DataCompressor::compress(
            $this->getDataDirectory(),
            $this->_getZip()
        );

src/Command/TransferFillerCommand.php (asalae)

        if (preg_match('/\.zip$/i', $attachment)) {
            $nAttachment = $this->tmpDir . DS . 'attachments.zip';
            copy($attachment, $nAttachment);
            $io->out('sanitizeZip...');
            DataCompressor::sanitizeZip($nAttachment);
            $attachment = $nAttachment;
        }
        $targetUri = $this->tmpDir . DS . 'attachments';
        $io->out('uncompress...');
        $files = DataCompressor::uncompress($attachment, $targetUri);

src/Command/EnvoietransfertsCommand.php (asalae)

        Filesystem::begin();
        DataCompressor::useTransaction();

Tests

vendor/bin/phpunit