Closed (fixed)
Project:
FileField
Version:
6.x-3.2
Component:
Code
Priority:
Minor
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
11 Mar 2010 at 13:28 UTC
Updated:
16 Jun 2010 at 23:25 UTC
There are some notice error in the Filefield module.
Fix:
diff -r sites/all/modules/filefield/field_file.inc
--- a/sites/all/modules/filefield/field_file.inc
+++ b/sites/all/modules/filefield/field_file.inc
@@ -263,7 +263,7 @@ function field_file_delete($file, $force
// Make sure the file is deleted before removing its row from the
// database, so UIs can still find the file in the database.
- if (file_delete($file->filepath)) {
+ if (isset($file->filepath) && file_delete($file->filepath)) {
db_query('DELETE FROM {files} WHERE fid = %d', $file->fid);
_field_file_cache(NULL, $file); // delete the file from the cache
return TRUE;
diff -r sites/all/modules/filefield/filefield.module
--- a/sites/all/modules/filefield/filefield.module
+++ b/sites/all/modules/filefield/filefield.module
@@ -899,27 +899,29 @@ function filefield_get_file_reference_co
$references = 0;
foreach ($fields as $field) {
- $db_info = content_database_info($field);
- $references += db_result(db_query(
- 'SELECT count('. $db_info['columns']['fid']['column'] .')
- FROM {'. $db_info['table'] .'}
- WHERE '. $db_info['columns']['fid']['column'] .' = %d', $file->fid
- ));
+ if (isset($file->fid)) {
+ $db_info = content_database_info($field);
+ $references += db_result(db_query(
+ 'SELECT count('. $db_info['columns']['fid']['column'] .')
+ FROM {'. $db_info['table'] .'}
+ WHERE '. $db_info['columns']['fid']['column'] .' = %d', $file->fid
+ ));
- // If a field_name is present in the file object, the file is being deleted
- // from this field.
- if (isset($file->field_name) && $field['field_name'] == $file->field_name) {
- // If deleting the entire node, count how many references to decrement.
- if (isset($file->delete_nid)) {
- $node_references = db_result(db_query(
- 'SELECT count('. $db_info['columns']['fid']['column'] .')
- FROM {'. $db_info['table'] .'}
- WHERE '. $db_info['columns']['fid']['column'] .' = %d AND nid = %d', $file->fid, $file->delete_nid
- ));
- $references = $references - $node_references;
- }
- else {
- $references = $references - 1;
+ // If a field_name is present in the file object, the file is being deleted
+ // from this field.
+ if (isset($file->field_name) && $field['field_name'] == $file->field_name) {
+ // If deleting the entire node, count how many references to decrement.
+ if (isset($file->delete_nid)) {
+ $node_references = db_result(db_query(
+ 'SELECT count('. $db_info['columns']['fid']['column'] .')
+ FROM {'. $db_info['table'] .'}
+ WHERE '. $db_info['columns']['fid']['column'] .' = %d AND nid = %d', $file->fid, $file->delete_nid
+ ));
+ $references = $references - $node_references;
+ }
+ else {
+ $references = $references - 1;
+ }
}
}
}
diff -r sites/all/modules/filefield/filefield.token.inc
--- a/sites/all/modules/filefield/filefield.token.inc
+++ b/sites/all/modules/filefield/filefield.token.inc
@@ -34,7 +34,7 @@ function filefield_token_list($type = 'a
* Provide the token values for a given file item.
*/
function filefield_token_values($type, $object = NULL) {
- if ($type == 'field') {
+ if ($type == 'field' && isset($item['fid'])) {
$item = $object[0];
$tokens['filefield-fid'] = $item['fid'];
$tokens['filefield-description'] = isset($item['data']['description']) ? $item['data']['description'] : '';
@@ -58,7 +58,7 @@ function filefield_token_values($type, $
if (!isset($tokens['filefield-extension'])) {
$info = pathinfo($item['filename']);
$tokens['filefield-onlyname'] = $info['filename'];
- $tokens['filefield-extension'] = $info['extension'];
+ $tokens['filefield-extension'] = (isset($info['extension']) ? $info['extension'] : NULL);
}
return $tokens;
}
diff -r sites/all/modules/filefield/filefield_field.inc
--- a/sites/all/modules/filefield/filefield_field.inc
+++ b/sites/all/modules/filefield/filefield_field.inc
@@ -216,7 +216,7 @@ function filefield_field_delete_file($fi
// To prevent FileField from deleting files it doesn't know about, check the
// FileField reference count. Temporary files can be deleted because they
// are not yet associated with any content at all.
- if ($file->status == 0 || filefield_get_file_reference_count($file, $field) > 0) {
+ if ((isset($file->status) && $file->status == 0) || filefield_get_file_reference_count($file, $field) > 0) {
$file->field_name = $field_name;
$file->delete_nid = $delete_nid;
return field_file_delete($file);
Comments
Comment #1
quicksketchAs far as I can tell, none of these changes are necessary when making proper API calls to FileField. Could you describe how to cause any of these notices while using FileField? I keep notices enabled all the time on my development server and I am unable to reproduce any of these notices.
Comment #2
quicksketchClosing after lack of response.