--- upload.module.cvs	2005-09-02 10:00:03.000000000 +0200
+++ upload.module	2005-09-23 22:05:44.000000000 +0200
@@ -149,6 +149,7 @@
       if (is_array($node->list)) {
         foreach ($node->list as $key => $value) {
           if ($file = file_check_upload($key)) {
+            module_invoke_all('file', 'validate', $file);
             $node->files[$file->source] = $file;
             $node->files[$key]->list = $node->list[$key];
             $node->files[$key]->remove = $node->remove[$key];
@@ -160,6 +161,7 @@
       }
       else {
         foreach ($node->files as $key => $file) {
+          module_invoke_all('file', 'validate', $file);
           $node->list[$key] = $file->list;
         }
       }
@@ -220,6 +222,7 @@
           $node->files[$key] = $file;
         }
       }
+
       break;
 
     case 'form post':
@@ -342,8 +345,10 @@
       // Insert new files:
       if ($file = file_save_upload($file, $file->filename)) {
         $fid = db_next_id('{files}_fid');
+         $file->fid = $fid;
         db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
                  $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key]);
+         module_invoke_all('file', 'insert', $file);
       }
     }
   }
@@ -356,11 +361,13 @@
       if (!($count > 0)) {
         file_delete($file->filepath);
       }
+      module_invoke_all('file', 'delete', $file);        
     }
   }
   foreach ((array)$node->list as $key => $value) {
     if (!$node->remove[$key]) {
       db_query('UPDATE {files} SET list = %d WHERE fid = %d AND vid = %d', $node->list[$key], $key, $node->vid);
+      module_invoke_all('file', 'update', $file);
     }
   }
   if ($node->old_vid) {
@@ -381,6 +388,7 @@
     file_delete($file->filepath);
   }
   db_query("DELETE FROM {files} WHERE nid = %d", $node->nid);
+  module_invoke_all('file', 'delete', $file);  
 }
 
 function upload_form($node) {
@@ -431,6 +439,7 @@
     $result = db_query("SELECT * FROM {files} WHERE vid = %d", $node->vid);
     while ($file = db_fetch_object($result)) {
       $files[$file->fid] = $file;
+      module_invoke_all('file', 'load', $file);
     }
   }
 
