An error occurred while loading the file. Please try again.
-
Guillaume Perréal authoreda50a3f90
<?php
/*
* Copyright (C) 2015 IRSTEA
* All rights reserved.
*/
namespace Irstea\FileUploadBundle\Listener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Gaufrette\Exception\FileNotFound;
use Gaufrette\Filesystem;
use Irstea\FileUploadBundle\Model\UploadedFileInterface;
/**
* 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 UploadedFileInterface $file
* @param LifecycleEventArgs $event
*/
public function postLoad(UploadedFileInterface $file, LifecycleEventArgs $event)
{
$file->setFilesystem($this->filesystem);
}
/** Renomme le fichier disque lorsque l'on change l'attribut 'path'.
*
* @param UploadedFileInterface $file
* @param LifecycleEventArgs $event
*/
public function postUpdate(UploadedFileInterface $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 UploadedFileInterface $file
* @param LifecycleEventArgs $event
*/
public function postRemove(UploadedFileInterface $file, LifecycleEventArgs $event)
{
try {
$this->filesystem->delete($file->getPath());
} catch(FileNotFound $ex) {
7172737475
// NOOP
}
}
}