Index: feedapi_node/mappers/feedapi_node_mapper.inc
===================================================================
RCS file: feedapi_node/mappers/feedapi_node_mapper.inc
diff -N feedapi_node/mappers/feedapi_node_mapper.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ feedapi_node/mappers/feedapi_node_mapper.inc	6 Aug 2009 08:21:26 -0000
@@ -0,0 +1,42 @@
+<?php
+// $Id$
+
+/**
+ * Implementation of hook_feedapi_mapper().
+ */
+function feedapi_node_feedapi_mapper($op, $feed_node, $node = NULL, $feed_element = array(), $field_name = '', $sub_field = '') {
+
+  // Only map nodes.
+  if (!$node_type = feedapi_mapper_get_item_node_type($feed_node)) {
+    return;
+  }
+
+  if ($op == 'describe') {
+    return t('Maps a feed element to item URL and GUID.');
+  }
+  else if ($op == 'list') {
+    return array('guid' => t('GUID'), 'original_url' => t('URL'));
+  }
+  else if ($op == 'map') {
+    if (in_array($field_name, array('guid', 'original_url'))) {
+      if (!empty($feed_element)) {
+        $node->feedapi->feed_item->options->{$field_name} = $feed_element;
+      }
+      return $node;
+    }
+  }
+  else if ($op == 'unique') {
+    $nids = array();
+    // Currently only does site-wide deduping
+    $field_name = $field_name == 'original_url' ? 'url' : $field_name;
+    $result = db_query('SELECT nid FROM {feedapi_node_item} WHERE %s = \'%s\'', $field_name, $feed_element);
+    while ($nid = db_result($result)) {
+      $nids[] = $nid;
+    }
+    return $nids;
+  }
+  else if ($op == 'unique supported') {
+    // Both fields support unique-ness
+    return TRUE;
+  }
+}
