An error occurred while loading the file. Please try again.
-
Guillaume Perréal authoreda3da09fb
<?php
/*
* Copyright (C) 2015 IRSTEA
* All rights reserved.
*/
namespace Irstea\FileUploadBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Gaufrette\Filesystem;
use Irstea\FileUploadBundle\Entity\UploadedFile;
/**
* Listener qui traite les opérations sur les fichiers uploadés.
*/
class UploadedFileListener
{
/**
*
* @var Filesystem
*/
private $filesystem;
/**
*
* @param Filesystem $filesystem
*/
public function __construct(Filesystem $filesystem)
{
$this->filesystem = $filesystem;
}
/** Passe le filesystem à l'entité.
*
* @param UploadedFile $file
* @param LifecycleEventArgs $event
*/
public function postLoad(UploadedFile $file, LifecycleEventArgs $event)
{
$file->setFilesystem($this->filesystem);
}
/** Renomme le fichier disque lorsque l'on change l'attribut 'path'.
*
* @param UploadedFile $file
* @param LifecycleEventArgs $event
*/
public function postUpdate(UploadedFile $file, LifecycleEventArgs $event)
{
$changes = $event->getEntityManager()->getUnitOfWork()->getEntityChangeSet($file);
if(!isset($changes['path'])) {
return;
}
$this->filesystem->rename($changes['path'][0], $changes['path'][1]);
}
/** Supprime le fichier disque lorsque l'on supprime l'entité.
*
* @param UploadedFile $file
* @param LifecycleEventArgs $event
*/
public function postRemove(UploadedFile $file, LifecycleEventArgs $event)
{
$this->filesystem->delete($file->getPath());
}
}