Index: branches/5.2.x/core/kernel/utility/formatters/upload_formatter.php =================================================================== diff -u -N -r15729 -r15733 --- branches/5.2.x/core/kernel/utility/formatters/upload_formatter.php (.../upload_formatter.php) (revision 15729) +++ branches/5.2.x/core/kernel/utility/formatters/upload_formatter.php (.../upload_formatter.php) (revision 15733) @@ -1,6 +1,6 @@ _getMaxFiles($options); + $pending_actions = $object->getPendingActions(); + $files_to_delete = $this->_getFilesToDelete($object); - // don't delete uploaded file, when it's name matches delete file name - $files_to_delete = Array (); - $var_name = $object->getPendingActionVariableName(); - $schedule = $this->Application->RecallVar($var_name); - $schedule = $schedule ? unserialize($schedule) : Array (); - - foreach ($schedule as $data) { - if ( $data['action'] == 'delete' ) { - $files_to_delete[] = $data['file']; - } - } - for ($i = 0; $i < min($max_files, count($swf_uploaded_ids)); $i++) { + // don't delete uploaded file, when it's name matches delete file name $real_name = $this->_getRealFilename($swf_uploaded_names[$i], $options, $object, $files_to_delete); $file_name = $this->FullPath . $real_name; @@ -146,13 +137,39 @@ @chmod($file_name, 0666); $fret[] = getArrayValue($options, 'upload_dir') ? $real_name : $this->DestinationPath . $real_name; + $pending_actions[] = Array ( + 'action' => 'make_live', 'id' => $object->GetID(), 'field' => $field_name, 'file' => $file_name + ); + $this->_renameFileInSorting($swf_uploaded_names[$i], $real_name); } + $object->setPendingActions($pending_actions); + return $this->_sortFiles(array_merge($existing, $fret)); } /** + * Returns files, scheduled for deleting + * + * @param kDBItem $object + * @return Array + * @access protected + */ + protected function _getFilesToDelete($object) + { + $ret = Array (); + + foreach ($object->getPendingActions() as $data) { + if ( $data['action'] == 'delete' ) { + $ret[] = $data['file']; + } + } + + return $ret; + } + + /** * Handles regular file upload * * @param string|Array $value @@ -354,6 +371,8 @@ function getSingleFormat($format) { $single_mapping = Array ( + 'file_raw_urls' => 'raw_url', + 'file_display_names' => 'display_name', 'file_urls' => 'full_url', 'file_paths' => 'full_path', 'file_sizes' => 'file_size', @@ -386,7 +405,7 @@ $format = isset($options['format']) ? $options['format'] : false; } - if ( $format && preg_match('/(file_urls|file_paths|file_names|file_sizes|img_sizes|files_resized|wms)(.*)/', $format, $regs) ) { + if ( $format && preg_match('/(file_raw_urls|file_display_names|file_urls|file_paths|file_names|file_sizes|img_sizes|files_resized|wms)(.*)/', $format, $regs) ) { if ( !$value || $format == 'file_names' ) { // storage format matches display format OR no value return $value; @@ -410,8 +429,7 @@ return $value; } - // force direct links for case, when non-swf uploader is used - return $this->GetFormatted($tc_value, $field_name, $object, $format, true); + return $this->GetFormatted($tc_value, $field_name, $object, $format); } /** @@ -421,10 +439,9 @@ * @param string $field_name * @param kDBItem $object * @param string $format - * @param bool $force_direct_links * @return string */ - function GetFormatted($value, $field_name, &$object, $format = NULL, $force_direct_links = NULL) + function GetFormatted($value, $field_name, &$object, $format = NULL) { if ( !$format || !$value ) { return $value; @@ -441,13 +458,16 @@ } switch ($format) { + case 'display_name': + return kUtil::removeTempExtension($value); + break; + + case 'raw_url': + return $this->fileHelper->pathToUrl(FULL_PATH . $upload_dir . $value); + break; + case 'full_url': - if ( isset($force_direct_links) ) { - $direct_links = $force_direct_links; - } - else { - $direct_links = isset($options['direct_links']) ? $options['direct_links'] : false; - } + $direct_links = isset($options['direct_links']) ? $options['direct_links'] : true; if ( $direct_links ) { return $this->fileHelper->pathToUrl(FULL_PATH . $upload_dir . $value); @@ -583,10 +603,9 @@ * @param string $field_name * @param kDBItem $object * @param string $format - * @param bool $force_direct_links * @return string */ - function GetFormatted($value, $field_name, &$object, $format = NULL, $force_direct_links = NULL) + function GetFormatted($value, $field_name, &$object, $format = NULL) { if ( $format == 'img_size' ) { $options = $object->GetFieldOptions($field_name); @@ -596,6 +615,6 @@ return ' ' . $image_info[3]; } - return parent::GetFormatted($value, $field_name, $object, $format, $force_direct_links); + return parent::GetFormatted($value, $field_name, $object, $format); } } \ No newline at end of file