EOM
&foot;
exit;
}
# -------------- #
# 名簿の一覧表示 #
# -------------- #
sub list{
# 時間取得は、○時間前の更新を色付きで表示するときのみ
if($show_lastup && $new_time) { $time = time; }
# URLの飛び方指定
if($target){ $target="_blank"; }
else{ $target="_top"; }
# ソート実行(番号順)
if($sort == 1){
$sortname = "No.順";
@LINES = sort { (split(/\,/,$a))[$sort-1] <=> (split(/\,/,$b))[$sort-1] } @LINES;
if($in{'rev'}){ @LINES = reverse @LINES; }
}
# ソート実行(最終更新日順 or 名前の追加日順)
elsif($sort == 5 || $sort == 7){
if($sort == 5){ $sortname = "更新日順"; } else { $sortname = "登録日順"; }
@LINES = sort { (split(/\,/,$b))[$sort-1] <=> (split(/\,/,$a))[$sort-1] } @LINES;
if($in{'rev'}){ @LINES = reverse @LINES; }
}
# ソート実行(それ以外)。こうしないと、空の項目が先頭に来ちゃうんだよな(−−;
elsif($sort){
$sortname = "$koumoku[$sort-19]";
foreach $line(@LINES){
$sortdata = (split(/\,/,$line))[$sort-1];
if($sortdata){
$sortno{$line} = $sortdata;
}
else{ push(@temp,$line); }
}
# ハッシュソート実行
@LINES = sort { (uc $sortno{$a} <=> uc $sortno{$b}) || (uc $sortno{$a} cmp uc $sortno{$b})} keys(%sortno);
if($in{'rev'}){ @LINES = reverse @LINES; }
# 空の項目は後ろにくっつける
push(@LINES,@temp);
}
# ソートの見出し表示
print "\n";
# テーブル見出し部分の表示(改造するときは、下にもう1箇所あり)
print "\n";
if($show_no){ print "No. | "; }
print "$namae | ";
if($show_mail){ print "Offical | "; }
if($show_url){ print "Sound | "; }
$x=0;
foreach(@show){
$sortno = $_ + 19;
print"$koumoku[$_]";
$x++;
}
if($show_img){ print " | 画像 | "; }
if($show_lastup){print "最終更新日 | "; }
print"
\n";
# テーブル本体部分の表示開始
$i = 0;
$j = 0;
$K = 0;
$flag=0;
$count = $max;
$max_no = $max * $max_table;
$page = $in{'page'};
$start = $page + 1;
$end = $page + $max_no;
foreach(@LINES){
if($max && $i == $count){
$flag=1;
$count = $count + $max;
}
$i++;
if ($i < $start) { next; }
elsif($i > $end){ $i = $#LINES + 1; last; }
$j = $page + 1; # ページの先頭の場合
if($i == $j){ $flag= 0; }
$_ =~ s/\s*$//;
($num,$name,undef,$last_time,$time1,$imgno,undef,$mail,$mailflag,$url,$imgurl,$tail,undef,undef,undef,undef,undef,undef,undef,@item) = split(/,/);
# 一定量ごとにテーブルを閉じる→見出しの再表示
if($flag){
$flag=0;
print "
\n";
print "\n";
if($show_no){ print "No. | "; }
print "$namae | ";
if($show_mail){ print "Official | "; }
if($show_url){ print "Sound | "; }
$x=0;
foreach(@show){
$sortno = $_ + 19;
print"$koumoku[$_] | ";
$x++;
}
if($show_img){ print "画像 | "; }
if($show_lastup){print "最終更新日 | "; }
print "
\n";
}
# 本体表示部分を改造したい場合はここから下
if($K){ print""; $K=0; }
else{ print"
"; $K=1; }
if($show_no){ print"$num | "; }
if($name){ print"$name | ";}
else{print"--- | ";}
# メール表示
if($show_mail){
if($mail){ print"$maillink | " }
else{ print "− | " }
}
# ホームページへのリンク表示
if($show_url){
if($url){ print"$urllink | " }
else{ print "− | " }
}
# 項目表示
$x=0;
foreach(@show){
if($item[$_-1] eq ''){print"− | ";}
else{print"$item[$_-1] | ";}
$x++;
}
# 画像の有無チェック
if($show_img){
if($uptype){
if($tail){ print"$imglink | " }
else{ print "− | " }
}
else{
if($imgurl){ print"$imglink | " }
else{ print "− | " }
}
}
# 前回の更新時間を表示
if($show_lastup){
if($last_time eq ''){ print"− | "; }
else{
# $new_time時間以内に更新があったら色付きで
if ($new_time && ($time - $time1) < $new_time*3600) { $last_time = "$last_time"; }
print"$last_time | ";
}
}
print"
\n";
}
print"
\n";
# 他ページへのリンク表示
if($#LINES >= $max * $max_table){
print "\n";
print "
\n";
}
}
# -------------- #
# 詳細表示ページ #
# -------------- #
sub show{
&head; $head_flag=1;
if($target){ $target="_blank"; }
else{ $target="_top"; }
$id = $in{'id'};
$flag = 0;
print "\n";
open (IN,"$datapath") || &error('open');
while(){
if($mode eq 'view'){
if((split(/,/))[1] ne $in{'name'}){ next; }
}
else {
if((split(/,/))[0] != $in{'id'}){ next; }
}
# データが見つかった時は、改行をはずして全項目を読み込みましょう
$_ =~ s/\s*$//;
($num,$name,$pass,$last_time,$time1,$imgno,$host,$mail,$mailflag,$url,$imgurl,$tail,$imgw,$imgh,$imgflag,$comment,undef,undef,undef,@item) = split(/,/);
if($mode eq 'view'){ $id = $num; }
print " $name
\n";
if(!$last_time && $show_host && $host){print "Host:$host |
";}
print "\n";
if($last_time){
# 画像自動リンク
if($gazou && !$uptype && $imgurl){ $imgurl =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1/g; }
# 前後Noへのリンク表示
if($numlink == 1 || $numlink == 3){
my($a,$b);
$a = $id - 1; $b = $id + 1;
print "\n";
}
# 項目表示開始
print "\n";
if($mail_name && $mail){print "\n";}
for($x=0;$x<$#koumoku;$x++){
if($koumoku[$x+1] && $item[$x]){print "$koumoku[$x+1]$item[$x]
\n";}
}
# 画像表示
print "\n";
if($gazou && !$uptype && $imgurl){ print "$gazou$imgurl\n" }
if($gazou && $tail){
if($imgflag){ $tail =""; }
else{ $tail =""; }
print "$tail\n";
}
# コメント部分表示開始
if($comment){
print "$comment
\n";
print "\n";
print "\n";
}
}
# 最終更新日がないのは、管理人が名前だけ登録したとき
else{
print "
\n現在データは登録されていません。";
if($numlink){
my($a,$b);
$a = $id - 1; $b = $id + 1;
print "
\n";
}
}
$flag = 1;
last;
}
close (IN);
if(!$flag){ &error('notfound'); }
print<