X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/12c5786df4e74c143f24398b8d0028000b61daba..093e8154408d9a7517a0df1768f44ad581c70be2:/IkiWiki/Plugin/aggregate.pm diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 673668c0e..07c557bcd 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -40,6 +40,10 @@ sub getopt () { #{{{ sub getsetup () { #{{{ return + plugin => { + safe => 1, + rebuild => undef, + }, aggregateinternal => { type => "boolean", example => 0, @@ -416,11 +420,11 @@ sub expire () { #{{{ 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}) { - my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24; + my $days_old = (time - ($IkiWiki::pagectime{$item->{page}} || 0) / 60 / 60 / 24; if ($days_old > $feed->{expireage}) { debug(sprintf(gettext("expiring %s (%s days old)"), $item->{page}, int($days_old))); @@ -516,12 +520,18 @@ sub aggregate (@) { #{{{ } foreach my $entry ($f->entries) { + my $content=$content=$entry->content->body; + # atom feeds may have no content, only a summary + if (! defined $content && ref $entry->summary) { + $content=$entry->summary->body; + } + 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 : "", guid => defined $entry->id ? $entry->id : time."_".$feed->{name}, ctime => $entry->issued ? ($entry->issued->epoch || time) : time, ); @@ -608,10 +618,13 @@ sub add_page (@) { #{{{ writefile(htmlfn($guid->{page}), $config{srcdir}, $template->output); - # Set the mtime, this lets the build process get the right creation - # time on record for the new page. - utime $mtime, $mtime, pagefile($guid->{page}) - if defined $mtime && $mtime <= time; + if (defined $mtime && $mtime <= time) { + # Set the mtime, this lets the build process get the right + # creation time on record for the new page. + utime $mtime, $mtime, pagefile($guid->{page}); + # Store it in pagectime for expiry code to use also. + $IkiWiki::pagectime{$guid->{page}}=$mtime; + } } #}}} sub htmlescape ($) { #{{{