Commit 0011c57e authored by Guillaume Perréal's avatar Guillaume Perréal
Browse files

Gère proprement la suppression des fichiers.

Il est nécessaire d'enregistrer les chemins des fichiers *avant* la suppression pour s'assurer qu'on puisse les supprimer après.
Showing with 25 additions and 2 deletions
+25 -2
...@@ -23,6 +23,11 @@ class UploadedFileListener ...@@ -23,6 +23,11 @@ class UploadedFileListener
*/ */
private $filesystem; private $filesystem;
/**
* @var array
*/
private $scheduledDeletion = [];
/** /**
* *
* @param Filesystem $filesystem * @param Filesystem $filesystem
...@@ -58,7 +63,17 @@ class UploadedFileListener ...@@ -58,7 +63,17 @@ class UploadedFileListener
$this->filesystem->rename($changes['path'][0], $changes['path'][1]); $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 UploadedFileInterface $file
* @param LifecycleEventArgs $event * @param LifecycleEventArgs $event
...@@ -66,9 +81,17 @@ class UploadedFileListener ...@@ -66,9 +81,17 @@ class UploadedFileListener
public function postRemove(UploadedFileInterface $file, LifecycleEventArgs $event) public function postRemove(UploadedFileInterface $file, LifecycleEventArgs $event)
{ {
try { try {
$this->filesystem->delete($file->getPath()); $this->filesystem->delete($this->scheduledDeletion[$file->getId()]);
} catch(FileNotFound $ex) { } catch(FileNotFound $ex) {
// NOOP // NOOP
} }
} }
/**
* Nettoie la liste des fichiers à supprimer.
*/
public function postFlush()
{
$this->scheduledDeletion = [];
}
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment