- Patch #984456 by Dave Reid, bfroehle: cleanup file_field_widget_uri() and its token replacement.

merge-requests/26/head
Dries Buytaert 2011-04-16 08:48:26 -04:00
parent 38b2990052
commit 9c57079db6
2 changed files with 8 additions and 3 deletions

View File

@ -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;

View File

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