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); } } }