/** * upload field and file data field are NOT SAME ($obj->file and $obj->uploadFile) * @param EventArgs $args * @param PropertyMapping $mapping */ protected function updateUseOneProperties(\Doctrine\Common\EventArgs $args, PropertyMapping $mapping) { $uploadedFile = $mapping->getFileUploadPropertyValue(); //use getOldValue from ORM $currentFileData = $this->dataStorage->previusFieldDataIfChanged($mapping->getFileDataPropertyName(), $args); $currentFileName = $currentFileData ? $mapping->resolveFileName($currentFileData['fileName']) : null; //If no new file if (is_null($uploadedFile) || !$uploadedFile instanceof File) { if ($currentFileData) { if (!$this->fileStorage->fileExists($currentFileName)) { $fileNameByWebDir = $_SERVER['DOCUMENT_ROOT'] . $currentFileData['path']; if ($this->fileStorage->fileExists($fileNameByWebDir)) { $uploadedFile = new UploadedFile($fileNameByWebDir, $currentFileData['originalName'], $currentFileData['mimeType'], null, null, true); $fileData = $this->fileStorage->upload($mapping, $uploadedFile); $mapping->setFileDataPropertyValue($fileData); } } else { $mapping->setFileDataPropertyValue($currentFileData); } } } else { if ($uploadedFile instanceof \Iphp\FileStoreBundle\File\File && $uploadedFile->isDeleted()) { if ($this->fileStorage->removeFile($currentFileName)) { $mapping->setFileDataPropertyValue(null); } } else { //Old value (file) exits and uploaded new file if ($currentFileData && !$this->fileStorage->isSameFile($uploadedFile, $currentFileName)) { //before upload new file delete old file $this->fileStorage->removeFile($currentFileName); } $fileData = $this->fileStorage->upload($mapping, $uploadedFile); $mapping->setFileDataPropertyValue($fileData); } } }
public function needResolveCollision($fileName, FileStorageInterface $fileStorage) { //print "\n -->".$fileName; return !$this->isOverwriteDuplicates() && $fileStorage->fileExists($this->resolveFileName($fileName)); }