diff --git a/components/file.inc b/components/file.inc index 47cf46fc..998267e2 100644 --- a/components/file.inc +++ b/components/file.inc @@ -28,6 +28,7 @@ function _webform_defaults_file() { ), 'rename' => '', 'scheme' => $scheme, + 'temporary_scheme' => FALSE, 'directory' => '', 'progress_indicator' => 'throbber', 'title_display' => 0, @@ -352,6 +353,11 @@ function _webform_render_file($component, $value = NULL, $filter = TRUE, $submis $max_filesize = parse_size($set_filesize); } + // Save the file to the temporary file system. + if (isset($component['extra'][' temporary_scheme']) && $component['extra']['temporary_scheme']) { + $component['extra']['scheme'] = 'temporary'; + } + $element = array( '#type' => 'managed_file', '#theme' => 'webform_managed_file', @@ -665,11 +671,20 @@ function webform_file_process_rename($node, $submission, $component, $fid) { $extension = $info['extension']; // Prepare new file name without extension. - $new_file_name = webform_replace_tokens($component['extra']['rename'], $node, $submission, NULL, TRUE); - $new_file_name = trim($new_file_name); - $new_file_name = _webform_transliterate($new_file_name); - $new_file_name = str_replace('/', '_', $new_file_name); - $new_file_name = preg_replace('/[^a-zA-Z0-9_\- ]/', '', $new_file_name); + if ($component['extra']['rename']) { + $new_file_name = webform_replace_tokens($component['extra']['rename'], $node, $submission, NULL, TRUE); + $new_file_name = trim($new_file_name); + $new_file_name = _webform_transliterate($new_file_name); + $new_file_name = str_replace('/', '_', $new_file_name); + $new_file_name = preg_replace('/[^a-zA-Z0-9_\- ]/', '', $new_file_name); + } + + // If file was stored in the temporary file system, move it to it's intended + // destination directory and filename. + elseif (isset($component['extra']['temporary_scheme']) && $component['extra']['temporary_scheme']) { + $new_file_name = substr($file->filename, 0, -(strlen($extension) + 1)); + } + if (strlen($new_file_name)) { // Prepare the new uri with new filename. $destination = "$destination_dir/$new_file_name.$extension"; diff --git a/webform.module b/webform.module index bb33f855..0797fb62 100644 --- a/webform.module +++ b/webform.module @@ -1324,6 +1324,9 @@ function webform_webform_submission_presave($node, &$submission) { if (strlen($component['extra']['rename'])) { $renameable[$cid][] = $value; } + elseif (isset($component['extra']['temporary_scheme']) && $component['extra']['temporary_scheme']) { + $renameable[$cid][] = $value; + } } $new_fids = array_merge($new_fids, $submission->data[$cid]); }