? video_upload_bugs.patch
? video_upload_bugs_0.patch
Index: video_upload.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/video/plugins/video_upload/video_upload.module,v
retrieving revision 1.9.2.2
diff -u -r1.9.2.2 video_upload.module
--- video_upload.module	21 Feb 2007 19:06:40 -0000	1.9.2.2
+++ video_upload.module	19 Mar 2007 12:05:55 -0000
@@ -61,7 +61,8 @@
   
       case 'load':
         $output['video_upload_file'] = _video_upload_load($node);
-        if($node->vidfile == '') { // we will disable uploaded file if a path is already live
+        
+        if($node->vidfile == '' && arg(2)!= 'edit') { // we will disable uploaded file if a path is already live
           $output['vidfile'] = file_create_url($output['video_upload_file']->filepath);
           // set the filesize - this seems not to work.. why???
           $output['size'] = $output['video_upload_file']->filesize;
@@ -86,8 +87,8 @@
         break;
       case 'update':
         // is there a better way ???
-        $node->video_upload_file = _video_upload_load($node);
-        _video_upload_delete($node);
+        //$node->video_upload_file = _video_upload_load($node);
+        //_video_upload_delete($node);
         _video_upload_store($node);
         break;
   
@@ -141,7 +142,7 @@
         '#title' => t('Upload video'),
         '#weight' => -19,
         '#collapsible' => TRUE,
-        '#collapsed' => (isset($node->video_upload_file) ? TRUE : FALSE ),
+        '#collapsed' => (isset($node->video_upload_file) ? FALSE : TRUE ),
       );
 
       $form['video']['video_upload'] += _video_upload_form($node);
@@ -153,10 +154,10 @@
 function _video_upload_load(&$node) {
   if ($node->vid) {
     $result = db_query('SELECT * FROM {files} f INNER JOIN {file_revisions} r ON f.fid = r.fid WHERE r.vid = %d ORDER BY f.fid DESC', $node->vid);
-    //while($item =  db_fetch_object($result)) {
-    //  print_r($item); 
-    //}
-    return db_fetch_object($result);
+
+    $video_upload = db_fetch_object($result);
+    $video_upload->loaded = TRUE;
+    return $video_upload;
   }
 }
 
@@ -180,10 +181,16 @@
 
 function _video_upload_prepare(&$node) {
   // clear video file informations
-  if(count($_POST) == 0) {
-    if (!empty($_SESSION['video_upload_file'])) {
+  if (count($_POST) == 0 && !empty($_SESSION['video_upload_file']) &&  !$node->nid) {
+    
+    if(!$_SESSION['video_upload_file']->loaded) {
+      //delete the video if there is a pending file uploaded
+      //on another node creation form which has been abandoned
       file_delete($_SESSION['video_upload_file']->filepath);
+      
+      drupal_set_message($_SESSION['video_upload_file']->filepath . ' ' . t('deleted prepare 1'));
     }
+    
     unset($_SESSION['video_upload_file']);
   }
 
@@ -197,6 +204,18 @@
     // set video size
     $node->size = $node->video_upload_file->filesize;
 
+    if(!empty($_SESSION['video_upload_file'])) {
+      // there was and already uploaded file. we have uploaded another one
+      // then delete the older
+      file_delete($_SESSION['video_upload_file']->filepath);
+      if($node->nid) { // the file is on the file table on DB
+        // delete file information from database
+        db_query('DELETE FROM {file_revisions} WHERE fid = %d', $node->video_upload_file->fid);
+        db_query('DELETE FROM {files} WHERE fid = %d', $node->video_upload_file->fid);
+      }
+
+      drupal_set_message($_SESSION['video_upload_file']->filepath . ' ' . t('deleted prepare 2'));
+    } 
     $_SESSION['video_upload_file'] = $node->video_upload_file;
   }
   else if (!empty($_SESSION['video_upload_file'])) {
@@ -239,6 +258,8 @@
   // delete file information from database
   db_query('DELETE FROM {file_revisions} WHERE fid = %d', $node->video_upload_file->fid);
   db_query('DELETE FROM {files} WHERE fid = %d', $node->video_upload_file->fid);
+  
+  drupal_set_message($node->video_upload_file->path . 'Deleted delete');
 }
 
 
