#!/usr/bin/perl -wT # # Written By, Justin W. Gramm # 2008-06-19 # rev 1.0 # http://www.grinner.org/open_source # # This file is free to use in compliance with the Mozilla # Public License v1.1. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # use strict; # Column1 Column2 Header my @bgc = ("#FFCCCC", "#FFCCCC", "#FF99CC"); my $hover = "#FF9999"; my $new_1 = "NEW!"; my $new_2 = "NEW!"; my $new_3 = "NEW!"; my $new_4 = "NEW"; my $new_5 = "NEW"; my $sort_by = $ARGV[0] || ""; my $order_by = $ARGV[1] || ""; if(!$sort_by) { $sort_by = "name"; } if(!$order_by) { $order_by = "asc"; } my $link_set = "?sort_by=$sort_by\&order_by=$order_by"; my %file_name; my %file_size; my %file_date; my %dir_name; my %dir_date; opendir MYDIR, "."; my @files = readdir MYDIR; closedir MYDIR; my $count = 0; my $dcount = 0; foreach my $file (@files) { my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($file); if(-d $file && $file ne ".") { $dir_name{$dcount} = $file . "/"; $dir_date{$dcount} = $mtime; $dcount++; next; } if($file =~ /^\./ || $file eq "index.php" || $file eq "dir_list.cgi") { next; } $file_name{$count} = $file; $file_size{$count} = $size; $file_date{$count} = $mtime; $count++; } my @sorted; my @dsorted; if($sort_by eq "name" && $order_by eq "asc"){ @sorted = sort ({lc $file_name{$a} cmp lc $file_name{$b}} keys (%file_name)); }elsif($sort_by eq "name" && $order_by eq "desc"){ @sorted = sort ({lc $file_name{$b} cmp lc $file_name{$a}} keys (%file_name)); }elsif($sort_by eq "date" && $order_by eq "desc"){ @sorted = sort ({$file_date{$b} <=> $file_date{$a}} keys (%file_date)); }elsif($sort_by eq "date" && $order_by eq "asc"){ @sorted = sort ({$file_date{$a} <=> $file_date{$b}} keys (%file_date)); }elsif($sort_by eq "size" && $order_by eq "asc"){ @sorted = sort ({$file_size{$a} <=> $file_size{$b}} keys (%file_size)); }elsif($sort_by eq "size" && $order_by eq "desc"){ @sorted = sort ({$file_size{$b} <=> $file_size{$a}} keys (%file_size)); } @dsorted = sort ({lc $dir_name{$a} cmp lc $dir_name{$b}} keys (%dir_name)); my $cc = 0; print ""; print ""; print ""; print ""; print ""; print ""; print "\n"; foreach my $value (@dsorted) { my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime $dir_date{$value}; $mon++; $year += 1900; $mon = (length($mon) == 1) ? "0" . $mon : $mon; $mday = (length($mday) == 1) ? "0" . $mday : $mday; $hour = (length($hour) == 1) ? "0" . $hour : $hour; $min = (length($min) == 1) ? "0" . $min : $min; $sec = (length($sec) == 1) ? "0" . $sec : $sec; my $ftime = $year . "-" . $mon . "-" . $mday; $ftime .= " $hour:$min:$sec"; my $age = time - $dir_date{$value}; my $new = ""; if($age <= 86400 && $dir_name{$value} ne "../") { $new = $new_1; }elsif($age <= 604800 && $dir_name{$value} ne "../"){ $new = $new_2; }elsif($age <= 1209600 && $dir_name{$value} ne "../"){ $new = $new_3; }elsif($age <= 1814400 && $dir_name{$value} ne "../"){ $new = $new_4; }elsif($age <= 2419200 && $dir_name{$value} ne "../"){ $new = $new_5; } print ""; print "" . "" . "" . "" . "\n"; $cc++; $cc = ($cc == 2) ? 0 : $cc; } foreach my $value (@sorted) { my $size = int(($file_size{$value} / 1024) + .5); $size .= " KB"; my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime $file_date{$value}; $mon++; $year += 1900; $mon = (length($mon) == 1) ? "0" . $mon : $mon; $mday = (length($mday) == 1) ? "0" . $mday : $mday; $hour = (length($hour) == 1) ? "0" . $hour : $hour; $min = (length($min) == 1) ? "0" . $min : $min; $sec = (length($sec) == 1) ? "0" . $sec : $sec; my $ftime = $year . "-" . $mon . "-" . $mday; $ftime .= " $hour:$min:$sec"; my $age = time - $file_date{$value}; my $new = ""; if($age <= 86400) { $new = $new_1; }elsif($age <= 604800){ $new = $new_2; }elsif($age <= 1209600){ $new = $new_3; }elsif($age <= 1814400){ $new = $new_4; }elsif($age <= 2419200){ $new = $new_5; } print ""; print "" . "" . "" . "" . "\n"; $cc++; $cc = ($cc == 2) ? 0 : $cc; } exit;
FilenameSizeDate  
 " .
          "$dir_name{$value} ".
          "
 - 
 $ftime 
  $new  
$file_name{$value}
" . "" . "" . " " . "
" . "
 $size 
 $ftime 
  $new