diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/CckFile.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/CckFile.php index a5f72d9..b0f48fa 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/CckFile.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/CckFile.php @@ -25,10 +25,19 @@ class CckFile extends Route implements ContainerFactoryPluginInterface { public function transform($value, MigrateExecutable $migrate_executable, Row $row, $destination_property) { list($fid, $list, $data) = $value; - $options = unserialize($data); + // If $fid is still an array at this point, that's because we have a file + // attachment as per D6 core. If not, then we have a filefield from contrib. + if (is_array($fid)) { + $list = $fid['list']; + $fid = $fid['fid']; + } + else { + $options = unserialize($data); + } + $file = [ 'target_id' => $fid, - 'display' => TRUE, + 'display' => isset($list) ? $list : 0, 'description' => isset($options['description']) ? $options['description'] : '', ]; diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php index 0b3cc2b..38c75f4 100644 --- a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php +++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php @@ -173,6 +173,7 @@ public function testCckFields() { // Test the file field meta. $this->assertIdentical($node->field_test_filefield->description, 'desc'); + $this->assertIdentical($node->field_test_filefield->target_id, '1'); $planet_node = Node::load(3); $this->assertEqual($planet_node->field_multivalue->value, 33);