Просмотр исходного кода

Fix bug JSON import duplicates

https://github.com/FreshRSS/FreshRSS/issues/1312
Alexandre Alapetite 9 лет назад
Родитель
Сommit
a0127d980c
1 измененных файлов с 13 добавлено и 1 удалено
  1. 13 1
      app/Controllers/importExportController.php

+ 13 - 1
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;