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

quicksketch’s picture

Status: Active » Postponed (maintainer needs more info)

As 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.

quicksketch’s picture

Status: Postponed (maintainer needs more info) » Closed (fixed)

Closing after lack of response.