aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers/importExportController.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-10-15 01:27:39 +0200
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-10-15 01:27:39 +0200
commita0127d980c37b69c48db6982733fac60eaf8601c (patch)
tree9610429cc967d70c1fb8ae2387f5781f8b0c72ef /app/Controllers/importExportController.php
parent7ec73a91bc2f1c786ada10441db37f42a6b452f4 (diff)
Fix bug JSON import duplicates
https://github.com/FreshRSS/FreshRSS/issues/1312
Diffstat (limited to 'app/Controllers/importExportController.php')
-rw-r--r--app/Controllers/importExportController.php14
1 files changed, 13 insertions, 1 deletions
diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php
index 9dfc479f0..c2e68f465 100644
--- a/app/Controllers/importExportController.php
+++ b/app/Controllers/importExportController.php
@@ -360,6 +360,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
}
}
+ $newGuids = array();
+ foreach ($article_object['items'] as $item) {
+ $newGuids[] = $item['id'];
+ }
+ // For this feed, check existing GUIDs already in database.
+ $existingHashForGuids = $entryDAO->listHashForFeedGuids($feed->id(), $newGuids);
+ unset($newGuids);
+
// Then, articles are imported.
$this->entryDAO->beginTransaction();
foreach ($article_object['items'] as $item) {
@@ -395,7 +403,11 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
}
$values = $entry->toArray();
- $id = $this->entryDAO->addEntry($values);
+ if (isset($existingHashForGuids[$entry->guid()])) {
+ $id = $this->entryDAO->updateEntry($values);
+ } else {
+ $id = $this->entryDAO->addEntry($values);
+ }
if (!$error && ($id === false)) {
$error = true;