]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/aggregate.pm
round days old message
[git.ikiwiki.info.git] / IkiWiki / Plugin / aggregate.pm
index 0869d6d8fdbe5da54e1a4fa1fa071df70346b3bd..503f23ae49e2206e30341fdc2c44c4f2333c3228 100644 (file)
@@ -51,13 +51,14 @@ sub checkconfig () { #{{{
 
 sub needsbuild (@) { #{{{
        my $needsbuild=shift;
+       
+       loadstate(); # if not already loaded
 
-       foreach my $page (keys %pagestate) {
-               if (grep { $_ eq $pagesources{$page} } @$needsbuild) {
-                       loadstate(); # if not already loaded
+       foreach my $feed (values %feeds) {
+               if (grep { $_ eq $pagesources{$feed->{sourcepage}} } @$needsbuild) {
                        # Mark all feeds originating on this page as removable;
                        # preprocess will unmark those that still exist.
-                       remove_feeds($page);
+                       remove_feeds($feed->{sourcepage});
                }
        }
 } # }}}
@@ -167,8 +168,6 @@ sub savestate () { #{{{
        eval q{use HTML::Entities};
        error($@) if $@;
        my $newfile="$config{wikistatedir}/aggregate.new";
-       # TODO: This cleanup function could use improvement. Any newly
-       # aggregated files are left behind unrecorded, and should be deleted.
        my $cleanup = sub { unlink($newfile) };
        open (OUT, ">$newfile") || error("open $newfile: $!", $cleanup);
        foreach my $data (values %feeds, values %guids) {
@@ -181,7 +180,8 @@ sub savestate () { #{{{
                                }
                        }
                        else {
-                               unlink pagefile($data->{page});
+                               unlink pagefile($data->{page})
+                                       if exists $data->{page};
                        }
                        next;
                }
@@ -229,7 +229,7 @@ sub expire () { #{{{
                                my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
                                if ($days_old > $feed->{expireage}) {
                                        debug(sprintf(gettext("expiring %s (%s days old)"),
-                                               $item->{page}, $days_old));
+                                               $item->{page}, int($days_old)));
                                        $item->{expired}=1;
                                }
                        }