Index: flashvideo.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flashvideo/flashvideo.module,v
retrieving revision 1.73.2.113
diff -u -r1.73.2.113 flashvideo.module
--- sites/all/modules/flashvideo/flashvideo.module	31 Aug 2009 00:20:15 -0000	1.73.2.113
+++ sites/all/modules/flashvideo/flashvideo.module	14 Sep 2009 07:00:00 -0000
@@ -1579,6 +1579,27 @@
         $file = (object)$file;
         // Only continue if it is a video
         if (_flashvideo_get_mime_type($file->filepath) !== FALSE) {
+          /*
+           * If they want to remove a file and upload a new one
+           */
+          if(isset($node->$cck_finished_video_field['field_name']) && sizeof($node->$cck_finished_video_field['field_name']) == 1){
+            $file_finished = $node->$cck_finished_video_field['field_name'];
+            $file_finished = (object)$file_finished[0];
+          }
+          if(isset($node->$cck_finished_thumbnail_field['field_name']) && sizeof($node->$cck_finished_thumbnail_field['field_name']) == 1){
+            $file_thumb = $node->$cck_finished_thumbnail_field['field_name'];
+            $file_thumb = (object)$file_thumb[0];
+          }
+          //Look if the file in filefield is a new one
+          if($file->fid > $file_finished->fid && $file->fid > $file_thumb->fid){
+            
+            _flashvideo_file_delete_by_id($file_finished->fid);
+            _flashvideo_file_delete_by_id($file_thumb->fid);
+            $result = db_fetch_object(db_query('SELECT oid FROM {flashvideo} WHERE fid = %d',$file_finished->fid));
+            //unpublish the node
+            db_query('UPDATE {node} SET status = 0 WHERE nid = %d',$node->nid);
+            db_query('DELETE FROM {flashvideo} WHERE oid = %d',$result->oid);
+          }
           // Is this file already part of the flashvideo table?
           $found = db_result(db_query("SELECT count(*) FROM {flashvideo} WHERE fid=%d", $file->fid));
           // Only add if the file is a video and is not already in our flashvideo table.
@@ -1671,6 +1692,36 @@
 }
 
 /**
+ * Deletes a file by its id
+ * @param $fid
+ * @return Array of two boolean values.
+ * <ul>
+ *  <li>first boolean tells, if file could be deleted from database</li>
+ *  <li>second boolean tells, if file could be deleted from file system</li>
+ * </ul>
+ * 
+ * 
+ */
+
+function _flashvideo_file_delete_by_id($fid){
+  $ret = array(TRUE,TRUE);
+  
+  $result = db_query("SELECT * FROM {files} WHERE fid = %d",$fid);
+  if(db_affected_rows() == 0){
+    return array(FALSE,FALSE);
+  }
+  
+  $file=db_fetch_object($result);
+  $ret[1] = file_delete($file->filepath);
+  
+  $result = db_query("DELETE FROM {files} WHERE fid = %d",$fid);
+  if(!$result){
+    $ret[0] = FALSE;
+  }
+  return $ret;
+}
+
+/**
  *  This function will search for a filepath, trying several commons paths.
  *
  * @param  $filepath
