From 5b85f10180a1848488cb624a05746fc1d3c2a907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr> Date: Thu, 22 Jan 2015 10:17:56 +0100 Subject: [PATCH] =?UTF-8?q?FileManagerInterface:=20ajout=20d'une=20m=C3=A9?= =?UTF-8?q?thode=20completed,=20utilis=C3=A9e=20par=20le=20contr=C3=B4leur?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controller/UploadController.php | 4 +- Entity/Repository/UploadedFileRepository.php | 21 ++++++++++ Event/FileUploadCompleteEvent.php | 43 ++++++++++++++++++++ FileUploadEvents.php | 18 ++++++++ Service/FileManagerInterface.php | 7 +++- 5 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 Event/FileUploadCompleteEvent.php create mode 100644 FileUploadEvents.php diff --git a/Controller/UploadController.php b/Controller/UploadController.php index be782a59..0ed88ce5 100644 --- a/Controller/UploadController.php +++ b/Controller/UploadController.php @@ -96,7 +96,9 @@ class UploadController extends Controller $stream->write($request->getContent()); $stream->close(); - return $this->createResponse(); + $this->fileManager->completed($file); + return $this->createResponse( + ); } /** diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php index f96168c9..635d8772 100644 --- a/Entity/Repository/UploadedFileRepository.php +++ b/Entity/Repository/UploadedFileRepository.php @@ -10,6 +10,8 @@ namespace Irstea\FileUploadBundle\Entity\Repository; use Doctrine\ORM\EntityRepository; use Gaufrette\Filesystem; use Irstea\FileUploadBundle\Entity\UploadedFile; +use Irstea\FileUploadBundle\Event\FileUploadCompleteEvent; +use Irstea\FileUploadBundle\FileUploadEvents; use Irstea\FileUploadBundle\Service\FileManagerInterface; use Psr\Log\LogLevel; use Symfony\Component\EventDispatcher\EventDispatcher; @@ -91,6 +93,25 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte return $this->findById($id); } + public function completed(UploadedFile $file) + { + $path = $file->getPath(); + $fs = $this->filesystem; + + $file + ->setChecksum($fs->checksum($path)) + ->setSize($fs->size($path)) + ->setMimeType($fs->mimeType($path)) + ->setEtat(UploadedFile::ETAT_ORPHELIN); + + $this->eventDispatcher->dispatch(FileUploadEvents::UPLOAD_COMPLETE, new FileUploadCompleteEvent($file)); + + $this->_em->persist($file); + $this->_em->flush(); + + $this->log(LogLevel::INFO, 'File completed', ['file' => $file]); + } + /** * * @param string $level diff --git a/Event/FileUploadCompleteEvent.php b/Event/FileUploadCompleteEvent.php new file mode 100644 index 00000000..f1ed986b --- /dev/null +++ b/Event/FileUploadCompleteEvent.php @@ -0,0 +1,43 @@ +<?php + +/* + * Copyright (C) 2015 IRSTEA + * All rights reserved. + */ + +namespace Irstea\FileUploadBundle\Event; + +use Irstea\FileUploadBundle\Entity\UploadedFile; +use Symfony\Component\EventDispatcher\Event; + +/** + * Description of FileUploadCompleteEvent + * + * @author Guillaume Perréal <guillaume.perreal@irstea.fr> + */ +class FileUploadCompleteEvent extends Event +{ + /** + * + * @var UploadedFile + */ + private $uploadedFile; + + /** + * + * @param UploadedFile $uploadedFile + */ + public function __construct(UploadedFile $uploadedFile) + { + $this->uploadedFile = $uploadedFile; + } + + /** + * + * @return UploadedFile $uploadedFile + */ + public function getUploadedFile() + { + return $this->uploadedFile; + } +} diff --git a/FileUploadEvents.php b/FileUploadEvents.php new file mode 100644 index 00000000..96c71a86 --- /dev/null +++ b/FileUploadEvents.php @@ -0,0 +1,18 @@ +<?php + +/* + * Copyright (C) 2015 IRSTEA + * All rights reserved. + */ + +namespace Irstea\FileUploadBundle; + +/** + * Description of FileUploadEvents + * + * @author Guillaume Perréal <guillaume.perreal@irstea.fr> + */ +final class FileUploadEvents +{ + const UPLOAD_COMPLETE = 'file_upload.complete'; +} diff --git a/Service/FileManagerInterface.php b/Service/FileManagerInterface.php index 0706e7ca..b73817d6 100644 --- a/Service/FileManagerInterface.php +++ b/Service/FileManagerInterface.php @@ -7,8 +7,8 @@ namespace Irstea\FileUploadBundle\Service; -use Gaufrette\Stream; use Irstea\FileUploadBundle\Entity\UploadedFile; +use Symfony\Component\HttpFoundation\Response; /** * Description of FileManager @@ -35,4 +35,9 @@ interface FileManagerInterface * @param UploadedFile $file */ public function delete(UploadedFile $file); + + /** + * @param UploadedFile $file + */ + public function completed(UploadedFile $file); } -- GitLab