UploadedFileRepository.php 2.07 KiB
<?php
/*
 * Copyright (C) 2015 IRSTEA
 * All rights reserved.
 */
namespace Irstea\FileUploadBundle\Entity\Repository;
use Doctrine\ORM\EntityRepository;
use Gaufrette\Filesystem;
use Irstea\FileUploadBundle\Entity\UploadedFile;
use Irstea\FileUploadBundle\Service\FileManagerInterface;
use Psr\Log\LogLevel;
/**
 * Description of UploadedFileRepository
 * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
class UploadedFileRepository extends EntityRepository implements FileManagerInterface
    use \Psr\Log\LoggerAwareTrait;
    /**
     * @var Filesystem
    protected $filesystem;
    /**
     * @param Filesystem $filesystem
    public function setFilesystem(Filesystem $filesystem)
        $this->filesystem = $filesystem;
    public function create($filename, $size, $mimeType, $lastModified)
        $file = new UploadedFile();
        $file
            ->setFilesystem($this->filesystem)
            ->setOriginalFilename($filename)
            ->setMetadata(
                    'original' => [
                        'filename'     => $filename,
                        'size'         => $size,
                        'mimeType'     => $mimeType,
                        'lastModified' => $lastModified
        $this->_em->persist($file);
        $this->_em->flush();
        $this->log(LogLevel::INFO, 'File created', ['file' => $file]);
        return $file;
    public function delete(UploadedFile $file)
        $this->_em->remove($file);
        $this->filesystem->delete($file->getPath());
        $this->log(LogLevel::INFO, 'File deleted', ['file' => $file]);
717273747576777879808182838485868788899091
} public function get($id) { return $this->findById($id); } /** * * @param string $level * @param string $message * @param array $context */ protected function log($level, $message, array $context = []) { if(null !== $this->logger) { $this->logger->log($level, $message, $context); } } }