コード例 #1
0
 /**
  * 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);
         }
     }
 }
コード例 #2
0
 public function needResolveCollision($fileName, FileStorageInterface $fileStorage)
 {
     //print "\n -->".$fileName;
     return !$this->isOverwriteDuplicates() && $fileStorage->fileExists($this->resolveFileName($fileName));
 }