summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/file/file.field.inc7
-rw-r--r--modules/file/tests/file.test4
2 files changed, 8 insertions, 3 deletions
diff --git a/modules/file/file.field.inc b/modules/file/file.field.inc
index 5508b9bbb..2af3cb620 100644
--- a/modules/file/file.field.inc
+++ b/modules/file/file.field.inc
@@ -567,14 +567,17 @@ function file_field_widget_upload_validators($field, $instance) {
* A field array.
* @param $instance
* A field instance array.
+ * @param $data
+ * An array of token objects to pass to token_replace().
* @return
* A file directory URI with tokens replaced.
+ *
+ * @see token_replace()
*/
-function file_field_widget_uri($field, $instance, $account = NULL) {
+function file_field_widget_uri($field, $instance, $data = array()) {
$destination = trim($instance['settings']['file_directory'], '/');
// Replace tokens.
- $data = array('user' => isset($account) ? $account : $GLOBALS['user']);
$destination = token_replace($destination, $data);
return $field['settings']['uri_scheme'] . '://' . $destination;
diff --git a/modules/file/tests/file.test b/modules/file/tests/file.test
index 99f95b42f..ea8c5c67b 100644
--- a/modules/file/tests/file.test
+++ b/modules/file/tests/file.test
@@ -932,7 +932,7 @@ class FileFieldPathTestCase extends FileFieldTestCase {
// Check the path when used with tokens.
// Change the path to contain multiple token directories.
- $field = $this->updateFileField($field_name, $type_name, array('file_directory' => '[user:uid]/[user:name]'));
+ $field = $this->updateFileField($field_name, $type_name, array('file_directory' => '[current-user:uid]/[current-user:name]'));
// Upload a new file into the token subdirectories.
$nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
@@ -940,6 +940,8 @@ class FileFieldPathTestCase extends FileFieldTestCase {
// Check that the file was uploaded into the subdirectory.
$node = node_load($nid, NULL, TRUE);
$node_file = (object) $node->{$field_name}[LANGUAGE_NONE][0];
+ // Do token replacement using the same user which uploaded the file, not
+ // the user running the test case.
$data = array('user' => $this->admin_user);
$subdirectory = token_replace('[user:uid]/[user:name]', $data);
$this->assertPathMatch('public://' . $subdirectory . '/' . $test_file->filename, $node_file->uri, t('The file %file was uploaded to the correct path with token replacements.', array('%file' => $node_file->uri)));