summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/file.inc38
-rw-r--r--modules/simpletest/tests/file.test70
-rw-r--r--modules/simpletest/tests/file_test.module12
-rw-r--r--modules/upload/upload.module3
4 files changed, 13 insertions, 110 deletions
diff --git a/includes/file.inc b/includes/file.inc
index bc6134d60..b79525b5b 100644
--- a/includes/file.inc
+++ b/includes/file.inc
@@ -780,8 +780,8 @@ function file_space_used($uid = NULL, $status = FILE_STATUS_PERMANENT) {
* Saves a file upload to a new location.
*
* The file will be added to the files table as a temporary file. Temporary
- * files are periodically cleaned. To make the file permanent file call
- * file_set_status() to change its status.
+ * files are periodically cleaned. To make the file a permanent file call
+ * assign the status and use file_save() to save it.
*
* @param $source
* A string specifying the name of the upload field to save.
@@ -1176,40 +1176,6 @@ function file_unmanaged_save_data($data, $destination = NULL, $replace = FILE_EX
}
/**
- * Set the status of a file.
- *
- * @param $file
- * A Drupal file object.
- * @param $status
- * A status value to set the file to.
- * - FILE_STATUS_TEMPORARY - A temporary file that Drupal's garbage
- * collection will remove.
- * - FILE_STATUS_PERMANENT - A permanent file that Drupal's garbage
- * collection will not remove.
- * @return
- * File object if the change is successful, or FALSE in the event of an
- * error.
- *
- * @see hook_file_status()
- */
-function file_set_status($file, $status = FILE_STATUS_PERMANENT) {
- $file = (object)$file;
-
- $num_updated = db_update('files')
- ->fields(array('status' => $status))
- ->condition('fid', $file->fid)
- ->execute();
-
- if ($num_updated) {
- $file->status = $status;
- // Notify other modules that the file's status has changed.
- module_invoke_all('file_status', $file);
- return $file;
- }
- return FALSE;
-}
-
-/**
* Transfer file using HTTP to client. Pipes a file through Drupal to the
* client.
*
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test
index 97014962e..564ecea35 100644
--- a/modules/simpletest/tests/file.test
+++ b/modules/simpletest/tests/file.test
@@ -974,18 +974,22 @@ class FileSaveTest extends FileHookTestCase {
$this->assertFileHookCalled('insert');
$this->assertNotNull($saved_file, t("Saving the file should give us back a file object."), 'File');
$this->assertTrue($saved_file->fid > 0, t("A new file ID is set when saving a new file to the database."), 'File');
- $this->assertEqual(db_result(db_query('SELECT COUNT(*) FROM {files} f WHERE f.fid = %d', array($saved_file->fid))), 1, t("Record exists in the database."));
+ $loaded_file = db_query('SELECT * FROM {files} f WHERE f.fid = :fid', array(':fid' => $saved_file->fid))->fetch(PDO::FETCH_OBJ);
+ $this->assertNotNull($loaded_file, t("Record exists in the database."));
+ $this->assertEqual($loaded_file->status, $file->status, t("Status was saved correctly."));
$this->assertEqual($saved_file->filesize, filesize($file->filepath), t("File size was set correctly."), 'File');
$this->assertTrue($saved_file->timestamp > 1, t("File size was set correctly."), 'File');
// Resave the file, updating the existing record.
file_test_reset();
+ $saved_file->status = 7;
$resaved_file = file_save($saved_file);
$this->assertFileHookCalled('update');
$this->assertEqual($resaved_file->fid, $saved_file->fid, t("The file ID of an existing file is not changed when updating the database."), 'File');
$this->assertTrue($resaved_file->timestamp >= $saved_file->timestamp, t("Timestamp didn't go backwards."), 'File');
- $count = db_result(db_query('SELECT COUNT(*) FROM {files} f WHERE f.fid = %d', array($saved_file->fid)));
- $this->assertEqual($count, 1, t("Record still exists in the database."), 'File');
+ $loaded_file = db_query('SELECT * FROM {files} f WHERE f.fid = :fid', array(':fid' => $saved_file->fid))->fetch(PDO::FETCH_OBJ);
+ $this->assertNotNull($loaded_file, t("Record still exists in the database."), 'File');
+ $this->assertEqual($loaded_file->status, $saved_file->status, t("Status was saved correctly."));
}
}
@@ -1033,66 +1037,6 @@ class FileValidateTest extends FileHookTestCase {
}
/**
- * Tests the file_set_status() function.
- */
-class FileSetStatusTest extends FileHookTestCase {
- /**
- * Implementation of getInfo().
- */
- function getInfo() {
- return array(
- 'name' => t('File set status'),
- 'description' => t('Tests the file set status functions.'),
- 'group' => t('File'),
- );
- }
-
- /**
- * Test the file_set_status() function.
- */
- function testFileSetStatus() {
- // Create a new file object.
- $file = array(
- 'uid' => 1,
- 'filename' => 'druplicon.png',
- 'filepath' => 'misc/druplicon.png',
- 'filemime' => 'image/png',
- 'timestamp' => 1,
- 'status' => FILE_STATUS_TEMPORARY,
- );
- $file = file_save($file);
- // Just a couple of sanity checks before we start the real testing.
- $this->assertTrue($file->fid, t("Make sure the file saved correctly."));
- $this->assertEqual($file->status, FILE_STATUS_TEMPORARY, t("Status was set during save."));
-
- // Change the status and make sure everything works
- file_test_reset();
- $returned = file_set_status($file);
- $this->assertEqual(count(file_test_get_calls('status')), 1, t('hook_file_status was called.'));
- $this->assertNotIdentical($returned, FALSE, t("file_set_status() worked and returned a non-false value."));
- $this->assertEqual($returned->fid, $file->fid, t("Returned the correct file."));
- $this->assertEqual($returned->status, FILE_STATUS_PERMANENT, t("File's status was changed."));
-
- // Try it resetting it to the same value.
- file_test_reset();
- $returned = file_set_status($file, FILE_STATUS_PERMANENT);
- $this->assertEqual(count(file_test_get_calls('status')), 0, t('hook_file_status was not called.'));
- $this->assertIdentical($returned, FALSE, t("file_set_status() failed since there was no change."));
- $test_file = file_load($file->fid);
- $this->assertEqual($test_file->fid, $file->fid , t("Loaded the correct file."));
- $this->assertEqual($test_file->status, FILE_STATUS_PERMANENT, t("File's status is correct."));
-
- // Now switch it.
- file_test_reset();
- $returned = file_set_status($file, FILE_STATUS_TEMPORARY);
- $this->assertEqual(count(file_test_get_calls('status')), 1, t('hook_file_status was called.'));
- $this->assertNotIdentical($returned, FALSE, t("file_set_status() worked and returned a non-false value."));
- $this->assertEqual($returned->fid, $file->fid , t("Returned the correct file."));
- $this->assertEqual($returned->status, FILE_STATUS_TEMPORARY, t("File's status is correct."));
- }
-}
-
-/**
* Tests the file_save_data() function.
*/
class FileSaveDataTest extends FileHookTestCase {
diff --git a/modules/simpletest/tests/file_test.module b/modules/simpletest/tests/file_test.module
index 142748e9a..6240f4712 100644
--- a/modules/simpletest/tests/file_test.module
+++ b/modules/simpletest/tests/file_test.module
@@ -67,7 +67,6 @@ function file_test_reset() {
'validate' => array(),
'download' => array(),
'references' => array(),
- 'status' => array(),
'insert' => array(),
'update' => array(),
'copy' => array(),
@@ -91,7 +90,7 @@ function file_test_reset() {
*
* @param $op
* One of the hook_file_* operations: 'load', 'validate', 'download',
- * 'references', 'status', 'insert', 'update', 'copy', 'move', 'delete'.
+ * 'references', 'insert', 'update', 'copy', 'move', 'delete'.
* @returns
* Array of the parameters passed to each call.
* @see _file_test_log_call() and file_test_reset()
@@ -106,7 +105,7 @@ function file_test_get_calls($op) {
*
* @param $op
* One of the hook_file_* operations: 'load', 'validate', 'download',
- * 'references', 'status', 'insert', 'update', 'copy', 'move', 'delete'.
+ * 'references', 'insert', 'update', 'copy', 'move', 'delete'.
* @param $args
* Values passed to hook.
* @see file_test_get_calls() and file_test_reset()
@@ -165,13 +164,6 @@ function file_test_file_validate($file) {
}
/**
- * Implementation of hook_file_status().
- */
-function file_test_file_status($file) {
- _file_test_log_call('status', array($file));
-}
-
-/**
* Implementation of hook_file_download().
*/
function file_test_file_download($file) {
diff --git a/modules/upload/upload.module b/modules/upload/upload.module
index e1dae1f28..8f223ad1a 100644
--- a/modules/upload/upload.module
+++ b/modules/upload/upload.module
@@ -479,7 +479,8 @@ function upload_save(&$node) {
else {
db_query("UPDATE {upload} SET list = %d, description = '%s', weight = %d WHERE fid = %d AND vid = %d", $file->list, $file->description, $file->weight, $file->fid, $node->vid);
}
- file_set_status($file, FILE_STATUS_PERMANENT);
+ $file->status &= FILE_STATUS_PERMANENT;
+ $file = file_save($file);
}
}