diff --git a/Form/DataTranformer/UploadedFileTransformer.php b/Form/DataTranformer/UploadedFileTransformer.php new file mode 100644 index 0000000000000000000000000000000000000000..3ecae0f268a95afc4b6ccd26919d7600661337c0 --- /dev/null +++ b/Form/DataTranformer/UploadedFileTransformer.php @@ -0,0 +1,74 @@ +<?php + +/* + * Copyright (C) 2015 IRSTEA + * All rights reserved. + */ + +namespace Irstea\FileUploadBundle\Form\DataTranformer; + +use Irstea\FileUploadBundle\Entity\UploadedFile; +use Irstea\FileUploadBundle\Service\FileManagerInterface; +use Symfony\Component\Form\DataTransformerInterface; + +/** + * Description of UploadedFileTransformer + */ +class UploadedFileTransformer implements DataTransformerInterface +{ + /** + * + * @var boolean + */ + private $multiple; + + /** + * + * @var FileManagerInterface + */ + private $fileManager; + + public function __construct(FileManagerInterface $fileManager, $multiple = false) + { + $this->fileManager = $fileManager; + $this->multiple = $multiple; + } + + /** + * {@inheritdoc} + */ + public function reverseTransform($value) + { + $result = $value instanceof UploadedFile ? $value : (is_string($value) ? $this->reverseTransformFile($value) : null); + return $result; + } + + /** + * {@inheritdoc} + */ + public function transform($value) + { + $result = $value instanceof UploadedFile ? $this->transformFile($value) : null; + return $result; + } + + /** + * + * @param UploadedFile $file + * @return array + */ + protected function transformFile(UploadedFile $file) + { + return $file; + } + + /** + * + * @param string $id + * @return UploadedFile + */ + protected function reverseTransformFile($id) + { + return $this->fileManager->get($id); + } +}