sub getsetup () { #{{{
return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ },
aggregateinternal => {
type => "boolean",
- default => 0,
- description => "enable aggregation to internal pages",
+ example => 0,
+ description => "enable aggregation to internal pages?",
safe => 0, # enabling needs manual transition
rebuild => 0,
},
aggregate_webtrigger => {
type => "boolean",
- default => 0,
- description => "allow aggregation to be triggered via the web",
+ example => 0,
+ description => "allow aggregation to be triggered via the web?",
safe => 1,
rebuild => 0,
},
next unless $feed->{expireage} || $feed->{expirecount};
my $count=0;
my %seen;
- foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
- grep { exists $_->{page} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} }
+ foreach my $item (sort { ($IkiWiki::pagectime{$b->{page}}||0) <=> ($IkiWiki::pagectime{$a->{page}}||0) }
+ grep { exists $_->{page} && $_->{feed} eq $feed->{name} }
values %guids) {
- if ($feed->{expireage}) {
+ if ($feed->{expireage} && $IkiWiki::pagectime{$_->{page}}) {
my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) {
debug(sprintf(gettext("expiring %s (%s days old)"),
}
foreach my $entry ($f->entries) {
+ my $content=$content=$entry->content;
+ # atom feeds may have no content, only a summary
+ if (! defined $content) {
+ $content=$entry->summary;
+ }
+
add_page(
feed => $feed,
copyright => $f->copyright,
title => defined $entry->title ? decode_entities($entry->title) : "untitled",
link => $entry->link,
- content => defined $entry->content->body ? $entry->content->body : "",
+ content => defined $content ? $content->body : "",
guid => defined $entry->id ? $entry->id : time."_".$feed->{name},
ctime => $entry->issued ? ($entry->issued->epoch || time) : time,
);