|
|
@@ -335,6 +335,8 @@ class FreshRSS_Feed extends Minz_Model {
|
|
|
|
|
|
public function loadEntries($feed) {
|
|
|
$entries = array();
|
|
|
+ $guids = array();
|
|
|
+ $hasUniqueGuids = true;
|
|
|
|
|
|
foreach ($feed->get_items() as $item) {
|
|
|
$title = html_only_entity_decode(strip_tags($item->get_title()));
|
|
|
@@ -375,9 +377,13 @@ class FreshRSS_Feed extends Minz_Model {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ $guid = $item->get_id(false, false);
|
|
|
+ $hasUniqueGuids &= empty($guids['_' . $guid]);
|
|
|
+ $guids['_' . $guid] = true;
|
|
|
+
|
|
|
$entry = new FreshRSS_Entry(
|
|
|
$this->id(),
|
|
|
- $item->get_id(false, false),
|
|
|
+ $guid,
|
|
|
$title === null ? '' : $title,
|
|
|
$author === null ? '' : html_only_entity_decode(strip_tags($author->name == null ? $author->email : $author->name)),
|
|
|
$content === null ? '' : $content,
|
|
|
@@ -392,6 +398,23 @@ class FreshRSS_Feed extends Minz_Model {
|
|
|
unset($item);
|
|
|
}
|
|
|
|
|
|
+ $hasBadGuids = $this->attributes('hasBadGuids');
|
|
|
+ if ($hasBadGuids != !$hasUniqueGuids) {
|
|
|
+ $hasBadGuids = !$hasUniqueGuids;
|
|
|
+ if ($hasBadGuids) {
|
|
|
+ Minz_Log::warning('Feed has invalid GUIDs: ' . $this->url);
|
|
|
+ } else {
|
|
|
+ Minz_Log::warning('Feed has valid GUIDs again: ' . $this->url);
|
|
|
+ }
|
|
|
+ $feedDAO = FreshRSS_Factory::createFeedDao();
|
|
|
+ $feedDAO->updateFeedAttribute($this, 'hasBadGuids', $hasBadGuids);
|
|
|
+ }
|
|
|
+ if (!$hasUniqueGuids) {
|
|
|
+ foreach ($entries as $entry) {
|
|
|
+ $entry->_guid('');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$this->entries = $entries;
|
|
|
}
|
|
|
|