#!/usr/local/bin/perl
# 掲示板2(左画面)
# id=bbs2_l.cgi
# update. 98.12.4
# 使用上の注意・・・漢字コードの変換が不完全ですので文字化けするおそれがあります。
# そのつもりでお使い下さい。
# 日本語コード変換ライブラリ(v2.0)の指定
# &ReadParse命令で、$in{ }の変数にフォーム入力データが格納される
require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse;
# 設置するURLを設定
$reload = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/bbs2_l.cgi';
$call = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/bbs2.cgi';
$file = "/dialup/chichibu/cgi-bin/bbs2.dat";
# データ確認デバッグモード(通常は$test=""、各画面で変数状態を見たいときは"on")
$test="";
# 消去日計算
($byo,$fun,$ji,$dd,$mm,$yy,$yobi) = localtime(time);
$mm++;
# 2桁化
$mm = sprintf("%.2d",$mm);
$dd = sprintf("%.2d",$dd);
# 西暦4桁処理
if ($yy < 70) { $yy = $yy + 2000;}
else { $yy = $yy + 1900;}
# 本日
$ymd=$yy.$mm.$dd;
####################################
# #
# メインルーチン(処理の分岐) #
# #
####################################
# 全体の流れを決定する
if ($in{'action'} eq 'main') { &main; }
else { &first; }
# なくても良いが最終出口を示す
exit;
#############################################
# #
# データを読む #
# #
#############################################
sub read {
# データを読み各連想配列に加算する
# 1 2 3 4 5 6
# 日付時刻、宛先、内容、差出人、消去日、訂正用パスワード
open(DB,"$file");
flock(DB,2);
%data=();
$cnt=0;
while (<DB>) {
($dt1,$dt2,$dt3,$dt4,$dt5,$dt6) = split(/\t/,$_);
# 表示期限チェック
if ($dt5 > 0 && $dt5 >= $ymd) {
# 宛先毎にデータ登録件数を調べる
$data{$dt2}++;
$cnt++;
# 右画面に漢字コードではデータを渡せないので該当するデータのキーを一つ記憶する
if ($data{$dt2} == 1) {$key{$dt2} = $dt1 }
} # end of if
} # end of while
flock(DB,8);
close(DB);
} # end of read
#############################################
# #
# 最初に処理するルーチン #
# #
#############################################
sub first {
&main;
} # end of first
#############################################
# #
# メイン処理画面を表示する #
# #
#############################################
sub main {
&read;
@key=keys(%data);
@new=sort sortsb @key;
# 表示出力処理
print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD><TITLE>掲示板2左</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
EOM
print '<form method="post" action="' . $reload . '">' . "\n";
print '<input type=hidden name="action" value="main">' . "\n";
print '<input type=submit value="最新情報表示">' . "\n";
print '</FORM>';
print '<BR>'."\n";
print '<TABLE BORDER="1">';
print '<TR>';
print "<TH>宛先</TH><TH>件数</TH></TR>\n";
# 全件
print '<TR>';
print '<TD>'."\n";
print '<A HREF = "'.$call.'?action=main&syurui=all&page=1"
TARGET="main">全件表示</A>'."\n";;
print '</FONT>'."\n";
print '</TD>'."\n";
print '<TD ALIGN="right"><FONT
COLOR='.$iro.'>'.$cnt.'</FONT></TD>'."\n";
print '</TD>'."\n";
print '</TR>'."\n";
foreach (@new) {
print '<TR>';
print '<TD>'."\n";
# ユニークとなるコード(半角)を渡す
print '<A HREF = "'.$call.'?action=main&syurui='.$key{$_}.'&page=1"
TARGET="main">'.$_.'</A>'."\n";;
print '</FONT>'."\n";
print '</TD>'."\n";
print '<TD ALIGN="right"><FONT
COLOR='.$iro.'>'.$data{$_}.'</FONT></TD>'."\n";
print '</TD>'."\n";
print '</TR>'."\n";
} # end of foreach
print '</TABLE>';
} # end of main
####################################
#
# 宛先を文字順にソートする(整理する)
#
####################################
sub sortsb { $a <=> $b; }
################ end of script ###################