# Blosxom Plugin: recentwritebacks_tree # Author(s): typester # Version: 1.0 # Blosxom Home/Docs/Licensing: http://www.blosxom.com/ package recentwritebacks_tree; # --- Configurable variables ----------- my $data_dir = $blosxom::recentwritebacks_tree_data_dir; my $db_dir = $blosxom::recentwritebacks_tree_db_dir; my $wb_extension = $blosxom::recentwritebacks_tree_wb_extension; my $db_extension = $blosxom::recentwritebacks_tree_db_extension; my $cm_entry = $blosxom::recentwritebacks_tree_cm_entry; my $cm_num = $blosxom::recentwritebacks_tree_cm_num; my $tb_entry = $blosxom::recentwritebacks_tree_tb_entry; my $tb_num = $blosxom::recentwritebacks_tree_tb_num; # -------------------------------------- use strict; use FileHandle; use vars qw/$cm_list $tb_list @wb_list $cm_entry_count $tb_entry_count/; my $fh = new FileHandle; sub start { if ($blosxom::path_info =~ /(\.)|(.+)/ or $blosxom::path_info_yr) { $cm_entry_count = 0; $tb_entry_count = 0; return 0; } @wb_list = &createlist($data_dir); $cm_list = &getwritebacks("comment", $cm_entry, $cm_num, \$cm_entry_count); $tb_list = &getwritebacks("excerpt", $tb_entry, $tb_num, \$tb_entry_count); return 1; } sub getwritebacks { my ($mode, $entrynum, $num, $entry) = (@_); my $count = 0; $$entry = 0; my @tmp = (); my $ret = "\n"; return $ret; } sub gettitle { my $file = $_[0]; my $ret = ''; $file =~ s/$data_dir/$db_dir/; $file =~ s/wb$/txt/; if($fh->open($file)) { $ret = <$fh>; $fh->close; } chomp($ret); my $url = $blosxom::url; $file =~ s/$db_dir/$url/; $file =~ s/$blosxom::file_extension/$blosxom::default_flavour/; $ret = "$ret"; return $ret; } sub getdates { my @files = @_; my @dates = (); foreach my $file (@files) { my $mtime = (stat($file))[9]; push(@dates, $mtime); } return @dates; } sub getfiles { my $dir = $_[0]; my @files = (); my @ret = (); $dir .= "/" if($dir =~ /[^\/]$/); if(opendir(DIR, $dir)) { @files = readdir(DIR); closedir(DIR); } foreach my $file (@files) { next if($file eq '.' or $file eq '..'); if(-d "$dir$file" and $file ne '') { my @subdir = &getfiles("$dir$file"); @ret = (@ret, @subdir); }else { push(@ret, "$dir$file"); } } return @ret; } sub createlist { my @files = &getfiles($_[0]); my @dates = &getdates(@files); my %hash = {}; my @ret = (); my $i = 0; foreach my $date (@dates) { $hash{$date} = $files[$i]; $i++; } @dates = sort {$b <=> $a} @dates; foreach my $date (@dates) { push(@ret, $hash{$date}); } return @ret; } 1;