libriciel / cakephp-datacompressor
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
Requires
- php: ~7.4 || ^8.1
- ext-fileinfo: *
- ext-iconv: *
- ext-intl: *
- ext-mbstring: *
- ext-zip: ^1.13
Requires (Dev)
- libriciel/cakephp-filesystem: ^1.0
- phpunit/phpunit: ~8.5.0
Suggests
- cakephp/cakephp: Pour la gestion de la configuration
- libriciel/cakephp-filesystem: Permet l'utilisation des transactions de fichiers
Provides
None
Conflicts
None
Replaces
None
README
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
| Projet | Build | Coverage |
|---|---|---|
| asalae | ||
| versae | ||
| refae | ||
| asalae-core |
Prérequis
- PHP
~7.4 || ^8.1avec les extensionsfileinfo,iconv,intl,mbstring,zip,zlib - Outils système :
tar(archives tar.gz) etunzip(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 fichiersuncompress(): 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 extraitssanitizeZip(): convertit et normalise en UTF-8 les noms de fichiers d'un zip et supprime le dossier__MACOSXdetectType(),fileCount(): type d'archive (zip, rar, gzip) et nombre de fichiers d'un zipuseTransaction(): 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