Search by

libriciel / cakephp-filesystem

ludeusepommateaupviver

Manipulations de fichiers avec transaction

Package info

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

Type:cakephp-plugin

pkg:composer/libriciel/cakephp-filesystem

Statistics

Installs: 6 051

Dependents: 2

Suggesters: 1

3.0.10 2026-03-24 09:22 UTC

This package is auto-updated.

Last update: 2026-10-29 13:26:12 UTC


README

License build status coverage report

Manipulation de fichiers (copie, déplacement, suppression, écriture) avec ou sans transaction : en cas de rollback, explicite ou à l'arrêt du script, les opérations effectuées depuis le début de la transaction sont annulées.

Dépendance de

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

Prérequis

  • PHP ~7.4 || ~8.1 || ~8.2 || ~8.3 avec l'extension json

Installation

composer require libriciel/cakephp-filesystem:dev-master

Dans Application::bootstrap() (charge la commande filesystem) :

$this->addPlugin('Libriciel/Filesystem');

Pour bénéficier des traductions (exceptions et commande), ajouter le dossier Locale du plugin aux chemins de l'application :

config/app_default.php (asalae)

            'locales' => [
                RESOURCES . 'locales' . DS,
                ROOT . DS . 'vendor' . DS . 'libriciel' . DS . 'cakephp-filesystem' . DS . 'src' . DS . 'Locale' . DS,
            ],

Configuration (facultative) :

  • FilesystemUtility.useShred : supprime les fichiers avec shred (suppression sans possibilité de récupération, plus longue)
  • FilesystemUtility.tmpDir : dossier temporaire des transactions (par défaut App.paths.data . /tmp, sinon le dossier temporaire du système)

config/app_default.php (asalae)

    'FilesystemUtility' => [
        'useShred' => true,
    ],

Utilisation

Utility

Libriciel\Filesystem\Utility\Filesystem : méthodes statiques copy(), rename(), remove(), mkdir(), dumpFile(), shred(), listFiles()… (basées sur symfony/filesystem) et transactions begin(), commit(), rollback().

  • Les transactions sont nommées (default par défaut), ce qui permet d'en imbriquer plusieurs.
  • Une transaction non validée est annulée à la destruction de l'instance (fin du script) ; rollbackAll() annule toutes les transactions en cours du processus.
  • useShred() et setRemoveMethod() changent la méthode de suppression à la volée.

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

        Filesystem::begin();
        try {
            $files = $this->getArchiveFiles();
            $files[] = self::createReadme($tempFolder);

            $zipFilename = $this->_getZip();

            DataCompressor::compress($files, $zipFilename);
            Filesystem::commit();
            return $zipFilename;
        } catch (Exception $e) {
            Filesystem::rollback();
            throw $e;
        }

src/Model/Table/TransfersTable.php (asalae)

            Filesystem::begin('delete-transfer');
            Filesystem::remove($dir);
            Filesystem::commit('delete-transfer');

Command

filesystem : effectue les rollbacks restés en suspens, par exemple après un arrêt brutal du serveur (transactions des processus qui ne tournent plus).

bin/cake filesystem

Tests

vendor/bin/phpunit