X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=gavinc%2Fentries_timestamp;h=c8f8bb14955084aefc4f035aca09dcd39f19d855;hb=9446c25f45057b9feb2233d9f7774dbdbda5c39b;hp=e32f0c5ce6ddf9ca06b8727d7075d18f8cf3619a;hpb=b43d3408229e74112b85eac8ec1bf256daaf32fc;p=matthijs%2Fupstream%2Fblosxom-plugins.git diff --git a/gavinc/entries_timestamp b/gavinc/entries_timestamp index e32f0c5..c8f8bb1 100644 --- a/gavinc/entries_timestamp +++ b/gavinc/entries_timestamp @@ -1,6 +1,6 @@ # Blosxom Plugin: entries_timestamp # Author(s): Gavin Carr -# Version: 0.001000 +# Version: 0.002000 # Documentation: See the bottom of this file or type: perldoc entries_timestamp package entries_timestamp; @@ -12,30 +12,34 @@ use Data::Dumper; use Time::Local; use CGI (); -#use Blosxom::Debug debug_level => 1; +# Uncomment next line to enable debug output (don't uncomment debug() lines) +#use Blosxom::Debug debug_level => 2; # --- Configurable variables ----- +my %config = (); + # Where should I store the entries_timestamp index file? # IMO timestamps are metadata rather than state, but you may well not care. -my $meta_dir = "$blosxom::datadir/../meta"; -#my $meta_dir = $blosxom::plugin_state_dir; +$config{meta_dir} = "$blosxom::datadir/../meta"; +#$config{meta_dir} = $blosxom::plugin_state_dir; # What name should my entries_timestamp index file be called? # If you want to migrate from entries_index, you can just use the original # entries_index .entries_index.index file, or or just copy/rename it. -my $entries_index = 'entries_timestamp.index'; -#my $entries_index = '.entries_index.index'; +$config{entries_index} = 'entries_timestamp.index'; +#$config{entries_index} = '.entries_index.index'; # Reindexing password. If entries_timestamp finds a '?reindex=$reindex_password' # parameter it will check and resync machine timestamps to the human versions -my $reindex_password = 'abracad'; # CHANGEME! +$config{reindex_password} = 'abracad'; # CHANGEME! # -------------------------------- +# __END_CONFIG__ my $q = CGI->new; -use vars qw($VAR1 $VAR2 $VAR3); +use vars qw($TS_MACHINE $TS_HUMAN $SYMLINKS $VAR1 $VAR2 $VAR3); sub start { 1 } @@ -43,20 +47,32 @@ sub entries { return sub { my(%indexes, %files_ts, %files_ts_str, %files_symlinks); - # Read $entries_index - if ( open ENTRIES, "$meta_dir/$entries_index" ) { + # Read $config{entries_index} + if ( open ENTRIES, "$config{meta_dir}/$config{entries_index}" ) { my $index = join '', ; close ENTRIES; - if ( $index =~ m/\$VAR1 = \{/ ) { + if ( $index =~ m/\$(TS_\w+|VAR1) = \{/ ) { eval $index; if ( $@ ) { - warn "(entries_timestamp) eval of $entries_index failed: $@"; + warn "(entries_timestamp) eval of $config{entries_index} failed: $@"; return; } else { - %files_ts = %$VAR1; - %files_ts_str = %$VAR2 if keys %$VAR2; - %files_symlinks = %$VAR3 if keys %$VAR3; + if ($TS_MACHINE && keys %$TS_MACHINE) { + %files_ts = %$TS_MACHINE; + } elsif ($VAR1 && keys %$VAR1) { + %files_ts = %$VAR1; + } + if ($TS_HUMAN && keys %$TS_HUMAN) { + %files_ts_str = %$TS_HUMAN; + } elsif ($VAR2 && keys %$VAR2) { + %files_ts_str = %$VAR2; + } + if ($SYMLINKS && keys %$SYMLINKS) { + %files_symlinks = %$SYMLINKS; + } elsif ($VAR3 && keys %$VAR3) { + %files_symlinks = %$VAR3; + } } } } @@ -136,7 +152,7 @@ sub entries { # If asked to reindex, check and sync machine timestamps to the human ones if ( my $reindex = $q->param('reindex') ) { - if ( $reindex eq $reindex_password ) { + if ( $reindex eq $config{reindex_password} ) { if ( my $reindex_ts = parse_ts( $files_ts_str{$File::Find::name} )) { if ($reindex_ts != $files_ts{$File::Find::name}) { # debug(1, "reindex: updating timestamp on '$File::Find::name'\n"); @@ -174,13 +190,14 @@ sub entries { # If updates, save back to index if ( $index_mods ) { - # debug(1, "index_mods $index_mods, saving \%files to $meta_dir/$entries_index"); - if ( open ENTRIES, "> $meta_dir/$entries_index" ) { - print ENTRIES Dumper \%files_ts, \%files_ts_str, \%files_symlinks; + # debug(1, "index_mods $index_mods, saving \%files to $config{meta_dir}/$config{entries_index}"); + if ( open ENTRIES, "> $config{meta_dir}/$config{entries_index}" ) { + print ENTRIES Data::Dumper->Dump([ \%files_ts_str, \%files_ts, \%files_symlinks ], + [ qw(TS_HUMAN TS_MACHINE SYMLINKS) ] ); close ENTRIES; } else { - warn "(entries_timestamp) couldn't open $meta_dir/$entries_index for writing: $!\n"; + warn "(entries_timestamp) couldn't open $config{meta_dir}/$config{entries_index} for writing: $!\n"; } }