# Blosxom Plugin: writeback_update
# Author: iso_archiver
# Version: 2006.11.15
# Blosxom Home/Docs/Licensing: http://www.blosxom.com/
# override modified_time.
package writeback_update;
use strict;
# --- Configurable variables -----------
my $datadir = "$blosxom::plugin_state_dir/writeback/";
# --------------------------------------
use CGI qw/:standard/;
sub start {
return param('update') ? 1 : 0;
}
sub head {
my ($wished_time, $modified_time);
my @file_names = &getfiles($datadir);
foreach my $file (@file_names) {
if (open(FILE, $file)) {
foreach my $line (reverse()) {
if ($line =~ /date: (\d+)/) {
$wished_time = $1;
last;
}
}
close(FILE);
}
$modified_time = (stat($file))[9];
next if $wished_time == $modified_time;
utime(time, $wished_time, $file);
}
return 1;
}
sub getfiles {
my $dir = $_[0];
my @files = ();
my @file_names = ();
$dir .= "/" if ($dir =~ /[^\/]$/);
if (opendir(DIR, $dir)) {
@files = readdir(DIR);
closedir(DIR);
}
foreach my $file (@files) {
next if $file =~ /\.+$/;
if (-d "$dir$file") {
my @subdir = &getfiles("$dir$file");
@file_names = (@file_names, @subdir);
} else {
push(@file_names, "$dir$file");
}
}
return @file_names;
}
1;