示例#1
0
 protected function getFieldValueByParam(PropertyMapping $propertyMapping, $params)
 {
     $obj = $propertyMapping->getObj();
     $fieldValue = '';
     if (isset($params['use_field_name']) && $params['use_field_name']) {
         $fieldValue = $propertyMapping->getFileDataPropertyName();
     } else {
         $field = isset($params['field']) && $params['field'] ? $params['field'] : 'id';
         $fieldValue = $obj->{'get' . ucfirst($field)}();
     }
     if (!$fieldValue) {
         $fieldValue = $obj->getId();
     }
     return $fieldValue;
 }
 /**
  *
  */
 function propertyRename(PropertyMapping $propertyMapping, $fileName, $params)
 {
     if (isset($params['use_field_name']) && $params['use_field_name']) {
         return $propertyMapping->getFileDataPropertyName();
     }
     $obj = $propertyMapping->getObj();
     $field = isset($params['field']) && $params['field'] ? $params['field'] : 'id';
     $fields = explode('/', $field);
     $path = '';
     foreach ($fields as $f) {
         if (strpos($f, '.')) {
             $str = 'return $obj->get' . implode('()->get', array_map('ucfirst', explode('.', $f))) . '();';
             $fieldValue = eval($str);
         } else {
             $fieldValue = $obj->{'get' . ucfirst($f)}();
         }
         $path .= ($path ? '/' : '') . $fieldValue;
     }
     return $path;
 }
 /**
  * upload field and file data field are SAME ($obj->file)
  * @param EventArgs $args
  * @param PropertyMapping $mapping
  */
 protected function updateSeparateProperties(\Doctrine\Common\EventArgs $args, PropertyMapping $mapping)
 {
     $uploadedFile = $mapping->getFileUploadPropertyValue();
     $currentFileData = $mapping->getFileDataPropertyValue();
     $previousFileData = $this->dataStorage->previusFieldDataIfChanged($mapping->getFileDataPropertyName(), $args);
     $currentFileName = $previousFileData ? $mapping->resolveFileName($previousFileData['fileName']) : null;
     //delete current file
     if ($previousFileData && (is_null($currentFileData) || $uploadedFile && $uploadedFile instanceof \Iphp\FileStoreBundle\File\File && $uploadedFile->isDeleted())) {
         if ($this->fileStorage->removeFile($currentFileName)) {
             $mapping->setFileDataPropertyValue(null);
         }
     } else {
         if ($uploadedFile && $uploadedFile instanceof File) {
             //Old value (file) exists and uploaded new file
             if ($currentFileName && !$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);
         }
     }
 }