@ -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;
}