# yybbs_tel.pl 最終更新 2006/01/12 #┌───────────────────────────────── #│ 携帯対応YY-BOARD(改) #│ yybbs_tel.pl 通常版・マルチ掲示板対応版共用 #│ 携帯用表示部 for yybbs.cgi #└───────────────────────────────── #------------------------------------------------- # 記事表示部(ケータイ) #------------------------------------------------- sub logView { local($top,$start,$end,$next,$back,$i,$y,$prepage,$ResNG,$utnform1); # DoCoMo用formタグ if (($imode == 3 || $imode == 8) && $UtnOn == 3) { $utnform1 = "
"; } else { $utnform1 = ""; } $sortnew = ($mode eq "sortnew"); $preview = ($mode eq "preview"); $msgview = ($mode eq "msgview"); # 携帯での表示モード用 if ($imode_out == 0) { if ($in{'mode2'} eq "sortnew") { $sortnew = 1; } elsif ($in{'mode2'} eq "preview") { $preview = 1; } } if ($imode_out && $in{'mode2'} eq "sortnew") { $sortnew = 1; } elsif ($imode_out && !$sortnew && !$preview && !$msgview) { $preview = 1; } # 1ページ当たりの記事表示数 if ($sortnew) { $pageView = $new_log; } # 新着表示 elsif ($preview) { $pageView = $p_my_log; } # 一覧表示 elsif ($msgview) { $pageView = $p_msg_log; } # メッセージ表示 else { $pageView = $new_log; } # 標準表示 # ヘッダを出力 &header; # uemini_link表示用 $uemini_flag = 1; # ページ内リンク用 if ($pageLink2) { print "\n"; } # カウンタ処理 if ($counter && $mode ne "allno") { &counter; } if ($it_img) { print "
\n"; } elsif ($tColi) { print "$title
\n"; } else { print "$title
\n"; } # メッセージ if ($messegei) { print "$messegei\n"; } print "
\n"; if ($ihomepage eq "") { print "HOME"; } else { print "HOME"; } # ページ下部へのリンク(閲覧者限定時) if ($miruPass && $pageLink1) { print "/$pageLink1"; } # 新規投稿後の表示モードの設定 if ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; if ($preview == 1 || $msgview == 1) { print "\n"; } elsif ($sortnew == 1){ print "\n"; } print "\n"; print "
\n"; } else { if ($preview == 1 || $msgview == 1) { print "/新規投稿"; } elsif ($sortnew == 1) { print "/新規投稿"; } else { print "/新規投稿"; } } # 掲示板の使い方 if ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; } else { print "/"; } # ページ下部へのリンク(閲覧者限定なし) if (!$miruPass && $pageLink1) { print "/$pageLink1"; } if (!$miruPass) { print "
\n"; } # 表示方法の設定 if ($miruPass) { # 閲覧者限定時 if ($imode_out == 0) { print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; } print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; if ($newok == 1) { print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; } print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; } else { if ($imode_out == 0) { if ($preview == 0 && $sortnew == 0 && $msgview == 0 && $mode ne "allno") { print "標準/"; } else { print "標準/"; } } if ($newok == 0) { print "一覧"; } else { if ($preview == 1 && $mode ne "allno") { print "一覧";} else { print "一覧"; } } if ($newok == 1) { if ($sortnew == 1) { print "/新着"; } else { print "/新着";} } print "/拡張"; print "
\n"; } # ページ区切り処理 $start = $page + 1; $end = $page + $pageView; $i=0; # 記事を展開 # 一記事全文表示 if ($mode eq "allno") { if (!$in{'no'}) { &error('記事番号が指定されていません'); } local($flag)=0; open(IN,"$logfile") || &error("Open Error : ログファイル"); $top = ; while () { ($no) = split(/<>/); if ($in{'no'} == $no) { # 記事の表示 &KijiView($_); $flag++; last; } } close(IN); if (!$flag) { &error('該当の記事が見つかりません'); } print "
\n
\n"; # ページ内リンク用 if ($pageLink1) { print "\n"; } &uemini_ilink; # ページ上部へのリンク if ($pageLink2) { if (!$miruPass) { print "
"; } # 閲覧者限定時以外 print "$pageLink2"; } print "
\n"; print "\n\n"; exit; # 新着順表示(ケータイ) } elsif ($sortnew == 1) { local($temp,@logdata,@tmp,$log); # 記事を展開 open(IN,"$logfile") || &error("Open Error : ログファイル"); @logdata = ; close(IN); $temp = shift(@logdata); #投稿Noでソート @tmp = map {(split /,/)[0]} @logdata; @logdata = @logdata[sort {$tmp[$b] <=> $tmp[$a]} 0 .. $#tmp]; foreach $log (@logdata) { $i++; if ($i < $start) { next; } if ($i > $end) { last; } # 記事の表示 &KijiView($log); } # 親記事とレス記事一括表示(ケータイ) } elsif ($msgview == 1) { local($no,$re,$mytime,$tempresno,@lines2,$res,$a,$page_less,$oya,$f); # エラー判定 if (!$in{'no'}) { &error("記事番号が指定されていません"); } # スレッド参照数保存 if ((-e "$viewcntfile") && ($PreviewRes == 2 || $PreviewRes == 3 || $PreviewResi == 2 || $PreviewResi == 3) && !$page) { &ViewCountUp($in{'no'}); } # 該当記事取得 $res=0; $page_less=0; @lines2=(); $ResNG=""; $oya=""; $f=0; open(IN,"$logfile") || &error("Open Error : ログファイル"); $top = ; while () { ($no,$re,$mytime) = (split(/<>/))[0,1,12]; if ($in{'no'} == $no && $re) { $f++; last; } if (($in{'no'} == "$no" && !$re) || ($in{'no'} == "$re" && $re)) { if ($meslast == 2 && $in{'no'} eq "$no") { $oya=$_; } else { push (@lines2,$_); } if ($mytime =~ /^0/) { $ResNG="この記事には返信出来ません"; } if ($mytime =~ /^9/) { $ResNG="未認証の記事には返信出来ません"; } if ($mytime =~ /^8/) { $ResNG="閲覧専用です"; } } } close(IN); # エラー判定 if ($f) { &error("不正な表\示要求です"); } # 新しいレスから表示する場合 if ($meslast == 2) { if ($oya) { push (@lines2,$oya); } @lines2 = reverse(@lines2); } # 該当記事の数 $res = @lines2; if (!$res) { &error("該当の記事がありません"); } # レス数限定 if ($resMax && $res-1 >= $resMax && !$ResNG) { $ResNG="返信終了です"; } # 最新のレスを表示する場合 if ($meslast == 1 && $page eq "") { $page_less = 1; # 初期表示レス番号取得 if ($pageView == 1) { $start = $res - $pageView +1; } else { $start = $res - $pageView +2; } $end = $res; # 現在ページ取得(ページ送り用) $a = $res / $pageView; if ($a ne int($a)) { $a = int($a+1); } $a -= 1; $page = $a * $pageView; } foreach (@lines2) { $i++; if (($i < $start) && ($i ne 1 || !$page_less)) { next; } if ($i > $end) { next; } # レス番号を定義 if ($meslast == 2) { # 最新のレスを表示する場合 $tempresno = $res - $i + 1; # レス記事 } else { $tempresno = $i - 1; } # 初めのレスから表示する場合 # 記事の表示 &KijiView($_,$tempresno); } # 一覧表示(ケータイ) } elsif ($preview == 1) { local($r_flag,$rcount,%ViewCnt,$tempno,$tempdate,$tempname, $no,$re,$dat,$nam,$eml,$sub,$mytime,$newsign,$newsign_res); local($subC,$namC,$noC) = &color1; local(%colors) = &color2; # スレッド参照数取得 if ((-e "$viewcntfile") && ($PreviewResi == 2 || $PreviewResi == 3)) { %ViewCnt = &ViewCountGet; } print "
\n"; $rcount=0; $r_flag=1; # 記事を展開 open(IN,"$logfile") || &error("Open Error : ログファイル"); $top = ; while () { ($no,$re,$dat,$nam,$eml,$sub,$mytime)=(split(/<>/))[0,1,2,3,4,5,12]; local($com)=(split(/<>/))[6]; # ←追加 if (!$re) { $i++; } if ($i < $start) { next; } if ($i > $end) { last; } # 親記事の場合 if (!$re) { # 一覧表示の後方の表示(レスの数等) if (!$r_flag) { &PrePlus1($rcount,$tempname,$tempdate,$ViewCnt{$tempno},$newsign,$newsign_res); if ($miruPass) { print "\n
\n"; } # 閲覧者限定時 ### else { print "
\n"; } else { print "
\n"; } $newsign = ""; $newsign_res = ""; $r_flag++; } # 疑似削除した記事の処理 if ($mytime =~ /^0/) { &dude; } # 管理人未認証の記事 if ($mytime =~ /^9/) { &chkMae; } # 全角→半角変換 if ($telHalf) { $sub = &tel_half($sub); $nam = &tel_half($nam); } # 絵文字処理 # 長さ調整 $sub = &emoji_length($sub,2,'tel',$sub_leni_pre); $nam = &emoji_length($nam,2,'tel',$nam_leni_pre); $com = &emoji_length($com,2,'tel',5); # ←追加 # メールアドレスを変換 if ($eml) { $nam = &eml_henkan($eml,$nam,$no); } # # 時間変換 # &time_change; # タイトルを【と】で囲む $sub = "【$sub】"; # 管理メッセージ if ($mytime =~ /AD$/) { if (!$re || $sortnew == 1) { print "$KanriMessagei"; } # $mytime =~ s/AD$//; } # 記事を表示 if ($miruPass) { # 閲覧者限定時 print "$utnform1"; if ($multi_form) { print "$multi_form"; } print ""; print ""; print ""; if ($page) { print ""; } print ""; ### print "$subC$sub$colors{'subC'} $namC$nam$colors{'namC'}"; print "$subC$sub$colors{'subC'} $namC$nam$colors{'namC'} $com"; # ←修正 } else { ### print "[$noC$no$colors{'noC'}]$subC$sub$colors{'subC'} $namC$nam$colors{'namC'}"; ### print "[$noC$no$colors{'noC'}]$subC$sub$colors{'subC'} $namC$nam$colors{'namC'} $com"; # ←修正 # ↓ここから修正 print < Name:$namC$nam$colors{'namC'}
No.$no $dat
$com
EOM # ↑ここまで修正 } $rcount=0; $r_flag=0; # NEWマークの計算 if ($newViewi || $newViewi2) { $newsign = &get_newsign($mytime); } # 参照数表示用 ### if ($PreviewResi == 2 || $PreviewResi == 3) { $tempno = $no; } $tempno = $no; # ← 修正 # レス記事の場合 } else { $rcount++; # NEWマークの計算 if ($newViewResi || $newViewResi2) { $newsign_res = &get_newsign($mytime,'res'); } # 最終返信表示用 if ($PreviewResi == 1 || $PreviewResi == 3) { $tempdate = $dat; $tempname = $nam; } } } close(IN); # 一番最後の記事の後方の表示(レスの数等) if (!$r_flag) { &PrePlus1($rcount,$tempname,$tempdate,$ViewCnt{$tempno},$newsign,$newsign_res); if ($miruPass) { print "\n"; } # 閲覧者限定時 else { print "
\n"; } } # 標準表示(ケータイ) } else { # 記事を展開 open(IN,"$logfile") || &error("Open Error : ログファイル"); $top = ; while () { ($re) = (split(/<>/))[1]; if (!$re) { $i++; } if ($i < $start) { next; } if ($i > $end) { last; } # 記事の表示 &KijiView($_); } close(IN); } $next = $page + $pageView; $back = $page - $pageView; if ($back >= 0 || $next < $i) { if ($msgview == 1){ print"
\n"; } else { print"
\n"; } } print "
\n"; # ページ内リンク用 if ($pageLink1) { print "\n"; } # ページ送り # メッセージ表示 if ($msgview == 1){ if ($back >= 0 || $next < $i) { print "ページ
\n"; $x=1; $y=0; while ($i > 0) { if ($page == $y) { print "[$x]\n"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } else { print " $x\n"; } $x++; $y = $y + $pageView; $i = $i - $pageView; } } print "
"; # if ($ResNG eq "返信終了です" && $miruPass) { # 閲覧者限定時 # print "$utnform1\n"; # if ($multi_form) { print "$multi_form\n"; } # print < # # # # # # #EOM # } elsif ($ResNG eq "返信終了です") { # print "[$ResNG]
"; # } els if ($ResNG) { print "[$ResNG]
"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } else { print "[返信]
"; } # 一覧の1ページ以外のmsgviewの場合、該当の一覧ページへもリンク $prepage = ($in{'page2'}/$p_my_log)+1; if ($prepage > 1 && $miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } elsif ($prepage > 1) { print "[一覧の$prepageページへ]
\n"; print "[一覧の先頭へ]
\n"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } else { print "[一覧へ戻る]
\n"; } } else { # 順に新着表示、一覧表示、その他 if ($back >= 0) { if ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; if ($sortnew == 1) { print "\n"; } elsif ($preview == 1) { print "\n"; } print < EOM } elsif ($sortnew == 1) { print "[前の$pageView件]
\n"; } elsif ($preview == 1) { print "[前の$pageView件]
\n"; } else { print "[前の$pageView件]
\n"; } } if ($next < $i) { if ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; if ($sortnew == 1) { print "\n"; } elsif ($preview == 1) { print "\n"; } print < EOM } elsif ($sortnew == 1){ print "[次の$pageView件]
\n"; } elsif ($preview == 1){ print "[次の$pageView件]
\n"; } else { print "[次の$pageView件]
\n"; } } } # ページ上部へのリンク if ($pageLink2) { print "$pageLink2\n"; } # 著作権表\示部 ---削除不可--- if ($miruPass) { # 閲覧者限定時 print "
KENT & MakiMaki
\n"; print "携帯用改造:湯一路\n"; if (-e './resize.pl' && $upload == 1){ print "
- resize -\n"; } if ($upload == 1 && $iupload == 1) { print "
[Web Liberty]\n"; } print "
Modified by Tambo\n"; } else { print "
KENT & MakiMaki
\n"; print "携帯用改造:湯一路\n"; if (-e './resize.pl' && $upload == 1){ print "
- resize -\n"; } if ($upload == 1 && $iupload == 1) { print "
[Web Liberty]\n"; } print "
Modified by Tambo\n"; } print "
[管理用]\n"; print "
\n\n\n"; exit; } # 一覧表示の後方の表示 sub PrePlus1 { local($rcount,$nam,$dat,$ViewCnt,$newsign,$newsign_res)=@_; # 返信数 # if ($rcount > 0) { # if ($PreviewResi == 2 || $PreviewResi == 3) { $rcount = "返:".$rcount; } # 最終返信表示 if ($rcount && ($PreviewResi == 1 || $PreviewResi == 3)) { # 全角→半角変換 if ($telHalf) { $nam = &tel_half($nam); } # 絵文字処理 # 長さ調整 $nam = &emoji_length($nam,2,'tel',$nam_leni_pre); ### print " ($rcount/$nam)"; print "[返信:$rcount件]/$nam\n"; # ← 修正 } else { ### print " ($rcount)"; print "[返信:$rcount件]\n"; # ← 修正 } # } # # 返信数 # if ($rcount > 0) { print " ($rcount)"; } # # # 最終返信表示 # if ($rcount && ($PreviewResi == 1 || $PreviewResi == 3)) { # # 全角→半角変換 # if ($telHalf) { # $nam = &tel_half($nam); # } # # 絵文字処理 # # 長さ調整 # $nam = &emoji_length($nam,2,'tel',$nam_leni_pre); # # 時間変換 # &time_change; # print " [$nam:$dat]"; # } # 参照数を表示 if (($PreviewResi == 2 || $PreviewResi == 3) && $ViewCnt) { print " [参:$ViewCnt]"; } # 新着マーク print "$newsign$newsign_res"; } #------------------------------------------------- # 記事表示 新着表示/親記事とレス記事一括表示/標準表示/一記事全文表示 #------------------------------------------------- sub KijiView { local($kiji) = $_[0]; local($i) = $_[1]; # レス番号 local($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico,$mytime,$chk,$tail,$vw,$vh) = split(/<>/,$kiji); local($ResNG) = 0; local($subC,$namC,$noC) = &color1; local($comC) = &color3($col); local(%colors) = &color2; local($no2,$newsign,$utnform1,$flag); local($flag2) = 0; # DoCoMo用formタグ if (($imode == 3 || $imode == 8) && $UtnOn == 3) { $utnform1 = "
"; } else { $utnform1 = ""; } # 疑似削除した記事の処理 if ($mytime =~ /^0/) { &dude; $ResNG=1; } # 管理人未認証の記事 if ($mytime =~ /^9/) { &chkMae; $ResNG=1; } # 返信禁止の記事 if ($mytime =~ /^8/) { $ResNG=1; } # 全角→半角変換 if ($telHalf) { $sub = &tel_half($sub); $nam = &tel_half($nam); $com = &tel_half($com); } # 一記事全文表示 if ($mode eq "allno") { # 絵文字処理 if ($epad_use) { $sub = &emoji_henkan_tel($sub); $nam = &emoji_henkan_tel($nam); $com = &emoji_henkan_tel($com); } } else { # 表示文字数制限 コメント if ($com_len && length($com) > $com_len*2) { $com = &com_seigen($com); if ($miruPass) { $flag2 = 1; } } elsif ($epad_use) { # 絵文字変換 $com = &emoji_henkan_tel($com); } # 絵文字処理 # 長さ調整 $sub = &emoji_length($sub,2,'tel',$sub_leni); $nam = &emoji_length($nam,2,'tel',$nam_leni); } # 引用部文字色変更 if ($refTel) { $com = &com_ref($com); } # メールアドレスを変換 if ($eml) { $nam = &eml_henkan($eml,$nam,$no); } # 時間変換 &time_change; # 文字色の設定 if ($subC) { $sub = $subC . "【" . $sub . "】" . $colors{'subC'}; } else { $sub = "【" . $sub . "】"; } if ($namC) { $nam = $namC . $nam . $colors{'namC'}; } if ($noC) { $no2 = $noC . "[" . $no . "]" . $colors{'noC'}; } else { $no2 = "[" . $no . "]"; } if ($comC) { $com = $comC . $com . $colors{'comC'}; } # NEWマークの計算 if ($newViewi || $newViewi2) { $newsign = &get_newsign($mytime); } else { $newsign = ""; } # 記事番号へのリンク if (!$miruPass) { # 閲覧者限定時は無効 $com =~ s/(No\.(\d+))/$1<\/a>/g; } # オートリンクをjump経由にする if ($miruPass) { $com = &jump_link($com); } # 一記事全文表示/新着順表示(ケータイ) if ($mode eq "allno" || $sortnew == 1) { print "
"; } # 親記事とレス記事一括表示/標準表示(ケータイ) else { if (!$re) { print "
"; } else { print "
"; } } # 管理メッセージ if ($mytime =~ /AD$/) { if (!$re || $sortnew == 1) { print "$KanriMessagei
\n"; } # $mytime =~ s/AD$//; } $flag=0; # 一記事全文表示 if ($mode eq "allno") { print "$no2$sub
\n"; # 親記事の場合 if (!$re) { print "TO:$nam
$dat$newsign
\n"; if ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } else { print "[
スレッド]
\n"; } if ($ResNG) { print "[返信不可]"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM $flag=1; } else { print "[返信]"; } # レス記事の場合 } else { print "→TO:$nam
$dat$newsign
\n"; if ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } else { print "[スレッド]
\n"; } if ($ResNG) { print "[返信不可]"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM $flag=1; } else { print "[返信]"; } } print "[修削]"; # 新着順表示(ケータイ) } elsif ($sortnew == 1) { print "$no2$sub
\n"; if (!$re) { print "TO:$nam
$dat$newsign
\n"; if ($ResNG) { print "[返信不可]"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM $flag=1; } else { print "[返信]"; } } else { print "→TO:$nam
$dat$newsign
\n"; if ($ResNG) { print "[返信不可]"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM $flag=1; } else { print "[返信]"; } } print "[修削]"; # 親記事とレス記事一括表示(ケータイ) } elsif ($msgview == 1) { if (!$re) { print "$no2$sub
\n"; print "TO:$nam
$dat$newsign
\n"; if ($ResNG) { print "[返信不可]"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM $flag=1; } else { print "[返信]"; } } else { print "RES:$i $no2$sub
\n"; print "→TO:$nam
$dat$newsign
\n"; } print "[修削]"; # 標準表示(ケータイ) } else { print "$no2$sub
\n"; if (!$re) { print "TO:$nam
$dat$newsign
\n"; if ($ResNG) { print "[返信不可]"; } elsif ($miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM $flag=1; } else { print "[返信]"; } } else { print "→TO:$nam
$dat$newsign
\n"; } print "[修削]"; } if ($telurl && $url && $miruPass) { # 閲覧者限定時 print "[URL]"; } elsif ($telurl && $url) { print "[URL]"; } if ($flag) { print "\n$com\n"; } else { print "
\n$com\n"; } # 添付ファイル処理 if ($upload ==1 && $tail) { print "
"; &FileOuti($no,$chk,$tail); } # ホスト名とUserAgentの表示 if ($HosUaOuti && $hos) { &HosUaOuti($hos,$flag2); } # IDの表示 if ($IDOut == 2 || $IDOut == 3) { &IDOut($hos,$flag2); } } #------------------------------------------------- # 携帯電話からの書込み #------------------------------------------------- sub imode_write { local($top,$resub,$mysub,$sub_short,$reg_icon,$tempico,$tempcol, $work,$flag,$cnam,$ceml,$curl,$cpwd,$check,$temp,$res_all, $utnform1,$utnform2,$cked2,$comment); # 投稿記事訂正時 if ($in{'sub'} eq "無題") { $in{'sub'} = ""; } # DoCoMo用formタグ if (($imode == 3 || $imode == 8) && $UtnOn >= 1) { $utnform1 = "
"; } else { $utnform1 = ""; } if (($imode == 3 || $imode == 8) && $UtnOn == 3) { $utnform2 = ""; } else { $utnform2 = ""; } # ヘッダを出力 &header; # 投稿パスワード確認 if ($in{'wPass'}) { $check = &decrypt($in{'wPass'}, $writePass2); if ($check != 1) { $temp = 1; } } # 投稿者限定時 if (($check != 1 && !$in{'resno'} && $writePass) || $check != 1 && ($in{'resno'} && $writePass == 2)) { if ($it_img) { print "
\n"; } elsif ($tColi) { print "$title
\n"; } else { print "$title
\n"; } print "
\n"; print "投稿にはパスワードが必要です\n"; if ($temp) { print "
パスワードが違います\n"; } print <<"EOM"; $utnform2 EOM if ($multi_form) { print "$multi_form\n"; } if ($miruPass) { print "\n"; } # 閲覧者限定時 if ($in{'resno'}) { print "\n"; } if ($in{'mode2'}) { print "\n"; } if ($in{'mode2'} eq "preview" && $in{'page2'}) { $page = $in{'page2'}; } if (!$topsort && $page) { print "\n"; } print <<"EOM";
EOM print "
\n"; &uemini_ilink; print "
\n\n"; exit; } &uemini_ilink; print "
\n"; # 返信の場合 if ($in{'resno'}) { $work = "返信する"; $flag=0; $res_all=0; # ログを読み込み open(IN,"$logfile") || &error("Open Error : ログファイル"); $top = ; while () { local($no,$re,$sub,$mytime) = (split(/<>/))[0,1,5,12]; # 親記事取得 if ($in{'resno'} eq "$no" && !$re) { # 疑似削除した記事の処理 if ($mytime =~ /^0/) { $flag=3; last; } # 管理人未認証の記事 if ($mytime =~ /^9/) { $flag=4; last; } # 返信禁止の記事 if ($mytime =~ /^8/) { $flag=5; last; } # flagを初期化 $sub_short=0; if (length($sub) > 50) { $sub = &sj_substr($sub,0,50); $sub .= '..'; $sub_short=1; } $resub = " value=\"Re: $sub\""; if ($epad_use) { # 絵文字が分断した場合の対策 if ($sub_short) { $resub = &emoji_check($resub,2); } # 絵文字復元 $resub = &emoji_fukugen_edt($resub); } # 下で表示するために追加 $mysub = $sub; if ($epad_use) { # 絵文字が分断した場合の対策 if ($sub_short) { $mysub = &emoji_check($mysub,2); } # 絵文字変換 $mysub = &emoji_henkan_tel($mysub); } $flag=1; if (!$resMax) { last; } # 返信数制限時、レス数取得 } elsif ($resMax && $in{'resno'} eq "$re") { $res_all++; if ($resMax && $res_all >= $resMax) { $flag=2; last; } } } close(IN); if (!$flag) { &error("不正な返信要求です"); } elsif ($flag == 2) { #&error("返信が規定数に達したため返信できません"); } print < 返信が規定数に達したため返信できません EOM if ($miruPass) { # 閲覧者限定時 print "$utnform2\n"; if ($multi_form) { print "$multi_form\n"; } print < EOM } else { print "
新規投稿"; } print < EOM exit; } elsif ($flag == 3) { &error("この記事には返信できません"); } elsif ($flag == 4) { &error("未認証の記事には返信できません"); } elsif ($flag == 5) { &error("このスレッドは閲覧専用です"); } } else { # 新規投稿の場合 $work = "投稿する"; } # 投稿記事訂正時 if ($in{'job'} eq "kakunin") { $work = "訂正する"; # 絵文字復元 if ($epad_use) { $in{'sub'} = &emoji_fukugen_edt($in{'sub'}); $in{'name'} = &emoji_fukugen_edt($in{'name'}); $in{'comment'} = &emoji_fukugen_edt($in{'comment'}); } if ($in{'name'}) { $cnam = " value=\"$in{'name'}\""; } if ($in{'email'}) { $ceml = " value=\"$in{'email'}\""; } if ($in{'url'}) { $curl = " value=\"$in{'url'}\""; } if ($in{'pwd'}) { $cpwd = " value=\"$in{'pwd'}\""; } $resub = " value=\"$in{'sub'}\""; $ccookid = $in{'cookid'}; $comment = $in{'comment'}; $comment =~ s/
/\n/g; # クッキー取得(EZweb/AirH"PHONE) } elsif ($imode == 4 || $imode == 6) { ($cnam,$ceml,$curl,$cpwd,$ccookid) = &get_cookie; if ($cnam) { $cnam = " value=\"$cnam\""; } if ($ceml) { $ceml = " value=\"$ceml\""; } if ($curl) { $curl = " value=\"$curl\""; } if ($cpwd) { $cpwd = " value=\"$cpwd\""; } } if (!$curl) { $curl = " value=\"http://\""; } # 文字色の設定 $tempcol = &keitai_col("new"); if ($check == 1) { print "-パスワードが認証されました-
\n"; } # メッセージを追加 if ($in{'resno'}) { print "[$in{'resno'}]
【$mysub】
への返信\n"; } else { print "
【新規投稿】\n"; } print <<"EOM";
$imode_msg2
$epad_msg

EOM if ($in{'job'} eq "kakunin") { print "【訂正した後「訂正する」を押してください】
\n"; } print <<"EOM"; $utnform1 EOM if ($multi_form) { print "$multi_form\n"; } if ($miruPass) { print "\n"; } # 閲覧者限定時 if ($ccookid) { print "\n"; } local($a1,$a2) = &a1a2Get; print "\n"; print "\n"; # アイコンモード if ($iconMode) { # アイコンの設定 $tempico = &keitai_ico("new"); print "\n"; } print <<"EOM"; おなまえ
EOM if ($trip == 1 && $miruPass) { print "(トリップ可)"; } elsif ($trip == 1) { print "(トリップ可)"; } print <<"EOM";
題名

EOM if ($mailcheck > 0){ print <<"EOM"; Eメール

EOM } if ($mailcheck > 1){ print <<"EOM"; URL

EOM } print <<"EOM"; 暗証キー

コメント

EOM if ($in{'resno'} && $usertop) { local(@usertop) = ('管理人の設定','移動しない','トップへ移動'); local($usertop2) = $usertop; $usertop2 -= 1; print "記事移動
\n"; print "
\n"; } if ($in{'mode2'}) { print "\n"; } if ($in{'mode2'} eq "preview" && $in{'page2'}) { $page = $in{'page2'}; } if (!$topsort && $page) { print "\n"; } if ($in{'wPass'}) { print "\n"; } # 携帯からのファイル投稿 if (($upload == 1 && $iupload == 1) && (!$in{'resno'} || $res_clip == 1)) { if ($in{'ifile'} eq "on") { $cked3=" checked"; } else { $cked3=""; } print "添付ファイルを投稿する
\n"; } # 投稿記事訂正時 if ($in{'job'} eq "kakunin") { $cked2=" checked"; } else { $cked2=""; } print <<"EOM"; 投稿を確認する

EOM exit; } #------------------------------------------------- # 留意事項 〜表示部〜 #------------------------------------------------- sub howto_view { local($past_msg,$past_msg2,$epad_msg)=@_; &tag_on($newViewi,$newViewi2,$newViewResi,$newViewResi2); &header; &uemini_ilink; print <<"EOM";
【掲示板の使い方】

・投稿内容には、タグは一切使用できません
・$epad_msg
EOM if ($writePass == 2) { print <<"EOM"; ・投稿には投稿用パスワードが必要です
EOM } elsif ($writePass == 1) { print <<"EOM"; ・新規投稿には投稿用パスワードが必要です。返信には必要ありません
EOM } print <<"EOM"; ・記事を投稿する上での必須入力項目は「おなまえ」と「メッセージ」です。その他は任意です
EOM if ($trip == 1) { print <<"EOM"; ・なりすましを防ぐトリップ機能\が有効です。お名前を「お名前#任意の文字列」(#は半角)として投稿すると、「お名前 ◆暗号化された文字列」と表\示されます
EOM } print <<"EOM"; ・投稿には、半角カナは一切使用しないで下さい。文字化けの原因となります
EOM if ($upload == 1 && $iupload == 1) { print <<"EOM"; ・携帯でファイルを投稿するには、記事投稿後、メッセージに従ってメールに添付して送ります
EOM } elsif ($upload == 1) { print <<"EOM"; ・携帯では投稿の際にファイルを添付することは出来ません
EOM } if ($telHalf == 1 || $telHalf == 3) { print <<"EOM"; ・全角のカタカナ、英数字及び一部の記号を半角に変換して表\示します
EOM } if ($telHalf == 2 || $telHalf == 3) { print <<"EOM"; ・2行以上改行のみの行が続く時、1行の改行に変換して表\示します
EOM } if ($PreviewResi == 1 || $PreviewResi == 3) { print <<"EOM"; ・一覧表\示の(数字/名前)は、返信数と最新返信者を示します
EOM } else { print <<"EOM"; ・一覧表\示の(数字)は、返信数を示します
EOM } if ($PreviewResi == 2 || $PreviewResi == 3) { print <<"EOM"; ・一覧表\示後方の[数字]は、そのスレッドの参照数を示します
EOM } if ($newViewi && $newViewi2) { print <<"EOM"; ・$new_time時間以内の投稿には$newViewiを、$new_time2時間以内には$newViewi2を表\示します
EOM } elsif ($newViewi) { print <<"EOM"; ・$new_time時間以内の投稿には$newViewiを表\示します
EOM } if ($newViewResi && $newViewResi2) { print <<"EOM"; ・一覧表\示では$new_time時間以内の返信には$newViewResiを、$new_time2時間以内には$newViewResi2を表\示します
EOM } elsif ($newViewResi) { print <<"EOM"; ・一覧表\示では$new_time時間以内の記事は$newViewResiを表\示します
EOM } print <<"EOM"; ・「新規投稿」をクリックすると新規投稿用のフォームが現れます
・記事の投稿時に「パスワード」にパスワード(英数字で8文字以内)を入れておくと、その記事はパスワードによって修正・削除することができます
・表\示方法には標準、一覧、新着の三通りあります。標準は従来通り、一覧は親記事の一覧とレスの数を、新着は新しい投稿から順に表\示します。ただし、管理者の設定によって標準、新着表\示がされない場合があります
・一覧表\示の場合には記事番号をクリックすると、親記事、レス記事の全体を表\示します
・既存の記事に「返信」することができます。[返信]をクリックすると返信用フォームが現れます
EOM if ($resMax) { print <<"EOM"; ・ひとつの親記事に対する返信は最大$resMax件です。さらに話題が続く時は、別に新規投稿してそちらに返信して頂くようにお願いします
EOM } print <<"EOM"; ・投稿した記事を「修正」または「削除」することができます。[修削]をクリックして該当の欄に暗証キーを入力して操作します
・記事の保持件数は最大$max件です。それを超えると古い順に自動的に削除され$past_msgます。$past_msg2
EOM print <<"EOM"; ・管理者が不適切と判断する記事や他人を誹謗中傷する記事は予\告なく削除することがあります
EOM &uemini_ilink; print "\n\n"; } #------------------------------------------------- # 投稿ファイル一覧 #------------------------------------------------- sub pic { local($i,$j,$wh,$link,$flag,$top,$start,$end,$next,$back,$utnform1, $no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico,$mytime, $chk,$tail,$vw,$vh); # DoCoMo用formタグ if (($imode == 3 || $imode == 8) && $UtnOn == 3) { $utnform1 = "
"; } else { $utnform1 = ""; } &header; &uemini_ilink; print "
【投稿ファイル一覧】
"; if (!$upload) { &error('ファイル添付機能\は無効です'); } if ($miruPass) { # 閲覧者限定時 print "
\n"; } elsif ($in{'job'} eq 'view') { # 単独表示 print "一覧/単独

\n"; } else { # 一覧表示 print "一覧/単独
\n"; } # ページ区切り処理 if ($in{'job'} eq 'view') { $pageView = 1; } else { $pageView = 10; } $start = $page + 1; $end = $page + $pageView; $i=0; $flag=0; $flag2=0; open(IN,"$logfile") || &error("Open Error : ログファイル"); @logdata = ; close(IN); $top = shift(@logdata); # 投稿Noでソート if ($newok == 1) { @tmp = map {(split /,/)[0]} @logdata; @logdata = @logdata[sort {$tmp[$b] <=> $tmp[$a]} 0 .. $#tmp]; } foreach (@logdata) { ($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos, $pw,$col,$ico,$mytime,$chk,$tail,$vw,$vh) = split(/<>/); # 疑似削除した記事の処理 if ($mytime =~ /^0/) { &dude; } # 管理人未認証の記事 if ($mytime =~ /^9/) { &chkMae; } # 添付ファイルが存在する場合 if ($tail) { $i++; if ($i < $start) { next; } if ($i > $end) { last; } # 記事へのリンク if ($miruPass && $in{'job'} ne 'view') { if ($flag2 == 1) { print "
"; } print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print <<"EOM"; EOM } elsif (!$miruPass) { print "[No.$no]"; } # 単独表示 if ($in{'job'} eq 'view') { # 記事へのリンク print "
\n
\n"; if ($tail eq ".gif" || $tail eq ".jpg" || $tail eq ".png") { if ($ImageCheck && $chk != 1) { print "
$link\n"; } else { if (-e "${updir}s$no.jpg"){ print "\n"; } else { print "\n"; } } } else { print "
$no$tail\n"; } if ($miruPass) { print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print <<"EOM"; EOM } print "
\n"; # 一覧表示 } else { # 添付ファイル処理 &FileOuti($no,$chk,$tail,'2'); if ($miruPass) { print "\n"; $flag2=1; } } if (!$miruPass) { print "
\n"; } } } if (!$i) { print "登録されたファイルはありません
\n"; } # ページ送り print"
\n"; $next = $page + $pageView; $back = $page - $pageView; print "
\n"; if ($back >= 0 && $miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } if ($in{'job'} eq 'view') { print "\n"; } print <<"EOM"; EOM if ($in{'job'} eq 'view') { print "\n"; } else { print "\n"; } print "\n"; $flag=1; } elsif ($back >= 0 && $in{'job'} eq 'view') { print "[]\n"; $flag=1; } elsif ($back >= 0) { print "[前の$pageView件]
\n"; $flag=1; } if ($next < $i && $miruPass) { # 閲覧者限定時 print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } if ($in{'job'} eq 'view') { print "\n"; } print <<"EOM"; EOM if ($in{'job'} eq 'view') { print "\n"; } else { print "\n"; } print "\n"; $flag=1; } elsif ($next < $i && $in{'job'} eq 'view') { print "[]\n"; $flag=1; } elsif ($next < $i) { print "[次の$pageView件]\n"; $flag=1; } if ($miruPass) { # 閲覧者限定時 if ($flag) { print"
\n"; } print <<"EOM";
EOM if ($multi_form) { print "$multi_form\n"; } print <<"EOM";
EOM if ($multi_form) { print "$multi_form\n"; } print <<"EOM";
EOM } if ($miruPass || $flag) { print"
\n"; } # 閲覧者限定時等 &uemini_ilink; print "
\n\n\n"; exit; } #------------------------------------------------- # 投稿ランキング表示 #------------------------------------------------- sub WriteCountView { local(%mark)=(); local(%sort2)=(); local(@log,@tmp,$n); local($i,$m)=('0','0'); &header; &uemini_ilink; print "
【投稿ランキング】

"; if (!$WriteCnt) { &error('投稿ランキング機能\は無効です'); } # ログを読み込み open(IN,"$writecntfile") || &error("Open Error: $writecntfile"); @log = ; close(IN); # ソート処理 if ($in{'sort'} eq 'count' && $in{'sort2'} == 1) { @tmp = map {(split/<>/)[1]} @log; @log = @log[sort {$tmp[$a] <=> $tmp[$b]} 0 .. $#tmp]; $mark{'count'} = "▲"; } else { @tmp = map {(split/<>/)[1]} @log; @log = @log[sort {$tmp[$b] <=> $tmp[$a]} 0 .. $#tmp]; $mark{'count'} = "▼"; $sort2{'count'} = 1; } if ($miruPass) { # 閲覧者限定時 print <$mark{'count'} EOM if ($multi_form) { print "$multi_form\n"; } if ($sort2{'count'}) { print "\n"; } print <
EOM } else { print <回数
EOM } foreach (@log) { $i++; local($nam,$count,$chk) = (split(/<>/))[0,1,5]; if ($chk != 1) { # 絵文字処理 # 長さ調整 $nam = &emoji_length($nam,3,'tel',$nam_leni); $n=$i-$m; print "[$n]$nam/$count回
\n"; } else { $m++; } } print "
\n"; &uemini_ilink; print "\n\n"; exit; } #------------------------------------------------- # 拡張メニュー表示 #------------------------------------------------- sub kakucho { local($utnform1,$utnform2); # DoCoMo用formタグ if (($imode == 3 || $imode == 8) && $UtnOn == 3) { $utnform1 = "
"; $utnform2 = ""; } else { $utnform1 = ""; $utnform2 = ""; } &header; &uemini_ilink; print "
【拡張メニュー】
\n
\n"; if ($miruPass) { # 閲覧者限定時 # print "$utnform1\n"; # if ($multi_form) { print "$multi_form\n"; } # print "\n"; # print "\n"; # print "\n"; # print "
\n"; if ($upload == 1) { print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; } if ($WriteCnt) { print "$utnform1\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; } if ($pastkey) { print "$utnform2\n"; if ($multi_form) { print "$multi_form\n"; } print "\n"; print "\n"; print "\n"; print "\n"; } } else { print "ワード検索\n"; if ($upload) { print "
投稿ファイル\n"; } if ($WriteCnt) { print "
投稿ランキング\n"; } if ($pastkey) { print "
過去ログ\n"; } } print "
\n
\n"; &uemini_ilink; print "
\n\n\n"; exit; } #------------------------------------------------- # ワード検索 #------------------------------------------------- sub find { # 閲覧者限定時 if ($miruPass) { &error("検索機能\は使用出来ません"); } &header; # ページ内リンク用 if ($pageLink2) { print "\n"; } &uemini_ilink; # ページ下部へのリンク if ($pageLink1) { print "/$pageLink1\n"; } print <【ワード検索】
キーワードを入力し、条件・表\示を選択して検索ボタンを押して下さい
キーワードはスペースで区切って複数指定できます
EOM if ($multi_form) { print "$multi_form\n"; } print < キーワード
条件
表\示 EOM # 同じ条件で過去ログを検索 if ($pastkey && $in{'word'}) { print < EOM if ($multi_form) { print "$multi_form\n"; } print < 同じ条件で過去ログを検索 EOM } # 検索実行 if ($in{'word'} ne "") { ($i,$next,$back) = &search($logfile,$in{'word'},$in{'view'},$in{'cond'},"now"); $enwd = &url_enc($in{'word'}); if ($back >= 0) { print "
[前の$in{'view'}件]\n"; } if ($next < $i) { print "
[次の$in{'view'}件]\n"; } } # ページ内リンク用 if ($pageLink1) { print "\n"; } # ページ上部へのリンク if ($pageLink2 && $i) { print "
$pageLink2\n"; } print "\n\n"; exit; } #------------------------------------------------- # PCのみのサブルーチン #------------------------------------------------- sub ResOutput { &error("無効な機能\の呼び出しです"); } sub ResOutput2 { &error("無効な機能\の呼び出しです"); } sub shinki { &error("無効な機能\の呼び出しです"); } sub resForm { &error("無効な機能\の呼び出しです"); } sub ResOutputR { &error("無効な機能\の呼び出しです"); } sub image { &error("無効な機能\の呼び出しです"); } sub edtdel_form { &error("無効な機能\の呼び出しです"); } sub chosakuken { &error("無効な機能\の呼び出しです"); } sub title_msg { &error("無効な機能\の呼び出しです"); } sub PrePlus2 { &error("無効な機能\の呼び出しです"); } sub logView2 { &error("無効な機能\の呼び出しです"); } sub filecom { &error("無効な機能\の呼び出しです"); } sub KijiHenkan { &error("無効な機能\の呼び出しです"); } sub threadIchiran { &error("無効な機能\の呼び出しです"); } 1; __END__