Esempio n. 1
0
 public function replaceFile(File $fileEntity, UploadedFile $file)
 {
     $entityManager = $this->getDoctrineEntityManager();
     $oldFileIsImage = $fileEntity instanceof Image;
     $newFileIsImage = $this->isMimeTypeImage($file->getMimeType());
     if ($oldFileIsImage !== $newFileIsImage) {
         throw new Exception\UploadFilterException(self::VALIDATION_IMAGE_TO_FILE_REPLACE_MESSAGE_KEY, 'New file should be image too');
     }
     $originalFile = clone $fileEntity;
     $entityManager->detach($originalFile);
     // setting new data
     // The name is not changed by Bug #6756
     //		$fileEntity->setFileName($file['name']);
     $fileEntity->setSize($file->getSize());
     $fileEntity->setMimeType($file->getMimeType());
     // This must be call before removing the old file
     $this->validateFileUpload($fileEntity, $file->getPathname());
     $this->removeFileInFileSystem($originalFile);
     $this->storeFileData($fileEntity, $file->getPathname());
     // additional jobs for images
     if ($fileEntity instanceof Image) {
         $imageProcessor = $this->getImageResizer();
         // store original size
         $imageInfo = $imageProcessor->getImageInfo($fileEntity);
         $fileEntity->setWidth($imageInfo->getWidth());
         $fileEntity->setHeight($imageInfo->getHeight());
         // reprocess sizes
         $this->recreateImageSizes($fileEntity);
     }
     $fileEntity->setModificationTime();
     $entityManager->flush();
 }