From d657c7f0b11e775c44eaf701651e311d4a5979e3 Mon Sep 17 00:00:00 2001
From: Alex Barth <alex_b@53995.no-reply.drupal.org>
Date: Sat, 19 Jun 2010 19:40:43 +0000
Subject: [PATCH] #759302 rjb, smartinm, et. al: Fix user warning: Duplicate
 entry.

---
 CHANGELOG.txt               | 1 +
 includes/FeedsImporter.inc  | 8 ++++----
 includes/FeedsScheduler.inc | 6 ++++--
 includes/FeedsSource.inc    | 8 ++++----
 4 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 69cbb175..ae301b98 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -3,6 +3,7 @@
 Feeds 6.x 1.0 XXXXXXXXXXXXXXXXXXXX
 ----------------------------------
 
+- #759302 rjb, smartinm, et. al: Fix user warning: Duplicate entry.
 - #819876 alex_b: Fix field 'url' and 'guid' don't have default values.
 - #623444 mongolito404, pvhee, pdrake, servantleader, alex_b et. al.: Mapper for
   link module.
diff --git a/includes/FeedsImporter.inc b/includes/FeedsImporter.inc
index 2e06e40e..867e57cc 100644
--- a/includes/FeedsImporter.inc
+++ b/includes/FeedsImporter.inc
@@ -134,10 +134,10 @@ class FeedsImporter extends FeedsConfigurable {
     $save = new stdClass();
     $save->id = $this->id;
     $save->config = $this->getConfig();
-    // Make sure a source record is present at all time, try to update first,
-    // then insert.
-    drupal_write_record('feeds_importer', $save, 'id');
-    if (!db_affected_rows()) {
+    if (db_result(db_query_range("SELECT 1 FROM {feeds_importer} WHERE id = '%s'", $this->id, 0, 1))) {
+      drupal_write_record('feeds_importer', $save, 'id');
+    }
+    else {
       drupal_write_record('feeds_importer', $save);
     }
     // Clear menu cache, changes to importer can change menu items.
diff --git a/includes/FeedsScheduler.inc b/includes/FeedsScheduler.inc
index 310e4030..70133691 100644
--- a/includes/FeedsScheduler.inc
+++ b/includes/FeedsScheduler.inc
@@ -137,8 +137,10 @@ class FeedsScheduler implements FeedsSchedulerInterface {
       'last_executed_time' => 0,
       'scheduled' => 0, // Means NOT scheduled at the moment.
     );
-    drupal_write_record('feeds_schedule', $save, array('id', 'callback', 'feed_nid'));
-    if (!db_affected_rows()) {
+    if (db_result(db_query_range("SELECT 1 FROM {feeds_schedule} WHERE id = '%s' AND callback = '%s' AND feed_nid = %d", $importer_id, $callback, $feed_nid, 0, 1))) {
+      drupal_write_record('feeds_schedule', $save, array('id', 'callback', 'feed_nid'));
+    }
+    else {
       drupal_write_record('feeds_schedule', $save);
     }
   }
diff --git a/includes/FeedsSource.inc b/includes/FeedsSource.inc
index a5ee9449..8f7b3dec 100644
--- a/includes/FeedsSource.inc
+++ b/includes/FeedsSource.inc
@@ -197,10 +197,10 @@ class FeedsSource extends FeedsConfigurable {
       'source' => $source,
       'batch' => isset($this->batch) ? $this->batch : FALSE,
     );
-    // Make sure a source record is present at all time, try to update first,
-    // then insert.
-    drupal_write_record('feeds_source', $object, array('id', 'feed_nid'));
-    if (!db_affected_rows()) {
+    if (db_result(db_query_range("SELECT 1 FROM {feeds_source} WHERE id = '%s' AND feed_nid = %d", $this->id, $this->feed_nid, 0, 1))) {
+      drupal_write_record('feeds_source', $object, array('id', 'feed_nid'));
+    }
+    else {
       drupal_write_record('feeds_source', $object);
     }
   }
-- 
GitLab