Index: filefield.migrate.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/migrate_extras/filefield.migrate.inc,v retrieving revision 1.1 diff -u -p -r1.1 filefield.migrate.inc --- filefield.migrate.inc 13 Jan 2010 04:04:28 -0000 1.1 +++ filefield.migrate.inc 19 Mar 2010 15:05:58 -0000 @@ -14,19 +14,24 @@ function filefield_migrate_prepare_node( module_load_include('inc', 'filefield', 'field_file'); foreach (filefield_migrate_fields_node($node->type) as $source_key => $label) { - if (isset($tblinfo->fields[$source_key])) { + if (isset($tblinfo->fields[$source_key]) OR isset($node->$source_key)) { - $source_field = $tblinfo->fields[$source_key]['srcfield']; - if (isset($row->$source_field) && $row->$source_field != '') { - $source_file = $row->$source_field; - } - elseif (isset($fields[$source_key]['default_value']) && $fields[$source_key]['default_value'] != '') { - $source_file = $fields[$source_key]['default_value']; - } + if(!isset($node->$source_key)) { + $source_field = $tblinfo->fields[$source_key]['srcfield']; + if (isset($row->$source_field) && $row->$source_field != '') { + $source_files = $row->$source_field; + } + elseif (isset($fields[$source_key]['default_value']) && $fields[$source_key]['default_value'] != '') { + $source_files = $fields[$source_key]['default_value']; + } + else { + continue; + } + } else { - continue; + $source_files = $node->$source_key; } - + $field_name = preg_replace('/_sourcefile$/', '', $source_key); $field = content_fields($field_name, $tblinfo->desttype); @@ -36,14 +41,19 @@ function filefield_migrate_prepare_node( } $files_path = _migrate_widget_files_directory($field); - if ($file = field_file_save_file($source_file, $validators, $files_path)) { - if (!isset($node->$field_name)) { - $node->$field_name = array(); - } - array_push($node->$field_name, $file); + if (!is_array($source_files)) { + $source_files = array($source_files); } - else { - $errors[] = migrate_message(t('File save failed for %file', array('%file' => $source_file))); + foreach ($source_files as $source_file) { + if ($file = field_file_save_file($source_file, $validators, $files_path)) { + if (!isset($node->$field_name)) { + $node->$field_name = array(); + } + array_push($node->$field_name, $file); + } + else { + $errors[] = migrate_message(t('File save failed for %file', array('%file' => $source_file))); + } } } }