UploadedFileRepository.php 1.59 KB
Newer Older
<?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;

/**
 * Description of UploadedFileRepository
 *
 * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
 */
class UploadedFileRepository extends EntityRepository implements FileManagerInterface
{
    /**
     *
     * @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();

        return $file;
    }

    public function delete(UploadedFile $file)
    {
        $this->_em->remove($file);
        $this->filesystem->delete($file->getPath());
    }

    public function get($id)
    {
        return $this->findById($id);
    }
}