From 0011c57e0d7f2baf36b733c4b56b5cc8b5b9f9e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr> Date: Wed, 9 Dec 2015 11:55:39 +0100 Subject: [PATCH] =?UTF-8?q?G=C3=A8re=20proprement=20la=20suppression=20des?= =?UTF-8?q?=20fichiers.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il est nécessaire d'enregistrer les chemins des fichiers *avant* la suppression pour s'assurer qu'on puisse les supprimer après. --- Listener/UploadedFileListener.php | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Listener/UploadedFileListener.php b/Listener/UploadedFileListener.php index db50e2dd..cb37ea6d 100644 --- a/Listener/UploadedFileListener.php +++ b/Listener/UploadedFileListener.php @@ -23,6 +23,11 @@ class UploadedFileListener */ private $filesystem; + /** + * @var array + */ + private $scheduledDeletion = []; + /** * * @param Filesystem $filesystem @@ -58,7 +63,17 @@ class UploadedFileListener $this->filesystem->rename($changes['path'][0], $changes['path'][1]); } - /** Supprime le fichier disque lorsque l'on supprime l'entité. + /** Enregistre le chemin du fichier à supprimer. + * + * @param UploadedFileInterface $file + * @param LifecycleEventArgs $event + */ + public function preRemove(UploadedFileInterface $file, LifecycleEventArgs $event) + { + $this->scheduledDeletion[$file->getId()] = $file->getPath(); + } + + /** Supprime le fichier correspondant à l'UploadedFileInterface supprimé. * * @param UploadedFileInterface $file * @param LifecycleEventArgs $event @@ -66,9 +81,17 @@ class UploadedFileListener public function postRemove(UploadedFileInterface $file, LifecycleEventArgs $event) { try { - $this->filesystem->delete($file->getPath()); + $this->filesystem->delete($this->scheduledDeletion[$file->getId()]); } catch(FileNotFound $ex) { // NOOP } } + + /** + * Nettoie la liste des fichiers à supprimer. + */ + public function postFlush() + { + $this->scheduledDeletion = []; + } } -- GitLab