#!/usr/bin/perl
#
#clist.cgi
#ジャンル別アンケートへのリンクCGI
require './jcodeLE.pl';
require './prei.cgi';
$| = 1;
&winit;&noaxschk;
&init;&decode;&jikan;
&html;
exit;
##################################################
sub init{
$title = 'アンケートカテゴリ一覧';
$display = 4; #箱の最大表示数
#ディレクトリとジャンル名を書く。ディレクトリが無い場合は単に無視される。
$catename{'.'} = '総合';
$catename{'comic'} = '漫画';
$catename{'computer'} = 'コンピュータ';
$catename{'game'} = 'ゲーム';
$catename{'movie'} = '映画';
$catename{'music'} = '音楽';
$catename{'military'} = '軍事';
$catename{'news'} = 'ニュース';
$catename{'sport'} = 'スポーツ';
}#init END
##################################################
sub html {
my($bbslink);
$bbslink = "[$bbsname]" if($bbscgi);
print "Content-type: text/html\n\n";
print <<"_HTML_";
$title
$metacode
$bodys
$title
[インデックス]
$bbslink
$original
_HTML_
}#html END
##################################################
sub listing{
my(@readlist,@ctlist,@roomlist,%dirday,%fileday);
my($ctdir,$filedata,$datedata,$total,$count,$dir,$files,$boxes,$file,$f,$room,$title,$chkkey,$ddata);
my($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst);
opendir(DIR,".");
@readlist = grep(/\w+/, readdir(DIR));
closedir(DIR);
push(@readlist,".");
foreach $ctdir (@readlist) {
$filedata = -M "./$ctdir/$logdir";
if($hotlist){ #更新日付がhotlist以内のものをピックアップ
push(@ctlist,$ctdir) if ($filedata < $hotlist);
}else{
push(@ctlist,$ctdir);
}
$dirday{$ctdir} = $filedata;
}
#@ctlist = sort { $dirday{$a} <=> $dirday{$b} } @ctlist;
print <<"_HTML_";
${date}現在の各ジャンルのリスト
日付、時刻は最終書き込み時です。
先頭の◇をクリックすると新しくブラウザが開くかも。
_HTML_
print "\n";
foreach $ctdir(@ctlist) {
next if($catename{$ctdir} eq ''); #カテゴリに含まれてなければ無視
$dir = "./$ctdir/$logdir";
next if(!(-d $dir)); #ディレクトリでなければ無視
opendir(DIR, $dir);
@files = grep(/log\.\d+\.cgi/, readdir(DIR));
close(DB);
$boxes = @files;
@roomlist =();
if($boxes > 0){
$filedata = 1000;
foreach $room (@files){
$room =~ s/log\.(\d+)\.cgi/$1/;
$f = -M "./$logdir/log.$room.cgi";
$fileday{$room} = $f;
push(@roomlist,$room);
$filedata = $f if($f < $filedata); #最新の箱を探す
}
}else{
$filedata = $dirday{$ctdir}; #箱が無ければディレクトリの更新日時を使う
}
@roomlist = sort { $fileday{$a} <=> $fileday{$b} } @roomlist; #更新順
($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($times-$filedata*24*60*60);
$sec = "0$sec" if ($sec < 10);$min = "0$min" if ($min < 10);$month++;
if($filedata < 0.5 ){
$dates = "$month/$mday $hour時$min分<\/FONT>";
}else{
$dates = "$month/$mday $hour時$min分";
}
print "- \n";
$link = "./$ctdir/$cgi_list";
print "◇ \n";
print "$catename{$ctdir}";
print "$dates: $boxes箱
\n";
print "" if($boxes > 0);
foreach $room (@roomlist) {
last if($room eq '');
$file = "./$dir/log.$room.cgi";
open(DB, $file);
@lines = ;
close(DB);
$set=shift(@lines);
($title,$chkkey,$ddata) = split(/:#/,$set); #list.cgiと同じ
$title = unpack("A80",$title);
$title = '?' if($title eq '');
$filedata = -M "./$logdir/log.$room.cgi";
$datedata = $ddata - $filedata;
$hatusuu = @lines;
($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($times-$filedata*24*60*60);
$sec = "0$sec" if ($sec < 10);$min = "0$min" if ($min < 10);$month++;
if($datedata < 1){
$dates = "$month/$mday $hour時$min分<\/FONT>";
}else{
if($filedata < 0.5 ){
$dates = "$month/$mday $hour時$min分<\/FONT>";
}else{
$dates = "$month/$mday $hour時$min分";
}
}
print "- \n";
$datedata = int($datedata*100)/100;
$link = "./$ctdir/$cgi_log?room=$room";
# print "◇ \n";
print "$title";
print "($room)$dates: $hatusuu投票: 残り$datedata日
\n";
}
print "
" if($boxes > 0);
}#foreach
print "
\n";
}#listing END
##################################################
sub decode {
my($brnum);
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else{
$buffer = $ENV{'QUERY_STRING'};
}
&decodearg($buffer);
$page = $FORM{'page'};$page = int($page);
$hotlist = $FORM{'h'};$hotlist = '0' if($hotlist eq '');
$rev = $FORM{'r'};$rev = 'on' if($rev eq '');
$lmax = $FORM{'lm'};$lmax = $limax if($lmax < 1);$lmax = int($lmax);
}#decode END
##################################################
__END__