Missing time results in top position of feed items
| Project: | Aggregator Summary |
| Version: | 5.x-1.x-dev |
| Component: | Code |
| Category: | bug report |
| Priority: | minor |
| Assigned: | Unassigned |
| Status: | active |
There is a minor problem in the feed list. Within the feed module a time is calculated:
/*
** Try to resolve and parse the item's publication date. If no
** date is found, we use the current date instead.
*/
if ($item['PUBDATE']) $date = $item['PUBDATE']; // RSS 2.0
else if ($item['DC:DATE']) $date = $item['DC:DATE']; // Dublin core
else if ($item['DCTERMS:ISSUED']) $date = $item['DCTERMS:ISSUED']; // Dublin core
else if ($item['DCTERMS:CREATED']) $date = $item['DCTERMS:CREATED']; // Dublin core
else if ($item['DCTERMS:MODIFIED']) $date = $item['DCTERMS:MODIFIED']; // Dublin core
else if ($item['ISSUED']) $date = $item['ISSUED']; // Atom XML
else if ($item['CREATED']) $date = $item['CREATED']; // Atom XML
else if ($item['MODIFIED']) $date = $item['MODIFIED']; // Atom XML
else if ($item['PUBLISHED']) $date = $item['PUBLISHED']; // Atom XML
else if ($item['UPDATED']) $date = $item['UPDATED']; // Atom XML
else $date = 'now';
$timestamp = strtotime($date); // As of PHP 5.1.0, strtotime returns FALSE on failure instead of -1.
if ($timestamp <= 0) {
$timestamp = aggregator_parse_w3cdtf($date); // Returns FALSE on failure
if (!$timestamp) {
$timestamp = time(); // better than nothing
}
}
When a given timestamp is not found the items of these feeds will stay on top on the aggregator feed page.
Since a timestamp is submitted into the database table aggregator_item I would like to suggest to insert the current timestamp when inserting the item (when no time has been given). It could be that a time has been given in the edit argument where the item is stored but I'm not sure. Running this on a live server so it's not possible to test it there.
