#==================================================
# ファイル操作(HTML作成用作業ファイル更新)
#==================================================

#HTML用DATを作成
#MakeWorkFile(KEY-NUMBER)
sub MakeWorkFile{
my $key = @_[0];
my $workfile = $TEMPPATH . $key . ".html";
my $dattemp = $DATPATH . $key . ".dat";
my (@messx,@content,@logdat);
my ($lognum,$mailto,$time,$brmax,$topnum,$firstlog,$name,$mail,$subject,$message);

open(RDAT,"<$dattemp");
@logdat=<RDAT>;#ログを配列に読み込む
close(RDAT);

#ログのカキコ数を取得
$lognum = @logdat;
if(-w $dattemp && $lognum > 999){
#open(OVER, ">>$dattemp");
#print OVER "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
#close(OVER);
#chmod(0555, $dattemp);
$lognum++;

if(-w $dattemp){
my $datdat = $DATPATH . $key;
my $tmpdat = $DATPATH . $key . ".tmp";
my $success;
open(COPY, "cp $dattemp $datdat |");
close(COPY);
$success = 0;
until($success){ $success = rename($datdat, $dattemp); }
chmod(0555, $dattemp);
unlink($tmpdat);
}
}

#1つ目の要素を読み込む
$firstlog = $logdat[0];
#改行カット
chomp($firstlog);

#1つ目の要素を加工する
($name,$mail,$time,$message,$subject) = split(/<>/,$firstlog);

$SUBLINE = $subject . " (" . $lognum . ")\n";

open(SHTM,">$workfile");#ログテンポラリを開く
#flock(SHTM,2);

#サブジェクトテーブルを吐き出す(ここは必ず1行にまとめること(処理効率))
#-----------------------------------------------------------------------
print SHTM <<EOF;
<TABLE border=1 cellspacing=7 cellpadding=3 width=95% bgcolor="$SETTING{"BBS_THREAD_COLOR"}" align=center><TR><TD><DL><a name="\$ANCOR"></a><DIV ALIGN="right"><a href ="#menu">■</a><a href="#\$FRONT">▲</a><a href="#\$NEXT">▼</a></DIV><B>【\$ANCOR:$lognum】<FONT size=5 color="$SETTING{'BBS_SUBJECT_COLOR'}">$subject</FONT></B>
EOF
#-----------------------------------------------------------------------


#1つ目のメールへのリンクを作成
if($ENV{'SERVER_NAME'} =~ /bbspink\.com/i)
{#if(bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/pinktower\.com\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;

}
} else {#if(!bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/ime\.st\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;

}
}###

if($mail ne ""){
$mailto = "<a href=\"mailto:$mail \"><b>$name </b></a>";
}else{
$mailto = "<font color=$SETTING{'BBS_NAME_COLOR'}><b>$name </b></font>";
}

#1つ目の要素を吐き出す
print SHTM "<dt>1 名前:$mailto $time<dd>$message <br><br><br>";

#ログ数から、表示コンテンツをチェック
if($lognum > $SETTING{"BBS_CONTENTS_NUMBER"}){
#ケツの要素を0〜9番までコンテンツに格納
@content[0..$SETTING{"BBS_CONTENTS_NUMBER"}-1] = @logdat[@logdat-$SETTING{"BBS_CONTENTS_NUMBER"}..@logdat-1];
$topnum=@logdat-($SETTING{"BBS_CONTENTS_NUMBER"}-1);
}else{
#アタマの要素を1〜10番までコンテンツに格納
@content[0..($SETTING{"BBS_CONTENTS_NUMBER"}-1)] = @logdat[1..$SETTING{"BBS_CONTENTS_NUMBER"}];
$topnum=2;
}

foreach(@content){
chomp($_);#改行をカット

#要素を加工する
($name,$mail,$time,$message,$subject) = split(/<>/,$_);

unless($_){
$topnum++;
next;
}

#要素のメールへのリンクを作成
if($ENV{'SERVER_NAME'} =~ /bbspink\.com/i)
{#if(bbspink)
#if(bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/pinktower\.com\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}
}else {#if(!bbspink)
unless($message =~ /2ch\.net/ || $message =~ /bbspink\.com/){
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/ime\.st\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}else{
$message =~ s/(https?|ftp|gopher|telnet|whois|news)\:\/\/([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:\/\/$2\" target=\"_blank\">$1\:\/\/$2<\/a>/ig;
}
}
##
if($mail ne ""){
$mailto = "<a href=\"mailto:$mail \"><b>$name </b></a>";
}else{
$mailto = "<font color=$SETTING{'BBS_NAME_COLOR'}><b>$name </b></font>";
}

print SHTM "<dt>$topnum 名前:$mailto :$time<dd>";

my @messx = split(/<br>/,$message);#メッセージを行でカット
my $messy = @messx;#行数を計算
if($messy > $SETTING{"BBS_LINE_NUMBER"}){
my $messz = join('<br>',@messx[0 .. $SETTING{'BBS_LINE_NUMBER'}-1]);
print SHTM "$messz <br>";
print SHTM "<font color=\"$SETTING{'BBS_NAME_COLOR'}\">(省略されました・・全てを読むには<a href=\"../test/read.cgi/$FORM{'bbs'}/$key/$topnum\" target=\"_blank\">ここ</a>を押してください)</font><br>";
}else{
my $messz = join('<br>',@messx[0 .. $messy-1]);
print SHTM "$messz <br>";
}

$topnum++;
print SHTM "<br>\n";
}

#-----------------------------------------------------------------------

#flock(SHTM,8);
close(SHTM);

#パーミッション調整
umask(0);
chmod(0666,$workfile);
}