Index: nodereference.module =================================================================== RCS file: /cvs/drupal/contributions/modules/cck/nodereference.module,v retrieving revision 1.25.2.12 diff -u -r1.25.2.12 nodereference.module --- nodereference.module 17 Oct 2006 13:21:21 -0000 1.25.2.12 +++ nodereference.module 30 Oct 2006 21:38:14 -0000 @@ -87,6 +87,23 @@ $items[$delta]['view'] = content_format($field, $item, 'default', $node); } return theme('field', $node, $field, $items, $teaser, $page); + + case 'update': + if ($field['widget']['type'] == 'nodereference_autocomplete' && !$field['multiple']) { + $db_info = content_database_info($field); + + // Delete and insert, rather than update, in case a field was added. + db_query('DELETE FROM {'. $db_info['table'] .'} WHERE vid = %d', $node->vid); + + if (db_result(db_query('SELECT COUNT(*) FROM {'. $db_info['table'] .'} WHERE vid = %d AND nid = %d', $node->vid, $node->nid))) { + db_query('UPDATE {'. $db_info['table'] .'} SET '. $db_info['columns']['nid']['column'] .' = %d WHERE vid = %d AND nid = %d', $item['nid'], $node->vid, $node->nid); + } + else { + db_query('INSERT INTO {'. $db_info['table'] .'} ('. $db_info['columns']['nid']['column'] .', vid, nid) VALUES (%d, %d, %d)', $item['nid'], $node->vid, $node->nid); + } + return; + } + break; } }