summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/aggregate.pm15
-rw-r--r--debian/changelog4
2 files changed, 11 insertions, 8 deletions
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index c1421f246..f47dc58b3 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -420,10 +420,10 @@ sub expire () { #{{{
next unless $feed->{expireage} || $feed->{expirecount};
my $count=0;
my %seen;
- foreach my $item (sort { ($IkiWiki::pagectime{$b->{page}}||0) <=> ($IkiWiki::pagectime{$a->{page}}||0) }
+ foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
grep { exists $_->{page} && $_->{feed} eq $feed->{name} }
values %guids) {
- if ($feed->{expireage} && $IkiWiki::pagectime{$_->{page}}) {
+ if ($feed->{expireage}) {
my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) {
debug(sprintf(gettext("expiring %s (%s days old)"),
@@ -618,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 ($) { #{{{
diff --git a/debian/changelog b/debian/changelog
index 5ad864c13..bf44d9851 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,7 @@
ikiwiki (2.65) UNRELEASED; urgency=low
- * aggregate: Allow expirecount to work on the first pass. (expireage still
- needs to wait for the pages to be rendered though)
+ * aggregate: Expire excess or old items on the same pass that adds them,
+ not only on subsequent passes.
* editdiff: Broken since 2.62 due to wrong syntax, now fixed.
* aggregate: Support atom feeds with only a summary element, and no content
elements.