]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/aggregate.pm
* Use POST for poll to avoid some robots.
[git.ikiwiki.info.git] / IkiWiki / Plugin / aggregate.pm
index 973f7a4ca56c4355f47c3eb6c340d82983b077b8..2a3f36fcebd07be205075b81e57c49737ce35d74 100644 (file)
@@ -9,6 +9,7 @@ use HTML::Entities;
 use HTML::Parser;
 use HTML::Tagset;
 use URI;
 use HTML::Parser;
 use HTML::Tagset;
 use URI;
+use open qw{:utf8 :std};
 
 my %feeds;
 my %guids;
 
 my %feeds;
 my %guids;
@@ -24,6 +25,7 @@ sub import { #{{{
 
 sub getopt () { #{{{
         eval q{use Getopt::Long};
 
 sub getopt () { #{{{
         eval q{use Getopt::Long};
+       error($@) if $@;
         Getopt::Long::Configure('pass_through');
         GetOptions("aggregate" => \$config{aggregate});
 } #}}}
         Getopt::Long::Configure('pass_through');
         GetOptions("aggregate" => \$config{aggregate});
 } #}}}
@@ -149,7 +151,7 @@ sub loadstate () { #{{{
 
 sub savestate () { #{{{
        eval q{use HTML::Entities};
 
 sub savestate () { #{{{
        eval q{use HTML::Entities};
-       die $@ if $@;
+       error($@) if $@;
        open (OUT, ">$config{wikistatedir}/aggregate" ||
                die "$config{wikistatedir}/aggregate: $!");
        foreach my $data (values %feeds, values %guids) {
        open (OUT, ">$config{wikistatedir}/aggregate" ||
                die "$config{wikistatedir}/aggregate: $!");
        foreach my $data (values %feeds, values %guids) {
@@ -218,9 +220,9 @@ sub expire () { #{{{
 
 sub aggregate () { #{{{
        eval q{use XML::Feed};
 
 sub aggregate () { #{{{
        eval q{use XML::Feed};
-       die $@ if $@;
+       error($@) if $@;
        eval q{use HTML::Entities};
        eval q{use HTML::Entities};
-       die $@ if $@;
+       error($@) if $@;
 
        foreach my $feed (values %feeds) {
                next unless $config{rebuild} || 
 
        foreach my $feed (values %feeds) {
                next unless $config{rebuild} || 
@@ -281,6 +283,7 @@ sub add_page (@) { #{{{
        if (exists $guids{$params{guid}}) {
                # updating an existing post
                $guid=$guids{$params{guid}};
        if (exists $guids{$params{guid}}) {
                # updating an existing post
                $guid=$guids{$params{guid}};
+               return if $guid->{expired};
        }
        else {
                # new post
        }
        else {
                # new post
@@ -314,6 +317,7 @@ sub add_page (@) { #{{{
        # to avoid unneccessary rebuilding. The mtime from rss cannot be
        # trusted; let's use a digest.
        eval q{use Digest::MD5 'md5_hex'};
        # to avoid unneccessary rebuilding. The mtime from rss cannot be
        # trusted; let's use a digest.
        eval q{use Digest::MD5 'md5_hex'};
+       error($@) if $@;
        require Encode;
        my $digest=md5_hex(Encode::encode_utf8($params{content}));
        return unless ! exists $guid->{md5} || $guid->{md5} ne $digest || $config{rebuild};
        require Encode;
        my $digest=md5_hex(Encode::encode_utf8($params{content}));
        return unless ! exists $guid->{md5} || $guid->{md5} ne $digest || $config{rebuild};