summaryrefslogtreecommitdiff
path: root/includes/file.inc
diff options
context:
space:
mode:
authorDavid Rothstein <drothstein@gmail.com>2014-01-31 15:34:22 -0500
committerDavid Rothstein <drothstein@gmail.com>2014-01-31 15:34:22 -0500
commite49fde1f1dac6f63e79db7d18fe8cb708dfe68d0 (patch)
tree032b70d3096c43adf103a36dd88d01b2934be098 /includes/file.inc
parent5be1de31ae1664917cd36141d743b5e8fd95cac6 (diff)
downloadbrdo-e49fde1f1dac6f63e79db7d18fe8cb708dfe68d0.tar.gz
brdo-e49fde1f1dac6f63e79db7d18fe8cb708dfe68d0.tar.bz2
Issue #1984378 by Jaypan, JacobSanford, aroq | Dave Hirschman: $source argument is name of form field used to upload file, not "filepath or URI of the uploaded file."
Diffstat (limited to 'includes/file.inc')
-rw-r--r--includes/file.inc47
1 files changed, 24 insertions, 23 deletions
diff --git a/includes/file.inc b/includes/file.inc
index 0ec69b701..ee6ce5181 100644
--- a/includes/file.inc
+++ b/includes/file.inc
@@ -1402,8 +1402,9 @@ function file_space_used($uid = NULL, $status = FILE_STATUS_PERMANENT) {
* Temporary files are periodically cleaned. To make the file a permanent file,
* assign the status and use file_save() to save the changes.
*
- * @param $source
- * A string specifying the filepath or URI of the uploaded file to save.
+ * @param $form_field_name
+ * A string that is the associative array key of the upload form element in
+ * the form array.
* @param $validators
* An optional, associative array of callback functions used to validate the
* file. See file_validate() for a full discussion of the array format.
@@ -1414,9 +1415,9 @@ function file_space_used($uid = NULL, $status = FILE_STATUS_PERMANENT) {
* (Beware: this is not safe and should only be allowed for trusted users, if
* at all).
* @param $destination
- * A string containing the URI $source should be copied to.
- * This must be a stream wrapper URI. If this value is omitted, Drupal's
- * temporary files scheme will be used ("temporary://").
+ * A string containing the URI that the file should be copied to. This must
+ * be a stream wrapper URI. If this value is omitted, Drupal's temporary
+ * files scheme will be used ("temporary://").
* @param $replace
* Replace behavior when the destination file already exists:
* - FILE_EXISTS_REPLACE: Replace the existing file.
@@ -1434,45 +1435,45 @@ function file_space_used($uid = NULL, $status = FILE_STATUS_PERMANENT) {
* - source: Path to the file before it is moved.
* - destination: Path to the file after it is moved (same as 'uri').
*/
-function file_save_upload($source, $validators = array(), $destination = FALSE, $replace = FILE_EXISTS_RENAME) {
+function file_save_upload($form_field_name, $validators = array(), $destination = FALSE, $replace = FILE_EXISTS_RENAME) {
global $user;
static $upload_cache;
// Return cached objects without processing since the file will have
// already been processed and the paths in _FILES will be invalid.
- if (isset($upload_cache[$source])) {
- return $upload_cache[$source];
+ if (isset($upload_cache[$form_field_name])) {
+ return $upload_cache[$form_field_name];
}
// Make sure there's an upload to process.
- if (empty($_FILES['files']['name'][$source])) {
+ if (empty($_FILES['files']['name'][$form_field_name])) {
return NULL;
}
// Check for file upload errors and return FALSE if a lower level system
// error occurred. For a complete list of errors:
// See http://php.net/manual/features.file-upload.errors.php.
- switch ($_FILES['files']['error'][$source]) {
+ switch ($_FILES['files']['error'][$form_field_name]) {
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
- drupal_set_message(t('The file %file could not be saved, because it exceeds %maxsize, the maximum allowed size for uploads.', array('%file' => $_FILES['files']['name'][$source], '%maxsize' => format_size(file_upload_max_size()))), 'error');
+ drupal_set_message(t('The file %file could not be saved, because it exceeds %maxsize, the maximum allowed size for uploads.', array('%file' => $_FILES['files']['name'][$form_field_name], '%maxsize' => format_size(file_upload_max_size()))), 'error');
return FALSE;
case UPLOAD_ERR_PARTIAL:
case UPLOAD_ERR_NO_FILE:
- drupal_set_message(t('The file %file could not be saved, because the upload did not complete.', array('%file' => $_FILES['files']['name'][$source])), 'error');
+ drupal_set_message(t('The file %file could not be saved, because the upload did not complete.', array('%file' => $_FILES['files']['name'][$form_field_name])), 'error');
return FALSE;
case UPLOAD_ERR_OK:
// Final check that this is a valid upload, if it isn't, use the
// default error handler.
- if (is_uploaded_file($_FILES['files']['tmp_name'][$source])) {
+ if (is_uploaded_file($_FILES['files']['tmp_name'][$form_field_name])) {
break;
}
// Unknown error
default:
- drupal_set_message(t('The file %file could not be saved. An unknown error has occurred.', array('%file' => $_FILES['files']['name'][$source])), 'error');
+ drupal_set_message(t('The file %file could not be saved. An unknown error has occurred.', array('%file' => $_FILES['files']['name'][$form_field_name])), 'error');
return FALSE;
}
@@ -1480,10 +1481,10 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
$file = new stdClass();
$file->uid = $user->uid;
$file->status = 0;
- $file->filename = trim(drupal_basename($_FILES['files']['name'][$source]), '.');
- $file->uri = $_FILES['files']['tmp_name'][$source];
+ $file->filename = trim(drupal_basename($_FILES['files']['name'][$form_field_name]), '.');
+ $file->uri = $_FILES['files']['tmp_name'][$form_field_name];
$file->filemime = file_get_mimetype($file->filename);
- $file->filesize = $_FILES['files']['size'][$source];
+ $file->filesize = $_FILES['files']['size'][$form_field_name];
$extensions = '';
if (isset($validators['file_validate_extensions'])) {
@@ -1540,7 +1541,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
return FALSE;
}
- $file->source = $source;
+ $file->source = $form_field_name;
// A URI may already have a trailing slash or look like "public://".
if (substr($destination, -1) != '/') {
$destination .= '/';
@@ -1549,7 +1550,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
// If file_destination() returns FALSE then $replace == FILE_EXISTS_ERROR and
// there's an existing file so we need to bail.
if ($file->destination === FALSE) {
- drupal_set_message(t('The file %source could not be uploaded because a file by that name already exists in the destination %directory.', array('%source' => $source, '%directory' => $destination)), 'error');
+ drupal_set_message(t('The file %source could not be uploaded because a file by that name already exists in the destination %directory.', array('%source' => $form_field_name, '%directory' => $destination)), 'error');
return FALSE;
}
@@ -1568,7 +1569,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
else {
$message .= ' ' . array_pop($errors);
}
- form_set_error($source, $message);
+ form_set_error($form_field_name, $message);
return FALSE;
}
@@ -1576,8 +1577,8 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
// directory. This overcomes open_basedir restrictions for future file
// operations.
$file->uri = $file->destination;
- if (!drupal_move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->uri)) {
- form_set_error($source, t('File upload error. Could not move uploaded file.'));
+ if (!drupal_move_uploaded_file($_FILES['files']['tmp_name'][$form_field_name], $file->uri)) {
+ form_set_error($form_field_name, t('File upload error. Could not move uploaded file.'));
watchdog('file', 'Upload error. Could not move uploaded file %file to destination %destination.', array('%file' => $file->filename, '%destination' => $file->uri));
return FALSE;
}
@@ -1597,7 +1598,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
// If we made it this far it's safe to record this file in the database.
if ($file = file_save($file)) {
// Add file to the cache.
- $upload_cache[$source] = $file;
+ $upload_cache[$form_field_name] = $file;
return $file;
}
return FALSE;