Index: feedapi_node/feedapi_node.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi/feedapi_node/Attic/feedapi_node.module,v
retrieving revision 1.1.2.18.2.35
diff -u -p -r1.1.2.18.2.35 feedapi_node.module
--- feedapi_node/feedapi_node.module	2 Jul 2009 16:38:16 -0000	1.1.2.18.2.35
+++ feedapi_node/feedapi_node.module	6 Aug 2009 09:18:14 -0000
@@ -297,13 +297,17 @@ function _feedapi_node_save($feed_item, 
     $node->status = 1;
   }
   $feed_node = node_load($feed_nid);
-
-  $type = node_get_types('type', $node->type);
-  if ($type->has_title) {
-    $node->title = $feed_item->title;
+  if (function_exists('feedapi_mapper_map')) {
+    $node = feedapi_mapper_map($feed_node, $feed_item, $node);
   }
-  if ($type->has_body) {
-    $node->body = $feed_item->description;
+  else {
+    $type = node_get_types('type', $node->type);
+    if ($type->has_title) {
+      $node->title = $feed_item->title;
+    }
+    if ($type->has_body) {
+      $node->body = $feed_item->description;
+    }
   }
   $node->format = isset($settings['input_format']) ? $settings['input_format'] : FILTER_FORMAT_DEFAULT;
   $node->teaser = node_teaser($feed_item->description);
@@ -409,6 +413,23 @@ function _feedapi_node_purge($feed) {
  *  TRUE if the item is new, FALSE if the item is a duplicated one
  */
 function _feedapi_node_unique($feed_item, $feed_nid, $settings) {
+  // Let the mapper hijack the decision
+  if (function_exists('feedapi_mapper_unique')) {
+    $feed_node = node_load($feed_nid);
+    $dup_items = feedapi_mapper_unique($feed_node, $feed_item);
+    if (empty($dup_items)) {
+      return TRUE;
+    }
+    elseif ($settings['x_dedupe']) {
+      foreach ($dup_items as $id) {
+        $feed_item->feedapi_node->duplicates[$id] = $id;
+      }
+      return array_pop($dup_items);
+    }
+    else {
+      return array_pop($dup_items);
+    }
+  }
   if (empty($feed_item->options->original_url)) {
     unset($feed_item->options->original_url);
   }
