diff --git a/sites/all/modules/node_export/node_export.module b/sites/all/modules/node_export/node_export.module index 8bdadb9..7158c1c 100644 --- a/sites/all/modules/node_export/node_export.module +++ b/sites/all/modules/node_export/node_export.module @@ -566,7 +566,23 @@ function node_export_import($code_string, $msg_t = 't', $save = TRUE) { drupal_alter('node_export_import', $nodes, $used_format, $save); $new_nodes = array(); $messages = array(); + if (module_exists('entityreference')) { + $entity_references = array(); + $entity_original_uuids = array(); + } foreach ($nodes as $original_node) { + if (module_exists('entityreference')) { + $entity_references[$original_node->uuid] = array(); + $field_list = field_info_instances("node",$original_node->type); + foreach ($field_list as $field_name => $info) { + $field_info = field_info_field($field_name); + $field_type = $field_info['type']; + if ($field_type == 'entityreference') { + $entity_references[$original_node->uuid][$field_name] = $original_node->{$field_name}; + } + $entity_original_uuids[$original_node->nid] = $original_node->uuid; + } + } $node = node_export_node_clone($original_node); // Import file fields. @@ -598,6 +614,7 @@ function node_export_import($code_string, $msg_t = 't', $save = TRUE) { if ($save) { node_export_save($node); $new_nodes[$node->nid] = $node; + $new_nids[$node->uuid] = $node->nid; $messages[] = $msg_t("Imported node !nid: !node", array('!nid' => $node->nid, '!node' => l($node->title, 'node/' . $node->nid))); $count++; } @@ -607,6 +624,26 @@ function node_export_import($code_string, $msg_t = 't', $save = TRUE) { } if ($save) { + if (module_exists('entityreference')) { + foreach($entity_references as $uuid => $fields) { + $nid_to_update = $new_nids[$uuid]; + foreach ($fields as $field_name => $field) { + foreach ($field as $lang => $indexes) { + foreach ($indexes as $index => $value) { + $old_id = $value['target_id']; // $entity_references[$uuid][$field_name][$lang][$index]['target_id']; + $new_uuid = $entity_original_uuids[$old_id]; + if (isset($new_nids[$new_uuid])) { + $entity_references[$uuid][$field_name][$lang][$index]['target_id'] = $new_nids[$new_uuid]; + } + } + } + $new_nodes[$nid_to_update]->{$field_name} = $entity_references[$uuid][$field_name]; + } + } + foreach($new_nodes as $nid => $new_node) { + node_save($new_node); + } + } drupal_alter('node_export_after_import', $new_nodes, $used_format, $save); $messages[] = $msg_t("!count of !total nodes were imported. Some values may have been reset depending on Node export's configuration.", array('!total' => $total, '!count' => $count)); @@ -630,10 +667,8 @@ function node_export_import($code_string, $msg_t = 't', $save = TRUE) { 'format' => $used_format, ); } - } - /** * Save a node object into the database. *