"bbs.cgiを読む" の建設予定地です <(_ _;)>
# ***** BBSCGIの下請けサブルーチン *****
#
# PrintConfirm スレッド作成確認画面表示
# PrintCreate スレッド作成画面表示
BBSCGI;
exit;
sub BBSCGI{
... メインルーチン冒頭部分で、各種オブジェクト生成・作業用変数宣言 ...
$S->DecodeForm(1); # フォーム情報デコード
$M->Set('AGENT', $G->GetAgentMode($ENV{'HTTP_USER_AGENT'})); # エージェント設定
$W->Load($M);
$W->Method($S);
$M->Set('RULE', $W->Check($S));
$M->Set('BBS', $S->Get('bbs'));
...
if($I->Load($M)){ # SETTING.TXTのロード
if($I->Get('REFERER_CHECK') eq 'checked' && !$M->Get('AGENT')){ # リファラチェックあり
if($G->IsReferer($M, \%ENV)){ # 自鯖以外からのCGI呼び出し
... エラー表示処理 ...
return;
}
}
if($S->Get('key')){ # スレッドキーあり
$M->Set('KEY', $S->Get('key'));
...
}else{ # スレッドキーなし
$M->Set('KEY', $V->MakeNewThreadKey($M)); # スレッドキーを作成してセットする
...
if($I->Get('BBS_SUBBBS_CGI') eq 'on'){ # SUBBBSオン
if($S->Get('MESSAGE')){ # スレッド作成確認画面へ
PrintConfirm($M, $I, $S);
}else{ # スレッド作成画面へ
PrintCreate($M, $I, $S);
}
return;
}
}
$num = $V->WriteData($G, $S, $M, $I, $A); # 書き込み処理
if($num){ # エラー無しで書き込み
if($M->Get('FASTMODE') && $ENV{'HTTP_USER_AGENT'} =~ /Monazilla/){ # 高速モード発動
... 高速モードの場合、何もしない ...
}else{
$V->UpdateSubject($M, $S, $num); # subject.txt更新
$V->UpdateSubback($M, $E, $S->Get('bbs')); # subback.html更新
$V->UpdateIndex($M, $I, $E, $G, $A); # index.html更新
$V->UpdateMIndex($M, $I, $E); # i/index.html更新
$V->UpdateIndexCGI($M); # index.cgi更新
}
$E->PrintJumpPage($T, $M, $I, $G, $S); # ジャンプページ出力
}
}else{ # SETTING.TXT読み込み失敗
... エラー表示処理 ...
}
}
sub PrintConfirm{
...
$cgi = $M->Get('PATH-CGI');
$bbs = $S->Get('bbs');
...
$E->PrintHTMLHeadA($T, $M, 0, "", $I->Get('BBS_TITLE'), 'Shift_JIS');
$E->PrintHTMLBodyA($T, $I, 0);
... HTMLタグ出力 ...
$T->Flush(0, 0, "");
}
sub PrintCreate{
...
$D->Load($M);
$L->Load($M, 'HEAD');
$kanban = $I->Get('BBS_FIGUREHEAD');
$E->PrintHTMLHeadA($T, $M, 0, "", $I->Get('BBS_TITLE'), 'Shift_JIS');
if($I->IsSetting('BBS_COOKIE', 'on')){
...
$R->Print($T);
...
}
$E->PrintHTMLBodyA($T, $I, 0);
if($kanban){ # 看板画像あり
...
}else{
...
}
$L->Print($T, $I);
$D->Print($T, $M, 95, 0);
...
$E->PrintThreadForm($T, $M, $I, 1);
...
$T->Flush(0, 0, "");
}
# ***** SubBBSCGIの下請けサブルーチン *****
#
# PrintMobileCreate 携帯用スレッド作成画面表示
sub SubBBSCGI{
...
$S->DecodeForm(1);
$M->Set('AGENT', $G->GetAgentMode($ENV{'HTTP_USER_AGENT'}));
$W->Load($M);
$W->Method($S);
$M->Set('RULE', $W->Check($S));
$M->Set('BBS', $S->Get('bbs'));
...
if($I->Load($M)){ # SETTING.TXTのロード
...
if($I->Get('REFERER_CHECK') eq 'checked' && !$M->Get('AGENT')){ # リファラチェックあり
if($G->IsReferer($M, \%ENV)){ # 自鯖以外からのCGI呼び出し
... エラー表示処理 ...
return;
}
}
if($S->Get('mobile') && $M->Get('AGENT')){ # 携帯からスレッド作成
PrintMobileCreate($M, $S, $I, $T, $E);
return;
}
$M->Set('KEY', $V->MakeNewThreadKey($M));
$M->Set('MODE', 2);
$M->MakeAnyPath();
$num = $V->WriteData($G, $S, $M, $I, $A); # 書き込み処理
if($num){
$V->UpdateSubject($M, $S, $num);
$V->UpdateSubback($M, $E, $S->Get('bbs'));
$V->UpdateIndex($M, $I, $E, $G, $A);
$V->UpdateMIndex($M, $I, $E);
$V->UpdateIndexCGI($M);
$E->PrintJumpPage($T, $M, $I, $G, $S);
}
}else{ # SETTING.TXT読み込み失敗
... エラー表示処理 ...
}
}
sub PrintMobileCreate{
...
$ttl = $I->Get('BBS_TITLE');
$bbs = $M->Get('BBS');
...
... HTMLタグ出力 ...
$T->Flush(0, 0, "");
}