Index: feedapi.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi/feedapi.module,v
retrieving revision 1.23.2.119.2.61
diff -u -r1.23.2.119.2.61 feedapi.module
--- feedapi.module	19 Jun 2009 15:46:28 -0000	1.23.2.119.2.61
+++ feedapi.module	25 Jun 2009 14:06:47 -0000
@@ -1176,6 +1176,25 @@
     $feed->hash = md5(serialize($feed->items));
   }
   
+  $items = $feed->items;
+  $items_to_keep = array();
+  
+  //Step 2.5: Delete nodes that have dropped off the feed
+  foreach ($items as $index => $item) {
+    foreach ($feed->processors as $processor) {
+      if ($settings['processors'][$processor]['drop_old']) {
+        $items_to_keep[] = module_invoke($processor, 'feedapi_item', 'unique', $item, $feed->nid, $settings['processors'][$processor]);
+      }      
+    }
+  }  
+  if ($items_to_keep) {
+    $result = db_query("SELECT * FROM {feedapi_node_item} fn JOIN {feedapi_node_item_feed} ff ON ff.feed_item_nid = fn.nid WHERE ff.feed_nid = %d AND fn.nid NOT IN (%s)", $feed->nid, implode(',', $items_to_keep));
+    while ($item = db_fetch_object($result)) {
+      // We callback feedapi for deleting
+      feedapi_expire_item($feed, $item);
+    }
+  }
+  
   // Step 3: See, whether feed has been modified.
   if ($feed === FALSE || $hash_old == $feed->hash) {
     // Updated the next_refresh_time field in any case.
@@ -1192,7 +1211,6 @@
   }
 
   // Step 4: Walk through the items and check duplicates, then save or update
-  $items = $feed->items;
   $updated = 0;
   $new = 0;
   $half_done = FALSE;

