? flexiconvert-newfields.patch
? flexiconvert-vid.patch
? flexiconvert.module.new
Index: flexiconvert.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flexiconvert/flexiconvert.module,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 flexiconvert.module
--- flexiconvert.module	31 Jan 2007 19:01:21 -0000	1.1.1.1
+++ flexiconvert.module	23 Mar 2007 02:01:56 -0000
@@ -10,7 +10,7 @@ function flexiconvert_help($section) { 
     case 'admin/help#flexiconvert':
         return t('Flexiconvert will convert some kinds of flexinode types into cck types.<br>' .
             '<b>Limitations:</b> <ul>' .
-            '<li>Only converts text types</li>' .
+            '<li>Only converts text, image, url and file types</li>' .
             '<li>All fields that are being converted must have unique names</li>' .
             '<li>You must build the matching cck type by hand</li>' .
             '<li>All fields in the cck type must have identical labels to the flexinode type fields</li>' .
@@ -44,7 +44,7 @@ function flexiconvert_menu($may_cache) {
   return $items;
 }
 
-function flexiconvert_submit( $form_id, $form_values ) {
+function flexiconvert_form_submit($form_id, $form_values) {
   $flexitype = $form_values['flexitype'];
   $ccktype = $form_values['ccktype'];
   variable_set( 'flexiconvert_flexitype', $flexitype );      
@@ -66,12 +66,23 @@ function flexiconvert_submit( $form_id, 
   // gather all the field data, ordered per node
   $nodes = array();
   foreach( $fields as $flexifield_id => $cckfield ) {
-    $sql = "SELECT nid, textual_data, numeric_data FROM {flexinode_data} WHERE field_id = $flexifield_id";
+    $sql = "SELECT ff.field_type, fd.nid, fd.textual_data, fd.numeric_data, fd.serialized_data FROM {flexinode_data} fd, {flexinode_field} ff WHERE fd.field_id = $flexifield_id AND fd.field_id = ff.field_id";
     //drupal_set_message( $sql );
     $result = db_query( $sql );
     while( $row = db_fetch_array( $result ) ) {
-      $nodes[ $row['nid'] ][$cckfield]['text'] = $row['textual_data'];
-      $nodes[ $row['nid'] ][$cckfield]['format'] = $row['numeric_data'];
+      if ($row['field_type'] == 'textfield' || $row['field_type'] == 'textarea') {
+        $nodes[ $row['nid'] ][$cckfield]['text'] = $row['textual_data'];
+        $nodes[ $row['nid'] ][$cckfield]['format'] = $row['numeric_data'];
+      }
+      else if ($row['field_type'] == 'image') {
+        $nodes[ $row['nid'] ][$cckfield]['image'] = $row['serialized_data'];
+      }
+      else if ($row['field_type'] == 'url') {
+        $nodes[ $row['nid'] ][$cckfield]['url'] = $row['textual_data'];
+      }
+      else if ($row['field_type'] == 'file') {
+        $nodes[ $row['nid'] ][$cckfield]['file'] = $row['serialized_data'];
+      }
       //drupal_set_message( 'Nodes['. $row['nid'] . "][$cckfield] = ". $row['textual_data'] );
     }
   }
@@ -93,9 +104,26 @@ function flexiconvert_submit( $form_id, 
     //drupal_set_message( "$count: $sql" );
     db_query( $sql );
     foreach( $node as $cckfield => $value ) {
-      db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table,  $cckfield . '_value', $value['text'], $nid );
-      if( $value['format'] != 0 ) {
-        db_query( "UPDATE {%s} SET %s = '%d' WHERE nid = %d", $cck_table,  $cckfield . '_format', $value['format'], $nid );
+      if ($value['image']) {
+        $file = unserialize($value['image']);
+        $fid = db_next_id('{files}_fid');
+        db_query("INSERT into {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s','%s','%s',%d)", $fid, $nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
+        db_query( "UPDATE {%s} SET %s = '%s', %s = '%s', %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_fid', $fid, $cckfield . '_title', $file->filename, $cckfield . '_alt', $file->filename, $nid);
+      }
+      else if ($value['url']) {
+        db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table,  $cckfield . '_url', $value['url'],  $nid);
+      }
+      else if ($value['text']) {
+        db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table,  $cckfield . '_value', $value['text'], $nid );
+        if( $value['format'] != 0 ) {
+          db_query( "UPDATE {%s} SET %s = '%d' WHERE nid = %d", $cck_table,  $cckfield . '_format', $value['format'], $nid );
+        }
+      }
+      else if ($value['file']) {
+        $file = unserialize($value['file']);
+        $fid = db_next_id('{files}_fid');
+        db_query("INSERT into {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s','%s','%s',%d)", $fid, $nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
+        db_query( "UPDATE {%s} SET %s = '%s', %s = '%s', %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_fid', $fid, $cckfield . '_description', $file->filename, $cckfield . '_list', 0, $nid);
       }
     }
   }
@@ -149,7 +177,7 @@ function flexiconvert_page() { 
     '#value' => t('Do It'),
   );
   
-  return drupal_get_form('flexiconvert', $form);
+  return drupal_get_form('flexiconvert_form', $form);
 }
 
 
