# yyini_pc.pl 最終更新 2009/04/07 #┌───────────────────────────────── #│ 携帯対応YY-BOARD(改) #│ yyini_pc.pl 通常版・マルチ掲示板対応版共用 #│ PC用表示部 for yyini.cgi #└───────────────────────────────── #------------------------------------------------- # 投稿画面 #------------------------------------------------- # $temp # 1:親記事修正時 # 2:親記事新規投稿時 sub form { my ($nam,$eml,$url,$pwd,$ico,$col,$sub,$com,$work,$temp,$plval1,$plval2,$plval3,$plval4,$plval5,$resNG) = @_; # Eメール非表示・返信通知用 my ($email,$email2,$email3) = split(/<:>/,$eml); # 選択肢・初期選択値 if ($email2 eq '' && $in_email_chd ne '') { $email2 = $in_email_chd; } # リターン変数 my $out; if(!$work) { $work = "投稿する"; } if ($url eq "") { $url = 'http://'; } my $pattern = 'https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+'; $com =~ s/($pattern)<\/a>/$1/go; if ($com =~ /^
/) { $com = '
' . $com; } $com =~ s/
/\n/g; if ($miruPass) { # 閲覧者限定時 $out .= qq |\n|; } $out .= < お名前 EOM if ($trip == 1 && $miruPass) { $out .= qq |(トリップ機能\あり)|; } elsif ($trip == 1) { $out .= qq |(
トリップ機能\あり)|; } $out .= < EOM if ($in_email != 2 || $email) { $out .= < Eメール EOM # メールアドレス表示方法選択 my (@in_email_nam,@in_email_val,@in_email_chk); if ($in_email_open ne '') { push(@in_email_nam,$in_email_open); push(@in_email_val,'3'); if ($email2 == 3) { push(@in_email_chk,' selected'); } else { push(@in_email_chk,''); } } if ($in_email_non ne '') { push(@in_email_nam,$in_email_non); push(@in_email_val,'1'); if ($email2 == 1) { push(@in_email_chk,' selected'); } else { push(@in_email_chk,''); } } if ($in_email_form ne '') { push(@in_email_nam,$in_email_form); push(@in_email_val,'2'); if ($email2 == 2) { push(@in_email_chk,' selected'); } else { push(@in_email_chk,''); } } if (@in_email_nam >= 2) { if ($in_email_def ne '') { unshift(@in_email_nam,$in_email_def); } else { unshift(@in_email_nam,"既定方式で表\示"); } unshift(@in_email_val,''); unshift(@in_email_chk,''); } if (@in_email_nam >= 3) { $out .= qq |\n|; } elsif (@in_email_nam == 1) { my $ckd = ' checked' if ($in_email_chk[0] eq ' selected'); $out .= qq |($in_email_nam[0])\n|; } $out .= < EOM } $out .= < タイトル メッセージ EOM if ($epad_use && $em_form) { $out .= < EOM } if ($autolink) { my $cked1 = $in{'autolink'} == 1 ? ' checked' : ''; $out .= qq |URLの自動リンク無効\n|; } $out .= < URL EOM # 添付フォーム if ($upload >= 1) { if (($hyoujichu && $mode ne 'allno') || ($mode eq 'shinki' && $in{'job'} ne 'kakunin')) { foreach (1 .. $upload) { my $ulno = $_ == 1 ? '' : $_; my $t; if ($_ == 1 && $upload == 1) { $t = ''; } elsif ( $_ == 1 &&$upload >= 2) { $t = 1; } else { $t = $_; } $out .= qq |添付File$t\n|; $out .= qq |\n|; } $out .= qq |($upok/$maxdata2まで)\n|; } elsif ($mode eq 'res' || $mode eq 'allno') { if ($res_clip) { foreach (1 .. $upload) { my $ulno = $_ == 1 ? '' : $_; my $t; if ($_ == 1 && $upload == 1) { $t = ''; } elsif ( $_ == 1 &&$upload >= 2) { $t = 1; } else { $t = $_; } $out .= qq |添付File$t\n|; $out .= qq |\n|; } $out .= qq |($upok/$maxdata2まで)\n|; } else { $out .= qq |添付File\n|; $out .= qq |(返信時はファイルを添付出来ません)\n|; } } } # アイコンモード if ($iconMode) { # アイコン配列取得 my @ico1 = &geticon1; # アイコンファイル名 my @ico2 = &geticon2; # アイコン名 # ケータイ用アイコンを配列に付加 if ($imode_icon && $ico eq $imode_gif) { push(@ico1,"$imode_gif"); push(@ico2,"ケータイ"); } $out .= qq |イメージ  \n|; # イメージ参照のリンク if ($ImageView == 1) { $out .= qq |[イメージ参照]|; } else { $out .= qq |[イメージ参照]|; } if ($iconUp > 0 && $iconCheck < 2) { $out .= qq |  [アイコン登録]|; } $out .= qq |\n|; } if ($pwd ne "??") { if ($editNG != 1 || $deleNG != 1) { $out .= qq |暗証キー|; $out .= qq |\n|; $out .= qq |(英数字で8文字以内)\n|; } # 投稿キー if ($regist_key >= 1) { require "${libDir}registkey2.cgi"; my ($str_plain,$str_crypt,$regi_code) = &pcp_makekey; $out .= <投稿キー EOM if ($regist_key == 1 || $regist_key == 2) { $out .= qq |(投稿時 投稿キー を入力してください)|; } elsif ($regist_key > 2) { $out .= qq |(投稿時 $regi_code を入力してください)|; } } } # 色情報 my @col = split(/\s+/, $color); # ケータイ用文字色が指定されていれば配列に付加 if ($keitaiCol) { # $keitaiColが$colorに含まれるか確認 my $tmp_flag = &nakami_check($color,$keitaiCol); # 含まれていない場合 if (!$tmp_flag && $col eq $keitaiCol) { push(@col,"$keitaiCol"); } } if ($col eq "") { $col = 0; } # 文字色が1つの場合は選択肢を表示しない if (@col == 1) { $out .= qq |\n|; } else { $out .= qq |文字色\n|; foreach (0 .. $#col) { if ($col eq $col[$_] || $col eq $_) { $out .= qq ||; $out .= qq |\n|; } else { $out .= qq ||; $out .= qq |\n|; } } $out .= qq |\n|; } # 追加項目 foreach (1 .. 5) { my ($plusNam,$plusKei,$plusSen,@plusSen,$plusHen,$plusVal); if ($_ == 1) { if (!$plusKo1) { next; } # 機能無効 elsif ($plusKo1Kei == 3 && $mode ne 'admin' && $mode ne 'edit') { next; } # 投稿ランキング else { $plusNam = $plusKo1Nam; $plusKei = $plusKo1Kei; $plusSen = $plusKo1Sen; @plusSen = split(/\s+/, $plusSen); $plusHen = 'plnam1'; $plusVal = $plval1; } } elsif ($_ == 2) { if (!$plusKo2) { next; } # 機能無効 elsif ($plusKo2Kei == 3 && $mode ne 'admin' && $mode ne 'edit') { next; } # 投稿ランキング else { $plusNam = $plusKo2Nam; $plusKei = $plusKo2Kei; $plusSen = $plusKo2Sen; @plusSen = split(/\s+/, $plusSen); $plusHen = 'plnam2'; $plusVal = $plval2; } } elsif ($_ == 3) { if (!$plusKo3) { next; } # 機能無効 elsif ($plusKo3Kei == 3 && $mode ne 'admin' && $mode ne 'edit') { next; } # 投稿ランキング else { $plusNam = $plusKo3Nam; $plusKei = $plusKo3Kei; $plusSen = $plusKo3Sen; @plusSen = split(/\s+/, $plusSen); $plusHen = 'plnam3'; $plusVal = $plval3; } } elsif ($_ == 4) { if (!$plusKo4) { next; } # 機能無効 elsif ($plusKo4Kei == 3 && $mode ne 'admin' && $mode ne 'edit') { next; } # 投稿ランキング else { $plusNam = $plusKo4Nam; $plusKei = $plusKo4Kei; $plusSen = $plusKo4Sen; @plusSen = split(/\s+/, $plusSen); $plusHen = 'plnam4'; $plusVal = $plval4; } } elsif ($_ == 5) { if (!$plusKo5) { next; } # 機能無効 elsif ($plusKo5Kei == 3 && $mode ne 'admin' && $mode ne 'edit') { next; } # 投稿ランキング else { $plusNam = $plusKo5Nam; $plusKei = $plusKo5Kei; $plusSen = $plusKo5Sen; @plusSen = split(/\s+/, $plusSen); $plusHen = 'plnam5'; $plusVal = $plval5; } } $out .= qq |$plusNam\n|; # ラジオボタン型 if ($plusKei == 1) { # if ($plusVal eq '') { $plusVal = $plusSen[0]; } foreach (0 .. $#plusSen) { if ($plusVal eq $plusSen[$_]) { $out .= qq |$plusSen[$_] \n|; } else { $out .= qq |$plusSen[$_] \n|; } } # メニュー型 } elsif ($plusKei == 2) { # if ($plusVal eq '') { $plusVal = $plusSen[0]; } $out .= qq |  \n|; # 投稿ランキング(管理者修正モード) } elsif ($plusKei == 3 && $mode eq 'admin') { $out .= qq | (半角数字)\n|; # 投稿ランキング(投稿者修正モード) } elsif ($plusKei == 3 && $mode eq 'edit') { $out .= qq |: $plusVal\n|; # テキスト型 } else { $out .= qq |\n|; } $out .= qq |\n|; } if ($usertop && ($mode eq 'res' || $in{'reno'}) || $mode eq 'allno') { local($usertop2) = $usertop; $usertop2 -= 1; # 投稿記事訂正時 if ($in{'job'} eq 'kakunin') { $usertop2 = $in{'usertop'}; } $out .= <記事移動 EOM local(@usertop) = ('管理人の設定','移動しない','トップへ移動'); foreach(0 .. 2) { if ($usertop2 eq $_) { $out .= qq |$usertop[$_]\n|; } else { $out .= qq |$usertop[$_]\n|; } } $out .= qq |\n|; } if ($hyoujichu || $mode eq 'res' || $mode eq 'shinki') { # 投稿記事訂正時 my ($cked1,$cked2); if ($in{'no_cookie'} == 1) { $cked1=" checked"; } if ($in{'job'} eq "kakunin") { $cked2=" checked"; } $out .= <クッキー クッキー情報を記録しない プレビュー EOM $out .= $pview == 1 ? qq |確認する| : qq |投稿を確認する| , qq |\n\n|; } if (($temp == 1 || $temp == 2) && $resNG ne 'NG' && $henshinNG != 1) { $out .= <返 信 EOM # 投稿記事訂正時 my $cked1; if ($in{'resNG'} == 1 || $resNG == 1) { $cked1 = " checked"; } if ($temp == 1) { $out .= qq |スレッドを終了して返信不可にする\n\n|; } elsif ($temp == 2) { $out .= qq |返信無効にする\n\n|; } } if ($temp && ($oyamailing eq 'all' || $oyamailing >= 1) && $in_email != 2 && $henshinNG != 1) { $out .= <返信通知 EOM my $cked1; if ($email3 == 1) { $cked1=" checked"; } my $y = $mode eq 'edit' ? "返信をメールで受信する" : "投稿者に返信をメールで通知する"; my $z = $oyamailing >= 1 ? "(投稿から$oyamailing日間有効)" : ''; $out .= qq |$y$z\n\n|; } $out .= qq |\n|; return $out; } #------------------------------------------------- # 記事表示 # ・標準表示、新着表示、レス画面、一記事全文表示 # ・過去ログ # ・ワード検索 #------------------------------------------------- sub KijiView { local($no,$re,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ico,$mytime,$chk,$tail,$vw,$vh,$plus1,$plus2,$plus3,$plus4,$plus5,$ulnam,$tail2,$vw2,$vh2,$ulnam2,$tail3,$vw3,$vh3,$ulnam3) = split(/<>/,$_[0]); my ($i) = $_[1]; # レス番号 my ($a) = $_[2]; # 上の記事との間隔の設定 my ($log,$p) = split(/:/,$_[3]); # ワード検索フラグ now:現行ログ past:過去ログ 数字:過去ログ番号(統合ワード検索用), 検索番号 my ($SubBkgrd1,$SubBkgrd2,$formMes,$method2); my $no_view = $no; # 検索対象語句の強調表示用 my $nam2 = $nam; # 投稿ランクキング用 # methodの設定 if ($miruPass) { $method2 = 'POST'; } else { $method2 = 'GET'; } # 記事タイトル部の背景色設定時、上とのスペースの設定 if ($SubBkgrd) { $SubBkgrd1 = " style=\"background-color:$SubBkgrd;\""; $SubBkgrd2 = " style=\"background-color:$SubBkgrd; margin:0.5em 0px 0px 0px;\""; } # 疑似削除した記事の処理 if ($mytime =~ /^0/) { &dude; } # 管理人未認証の記事 if ($mytime =~ /^9/) { &chkMae; } # 返信禁止の記事 if ($mytime == 0 || $mytime =~ /^8/) { $formMes = "スレッド"; } # 一記事全文表示 elsif ($mode eq 'allno' || $mode eq 'allno2') { $formMes = "スレッド"; } else { $formMes = " 返信 "; } # 絵文字処理 # 長さ調整 if (($mode eq 'res' || $mode eq 'allno' || $mode eq 'allno2' || $mode eq 'past') && $epad_use) { $sub = &o2p($sub); $nam = &o2p($nam); $com = &o2p($com); } else { $sub = &emoji_length($sub,3,'pc',$sub_len); $nam = &emoji_length($nam,3,'pc',$nam_len); if ($epad_use) { $com = &o2p($com); } } # 引用元へリンク if ($mode eq 'allno' || $mode eq 'allno2') { if (!$miruPass) { $sub =~ s/^\[(→(\d+))\]/\[$1<\/a>\]/; } } else { $sub =~ s/^\[(→(\d+))\]/\[$1<\/a>\]/; } # 動画貼り付け if ($dougaOn1 >= 1) { $com = &douga_on1($com); } if ($dougaOn2 >= 1) { $com = &douga_on2($com); } # 検索対象語句の強調表示 # タグの外側だけ対象に置換 より # http://www.din.or.jp/~ohzaki/regex.htm # if ($log) { if ($in{'word'} ne '') { # キーワードを配列化 $word = $in{'word'}; $word =~ s/\x81\x40/ /g; my @wd = split(/\s+/, $word); # 検索対象語句の強調表示(文字色と背景色はペアで設定) # 文字色 my @h_col = ('#000000','#000000','#000000','#000000','#000000'); # 背景色 my @h_back = ('#ffff66','#99ffff','#99ff99','#ff9999','#ff66ff'); my $j=0; foreach my $wd (@wd) { $no_view =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $dat =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; # 置換対象をEUCに変換 jcode::convert(\$wd,'euc'); jcode::convert(\$sub,'euc'); jcode::convert(\$nam,'euc'); jcode::convert(\$com,'euc'); jcode::convert(\$plus1,'euc'); jcode::convert(\$plus2,'euc'); jcode::convert(\$plus3,'euc'); jcode::convert(\$plus4,'euc'); jcode::convert(\$plus5,'euc'); $sub =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $nam =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $com =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $plus1 =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $plus2 =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $plus3 =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $plus4 =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; $plus5 =~ s/((?:\G|>)[^<]*?)(\Q$wd\E)/$1$2<\/b>/ig; # SJISに戻す jcode::convert(\$sub,'sjis'); jcode::convert(\$nam,'sjis'); jcode::convert(\$com,'sjis'); jcode::convert(\$plus1,'sjis'); jcode::convert(\$plus2,'sjis'); jcode::convert(\$plus3,'sjis'); jcode::convert(\$plus4,'sjis'); jcode::convert(\$plus5,'sjis'); if ($j < $#h_back) { $j++; } else { $j=0; } } } # メールアドレスを変換 if ($eml) { $nam = &eml_henkan($eml,$nam,$no); } # URLを変換 if ($url) { $url = &url_henkan($url); } # 引用部文字色変更 if ($refCol) { $com = &com_ref($com); } # URL文字列の折り返し表示 if ($br_use) { $com = &com_br($com); } # NEWマークの計算 my $newsign = &get_newsign($mytime); # 記事番号へのリンク # if (!$miruPass && $mode ne 'past' && $mode ne 'find') { # 閲覧者限定時は無効 if (!$miruPass && $mode ne 'find') { # 閲覧者限定時は無効 # $com =~ s/(No\.?(\d+))/$1<\/a>/ig; # $com =~ s/(No\.(\d+))/$1<\/a>/g; # mode=thdへ変更 $com =~ s/(No\.(\d+))/$1<\/a>/g; } # オートリンクをjump経由にする if ($miruPass) { $com = &jump_link($com); } # 上段 print qq |\n|; if ($re && $mode ne 'sortnew' && $mode ne 'allno' && $mode ne 'allno2' && $in{'pas'} ne 'allno' && !$log) { if (!$SubBkgrd) { print qq |
\n|; } print qq |
\n|; if ($a) { print qq |\n|; } else { print qq |
\n|; } } else { print qq |
\n|; } print qq |\n|; # 返信ボタン等表示 # ワード検索時・閲覧者限定時 if ($log && $miruPass) { print qq | EOM # ワード検索時 } elsif ($log) { my $enwd = &url_enc($in{'word'}); print qq |\n|; # 返信ボタン } elsif ((!$re || $mode eq 'sortnew' || $mode eq 'allno') && ($mode ne 'res' && $mode ne 'allno2') && $henshinNG != 1 && $mode ne 'past') { print qq |\n\n\n|; # 過去ログ一記事全文表示時 } elsif ($mode eq 'past' && $in{'pas'} eq 'allno') { print qq |\n|; # } else { # print qq |\n|; } print qq |\n
\n|; print qq |\n|; print qq |\n|; if ($url || $newsign) { print qq |\n|; } print qq |
\n|; # ログ種別(統合ワード検索時) if ($in{'pastlog'} eq 'all') { if ($log eq 'now') { print qq |$p.【現行ログ】
\n|; } elsif ($log > 0) { print qq |$p.【過去ログ$log】
\n|; } } # 管理メッセージ if ($mytime =~ /AD$/ && (!$re || $mode eq "sortnew")) { print &tag_on($KanriMessage) . qq |
\n|; } # レス番号表示(レス表示数未制限時は未表示) if ($re && $i) { my $iout=0; if ($mode eq 'sortnew' || $mode eq 'allno' || $mode eq 'allno2') { $iout=0; } elsif ($mode eq 'res' && ($resViewR || $in{'resViewR'} || $in{'newresView'})) { $iout=1; } elsif ((!$mode || $mode eq 'std') && ($resView || $in{'resView'})) { $iout=1; } if ($iout) { print qq |$i.  |; } } print qq |$sub|; if ($mode eq 'res') { print qq |
\n|; } else { print qq |  \n|; } print qq |$nam : $dat\n|; print qq |No\.$no_view\n
\n|; if ($url) { print qq | $url\n|; } if ($newsign) { print qq | $newsign\n|; } print qq |
\n|; print qq |
\n|; if ($log eq "now") { print qq |
\n|; if ($room ne '') { print qq |$multi_form\n|; } print <<"EOM"; EOM if (!$re) { print qq |\n|; } else { print qq |\n|; } } elsif ($log eq "past") { print qq |\n|; if ($room ne '') { print qq |$multi_form\n|; } print <<"EOM"; EOM if (!$re) { print qq |\n|; } else { print qq |\n|; } } elsif ($log > 0) { print qq |\n|; if ($room ne '') { print qq |$multi_form\n|; } print <<"EOM"; EOM if (!$re) { print qq |\n|; } else { print qq |\n|; } } print <<"EOM";
\n|; if ($log eq "now") { if (!$re) { print qq |[スレッド全体]\n|; } else { print qq |[スレッド全体]\n|; } } elsif ($log eq "past") { if (!$re) { print qq |[スレッド全体]\n|; } else { print qq |[スレッド全体]\n|; } } elsif ($log > 0) { if (!$re) { print qq |[スレッド全体]\n|; } else { print qq |[スレッド全体]\n|; } } print qq |
\n|; if ($miruPass) { print qq |\n|; } if ($room ne '') { print qq |$multi_form\n|; } print qq |\n|; if ($mode eq 'sortnew') { print qq |\n|; } if ($in{'tp'} eq 'tree') { print qq |\n|; } if (!$re){ print qq |\n|; } else { print qq |\n|; } if ($page) { print qq |\n|; print qq |\n|; } print qq |\n|; print qq |\n|; if (!$re) { print qq |[スレッド全体]\n|; } else { print qq |[スレッド全体]\n|; } print qq |
\n|; # 追加項目 if ($plusKo1 >= 1 || $plusKo2 >= 1 || $plusKo3 >= 1 || $plusKo4 >= 1 || $plusKo5 >= 1) { if ($re && $mode ne 'sortnew' && $mode ne 'allno' && $mode ne 'allno2' && $in{'pas'} ne 'allno' && !$log) { print qq |\n
\n|; } else { print qq |
\n|; } } # 投稿ランキング if ($plusKo1 >= 1 && $plusKo1Kei == 3 && $plus1 > 0) { $plus1 = &WCntGet($nam2,$plus1,'1'); } if ($plusKo2 >= 1 && $plusKo2Kei == 3 && $plus2 > 0) { $plus2 = &WCntGet($nam2,$plus2,'2'); } if ($plusKo3 >= 1 && $plusKo3Kei == 3 && $plus3 > 0) { $plus3 = &WCntGet($nam2,$plus3,'3'); } if ($plusKo4 >= 1 && $plusKo4Kei == 3 && $plus4 > 0) { $plus4 = &WCntGet($nam2,$plus4,'4'); } if ($plusKo5 >= 1 && $plusKo5Kei == 3 && $plus5 > 0) { $plus5 = &WCntGet($nam2,$plus5,'5'); } if ($plusKo1 >= 1) { if ($plus1 eq '') { $plus1 = '(未入力)'; } print qq |$plusKo1Nam:$plus1\n|; } if ($plusKo2 >= 1) { if ($plus2 eq '') { $plus2 = '(未入力)'; } # print qq |
$plusKo2Nam:$plus2\n|; print qq | $plusKo2Nam:$plus2\n|; } if ($plusKo3 >= 1) { if ($plus3 eq '') { $plus3 = '(未入力)'; } # print qq |
$plusKo3Nam:$plus3\n|; print qq |  $plusKo3Nam:$plus3\n|; } if ($plusKo4 >= 1) { if ($plus4 eq '') { $plus4 = '(未入力)'; } # print qq |
$plusKo4Nam:$plus4\n|; print qq |  $plusKo4Nam:$plus4\n|; } if ($plusKo5 >= 1) { if ($plus5 eq '') { $plus5 = '(未入力)'; } # print qq |
$plusKo5Nam:$plus5\n|; print qq |  $plusKo5Nam:$plus5\n|; } if ($plusKo1 >= 1 || $plusKo2 >= 1 || $plusKo3 >= 1 || $plusKo4 >= 1 || $plusKo5 >= 1) { print qq |
\n|; } # 下段 if ($re && $mode ne 'sortnew' && $mode ne 'allno' && $mode ne 'allno2') { print qq |\n|; } else { print qq |
\n|; } # アイコンモード if ($iconMode && $ico) { # アイコンとaltの設定 my $temp_alt = &icon_mode($ico); print qq |\n|; } else { print qq |\n|; } if ($mode eq 'allno2' || $mode eq 'past' || $mode eq 'find') { print qq |\n|; } else { print qq |\n|; } print qq |
$temp_alt
\n|; } else { print qq |\n|; } # 添付ファイル表示処理 if ($upload && ($tail || $tail2 || $tail3)) { &FileOut($no,$com,$col,$chk,$tail,$vw,$vh,'','','',$ulnam,$tail2,$vw2,$vh2,$ulnam2,$tail3,$vw3,$vh3,$ulnam3); } else { print qq |$com|; } if ($mode ne 'allno2' && $mode ne 'past' && $mode ne 'find') { # 修正/削除のリンク my ($mode2); if ($in{'mode2'}) { $mode2 = $in{'mode2'}; } elsif ($in{'tp'}) { $mode2 = $in{'tp'}; } elsif ($mode ne 'res' && $mode ne 'allno') { $mode2 = $mode; } if (!$mode2) { $mode2 = 'std'; } my $oya = $oyaWork && $re > 0 ? "&oya=$re" : ''; print < EOM if ($mode ne 'allno' && $miruPass eq '' && $mytime != 0 && $mytime !~ /^8/ && $henshinNG != 1) { print qq |[返信]
\n|; } if ($editNG != 1) { print qq |[修正]
\n|; } if ($deleNG != 1) { print qq |[削除]\n|; } print qq |
\n|; # ホスト名とUserAgentの表示 if ($HosUaOut && $hos) { &HosUaOut($hos); } # IDの表示 if ($IDOut == 1 || $IDOut == 3) { &IDOut($hos); } if ($re && $mode ne 'sortnew' && $mode ne 'allno' && $mode ne 'allno2') { print qq |\n|; } } #------------------------------------------------- # 添付ファイル表示処理 #------------------------------------------------- # $p '1' 改行を挿入 : '' # $str 'skin' スキン表示用 : '' # $mod 'only' ファイルのみ表示 : '' sub FileOut { my ($no,$com,$col,$chk,$tail,$vw,$vh,$p,$str,$mod,$ulnam,$tail2,$vw2,$vh2,$ulnam2,$tail3,$vw3,$vh3,$ulnam3) = @_; my ($ipt,$pp,$wh,$flag); my $str2 = ''; # ファイル添付数 my $files; if ($tail ne '') { $files++; } if ($tail2 ne '') { $files++; } if ($tail3 ne '') { $files++; } # 画像以外は常にメッセージの下に表示 if ($imgpoint2 == 1 && $tail ne ".gif" && $tail ne ".jpg" && $tail ne ".png" && $tail ne ".swf" && !$imgpoint && $mod ne 'only') { $flag = 1; $imgpoint = 1; } # 添付ファイルを表示する位置の設定 if ($imgpoint == 1 && $mod ne 'only') { # 下に表示 $ipt = 'align="top"'; if ($p == 1) { $pp = '
'; } else { $pp = '

'; } $str2 .= qq |$com\n|; } elsif ($mod ne 'only') { # 左に表示 $ipt = 'align="left" hspace="5"'; $pp = ''; } $str2 .= qq |$pp|; # 縦に並べて表示 || 添付複数 if ($imgpoint3 == 1 || $files >= 2) { $str2 .= qq |\n\n\n\n
\n|; } my ($i,$ptail,$pvw,$pvh,$pulnam,$pulno); foreach (1 .. 3) { if ($_ == 1) { if ($tail eq '') { next; } else { $ptail = $tail; $pvw = $vw; $pvh = $vh; $pulnam = $ulnam; $pulno = ''; $i++; } } elsif ($_ == 2) { if ($tail2 eq '') { next; } else { $ptail = $tail2; $pvw = $vw2; $pvh = $vh2; $pulnam = $ulnam2; $pulno = '-2'; $i++; } } elsif ($_ == 3) { if ($tail3 eq '') { next; } else { $ptail = $tail3; $pvw = $vw3; $pvh = $vh3; $pulnam = $ulnam3; $pulno = '-3'; $i++; } } if ($imgpoint3 == 1 && $files >= 2 && $i >= 2) { $str2 .= qq |
\n|; } # 添付ファイルが存在する場合 if ($ptail eq ".gif" || $ptail eq ".jpg" || $ptail eq ".png") { if ($ImageCheck && $chk != 1) { $str2 .= qq |しばらくお待ち下さい\n|; } else { if ($pvw && $pvh) { $wh = "width=$pvw height=$pvh"; } else { $wh = ''; } if (-e "${updir}s$no$pulno.jpg") { my $alt = $pulnam eq '' ? '拡大' : "拡大 $pulnam"; if ($SBView == 1) { # Shadowbox.jsで表示 $str2 .= qq |$alt\n|; } else { $str2 .= qq |$alt\n|; } } else { my $alt = $pulnam eq '' ? '単独表\示' : "単独表\示 $pulnam"; if ($SBView == 1) { # Shadowbox.jsで表示 $str2 .= qq |$alt\n|; } else { $str2 .= qq |$alt\n|; } } } } elsif ($ptail eq ".swf") { if ($ImageCheck && $chk != 1) { $str2 .= qq |しばらくお待ち下さい\n|; } else { my $vw2 = $pvw && $pvw !~ /\D/ ? qq |width="$pvw"| : qq |width="200"|; my $vh2 = $pvh && $pvh !~ /\D/ ? qq |height="$pvh"| : qq |height="150"|; my $alt = $pulnam eq '' ? "$no$pulno$ptail" : $pulnam; my ($SWF) = <<"EOM"; EOM if ($SBView == 1) { # Shadowbox.jsで表示 my $vw2 = $pvw ? ";width=$pvw" : ''; my $vh2 = $pvh ? ";height=$pvh" : ''; my $pp2 = $mod ne 'only' ? '

' : ''; my $pp3 = $mod ne 'only' ? '' : '
'; $SWF .= <<"EOM"; EOM } $str2 .= qq |$SWF|; } } elsif ($ptail) { my $tmp; # 外部プレーヤーでポップアップ再生 if ($ExtView == 1 && ($ptail eq '.flv' || $ptail eq '.mov' || $ptail eq '.mp4' || $ptail eq '.mp3')) { my $tmp2 = "'$script?${multi_link}mode=extplay&file=$upurl$no$pulno$ptail'"; my $tmp3 = $pulnam eq '' ? "$upurl$no$pulno$ptail" : $pulnam; $tmp = qq |$no$tail|; } else { $tmp = qq |$no$pulno$ptail|; } my $alt = $pulnam eq '' ? "$no$pulno$ptail" : $pulnam; $str2 .= qq |Download:$alt $tmp\n|; # Shadowbox.jsで表示 if ($SBView == 1) { my $pp2 = $flag == 1 ? '' : "

"; # 左に表示なら

挿入 if ($mod eq 'only') { $pp2 = ''; } my $pp3 = $mod eq 'only' ? '
' : " \;"; my $alt = $pulnam eq '' ? $ptail : $pulnam; if ($ptail eq '.flv' || $ptail eq '.mov' || $ptail eq '.wmv' || $ptail eq '.mp4' || $ptail eq '.mp3') { $str2 .= <<"EOM"; EOM } elsif ($ptail eq '.htm' || $ptail eq '.txt') { $str2 .= <<"EOM"; EOM } } } } if ($imgpoint3 == 2 && $files >= 2 && !$imgpoint) { $str2 .= qq |

\n|; } elsif ($imgpoint3 == 1 || $files >= 2) { $str2 .= qq |
\n|; } if ($imgpoint ne 1 && $mod ne 'only') { # 左に表示 $str2 .= qq |$com
\n|; } if ($imgpoint3 == 2 && $files >= 2 && !$imgpoint) { $str2 .= qq |

\n|; } # 画像以外は常にメッセージの下に表示/元に戻す if ($flag == 1) { $imgpoint = 0; } if ($str eq 'skin' || $mod eq 'only') { return $str2; } else { print $str2; } } #------------------------------------------------- # 上部のリンク #------------------------------------------------- sub ue_link { local($mode2,$out); if ($miruPass) { # 閲覧者限定時 $out = < EOM # 閲覧者限定時 ワード検索無効 $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM if ($pastkey) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } if ($upload >= 1) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } if ($WriteCnt) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } if ($kiriban == 1) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } if ($shinkiForm == 1) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } elsif ($writePass || ($shinkiForm == 0 && ($mode eq 'sortnew' || $mode eq 'preview' || $mode eq 'tree')) || $shinkiForm == 3) { $out .= "
\n"; } $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= <
[トップに戻る]
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= <
[新規投稿]
EOM if ($wwwc_use == "1" || $rss_use == "1") { $out .= "\n"; } if ($send_mail) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= <
EOM if ($newok == 1) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM if ($pageLink1) { $out .= qq |
\n|; } $out .= <
[投稿情報("; if ($wwwc_use == "1") { $out .= "WWWC"; } if ($wwwc_use == "1" && $rss_use == "1") { $out .= "/"; } if ($rss_use == "1") { $out .= "RSS"; } $out .= ")]
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= <
[$pageLink1]
EOM } else { # 通常時 $out = <トップに戻る] [留意事項] [ワード検索] EOM # 過去ログのリンク部を表示 if ($pastkey) { $out .= "[過去ログ]\n"; } # 添付ファイル一覧 if ($upload >= 1) { $out .= "[投稿ファイル]\n"; } # 投稿ランキング if ($WriteCnt) { $out .= "[投稿ランキング]\n"; } # キリ番コメント if ($kiriban == 1) { $out .= "[キリ番コメント]\n"; } # 新規投稿へのリンク if ($shinkiForm == 1) { $out .= "[新規投稿]\n"; } elsif ($writePass || ($shinkiForm == 0 && ($mode eq 'std' || $mode eq 'sortnew' || $mode eq 'preview' || $mode eq 'tree')) || ($shinkiForm == 3 && $mode ne 'allno')) { $out .= "[新規投稿]\n"; } $out .= "[管理用]
\n"; # 掲示板アドレスメール送信機能を表示 if ($send_mail) { $out .= "[携帯に掲示板アドレスを送信]\n"; } # WWWCチェックファイル/RSS出力 if ($wwwc_use == "1" || $rss_use == "1") { $out .= " [投稿情報("; if ($wwwc_use == "1") { $out .= "WWWC"; } if ($wwwc_use == "1" && $rss_use == "1") { $out .= "/"; } if ($rss_use == "1") { $out .= "RSS"; } $out .= ")]\n"; } if ($newok == 1){ $out .= " [標準/一覧/新着/ツリー]\n"; } else { $out .= " [標準/一覧/ツリー]\n"; } if ($pageLink1) { $out .= " [$pageLink1]\n"; } } if ($_[0] eq 'skin') { return $out; } else { print $out; } } #------------------------------------------------- # 下部のリンク #------------------------------------------------- sub shita_link { local($out); if ($miruPass) { # 閲覧者限定時 $out = <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM if ($newok == 1) { $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM } $out .= <
EOM if ($room ne '') { $out .= "$multi_form\n"; } $out .= < EOM if ($pageLink1) { $out .= ""; } if ($pageLink2) { $out .= "[$pageLink2]\n"; } $out .= < EOM } else { # 通常時 if ($newok == 1){ $out = "[標準/一覧/新着/ツリー]\n"; } else { $out .= " [標準/一覧/ツリー]\n"; } if ($pageLink1) { $out .= ""; } if ($pageLink2) { $out .= " [$pageLink2]\n"; } } if ($_[0] eq 'skin') { return $out; } else { print $out; } } #------------------------------------------------- # サブルーチン用の上部メッセージ #------------------------------------------------- # 書式:&ue_msg("バック色","文字色","メッセージ"); sub ue_msg { print < $_[2] EOM } #------------------------------------------------- # 完了文言 #------------------------------------------------- sub message { my ($msg,$str) = @_; if ($str != 1) { &header; if (!$uemini_flag) { &uemini_link; &ue_msg("#00a7ad","#FFFFFF","完了メッセージ"); print qq |

\n|; } } print <


$msg


EOM if ($room ne '') { print qq |$multi_form\n|; } print < EOM if ($in{'mode2'}) { print qq |\n|; } if (!$topsort && $page) { print qq |\n|; print qq |\n|; } if ($miruPass) { # 閲覧者限定時 print qq |\n|; } print <
EOM exit; } #------------------------------------------------- # 移動ボタン #------------------------------------------------- sub mvbtn { local($link,$i,$view,$str) = @_; local($start,$end,$x,$y,$bk_bl,$fw_bl); local($str2) = ""; ## if ($in{'view'}) { $view = $in{'view'}; } if ($in{'bl'}) { $start = $in{'bl'}*10 + 1; $end = $start + 9; } else { $in{'bl'} = 0; $start = 1; $end = 10; } $x=1; $y=0; while ($i > 0) { # 当ページ if ($page == $y) { if ($str eq 'skin') { $str2 .= "| $x\n"; } else { print "| $x\n"; } # 切替ページ } elsif ($x >= $start && $x <= $end) { if ($str eq 'skin') { $str2 .= "| $x\n"; } else { print "| $x\n"; } # 前ブロック } elsif ($x == $start-1) { $bk_bl = $in{'bl'}-1; if ($str eq 'skin') { $str2 .= "| \n"; } else { print "| \n"; } # 次ブロック } elsif ($x == $end+1) { $fw_bl = $in{'bl'}+1; if ($str eq 'skin') { $str2 .= "| \n"; } else { print "| \n"; } } $x++; $y += $view; $i -= $view; } if ($str eq 'skin') { $str2 .= "|\n"; return $str2; } else { print qq "|\n"; } } #------------------------------------------------- # 複数ページ表示 #------------------------------------------------- sub mvbtn3 { my ($target,$a,$i,$pageView,$str,$p11,$p12,$p21,$p22,$p31,$p32) = @_; my ($mtd,$out,$p1l,$p1f,$p2l,$p2f,$p3l,$p3f); if ($a || $miruPass) { $mtd = 'POST'; } else { $mtd = 'GET'; } if ($method eq 'GET') { $mtd = 'GET'; } if ($p11 ne '' && $p12 ne '') { $p1l = "&$p11=$p12"; $p1f = qq ||; } if ($p21 ne '' && $p22 ne '') { $p2l = "&$p21=$p22"; $p2f = qq ||; } if ($p31 ne '' && $p32 ne '') { $p3l = "&$p31=$p32"; $p3f = qq ||; } # 閲覧者限定時等 my $z; if ($miruPass || $mtd eq 'POST') { $z = 1; } # 表示数 my $pgok = $pgoku; my $f1; if ($back >= 0 || $next < $i) { my $x=1; my $y=0; if ($z) { $out .= qq |\n|; if ($room ne '') { $out .= "$multi_form\n"; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } $out .= qq |\n|; $f1=1; } # 最終ページ番号取得 my $lp = int($i/$pageView); if ($i/$pageView != int($i/$pageView)) { $lp += 1; } my ($f2,$f3); while ($i > 0) { if ($page == $y) { if ($z) { $out .= "[$x]\n"; } else { $out .= "| $x\n"; } } elsif ($x == 1 || $x == $lp || ($y >= $page - $pageView * $pgok && $y < $page) || ($y <= $page + $pageView * $pgok && $y > $page) || $pgok eq 'all') { if ($z) { $out .= "\n"; } else { $out .= "| $x\n"; } } elsif ($y < $page - $pageView * $pgok && !$f2) { if ($z) { $out .= " - \n"; } else { $out .= "| -\n"; } $f2++; } elsif ($y > $page + $pageView * $pgok && !$f3) { if ($z) { $out .= " - \n"; } else { $out .= "| -\n"; } $f3++; } $x++; $y = $y + $pageView; $i = $i - $pageView; } } if (!$z) { $out .= "|\n"; } if ($str eq 'skin') { return $out; } else { print $out; } } #------------------------------------------------- # 移動ボタン フォームで表示 #------------------------------------------------- # $target 対象cgi名 # $a 0:GET 1:POST # $i 記事数 # $pageView ページあたり表示記事数 # $str skin:スキン表示 # $p** 追加送信項目 sub mvbtn4 { my ($target,$a,$i,$pageView,$str,$p11,$p12,$p21,$p22,$p31,$p32) = @_; my ($mtd,$out,$p1l,$p1f,$p2l,$p2f,$p3l,$p3f); if ($a || $miruPass) { $mtd = 'POST'; } else { $mtd = 'GET'; } if ($p11 ne '' && $p12 ne '') { $p1l = "&$p11=$p12"; $p1f = qq ||; } if ($p21 ne '' && $p22 ne '') { $p2l = "&$p21=$p22"; $p2f = qq ||; } if ($p31 ne '' && $p32 ne '') { $p3l = "&$p31=$p32"; $p3f = qq ||; } my $back = $page - $pageView; my $next = $page + $pageView; if ($back >= 0 || $next < $i) { $out .= qq |\n|; my $last2 = int($i/$pageView); # 最終ページ番号 if ($i/$pageView == int($i/$pageView)) { $last2 -= 1; } my $last = $last2 * $pageView; # 最終ページ始まり番号 if ($miruPass || $mtd eq 'POST') { # 閲覧者限定時 if ($back < 0) { # 1ページ表示中 $out .= qq |\n|; } elsif ($back == 0) { # 2ページ表示中 $out .= qq |\n EOM } elsif ($back > 0) { # 3ページ以降表示中 $out .= qq |\n EOM } if ($next > $last) { # 最後ページ表示中 $out .= qq |\n|; } elsif ($next == $last) { # 最後の1ページ前表示中 $out .= qq |\n EOM } elsif ($next < $i) { # 最後の2ページ前以前表示中 $out .= qq |\n EOM } } else { # 閲覧者限定時以外 $out .= qq |\n|; } $out .= qq |\n|; $out .= qq |\n|; $out .= qq | EOM } else { $out .= qq |\n|; } if ($mode eq 'past' && $pageLink2 ne '') { $out .= qq |\n|; } $out .= qq |\n
[最初]\n|; if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= <
\n|; if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= <
EOM if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= < [最後]
\n|; if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= <
\n|; if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= <
EOM if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= < \n|; if ($back < 0) { # 1ページ表示中 $out .= qq |[最初] / |; } elsif ($back == 0) { # 2ページ表示中 $out .= qq |最初(前) / |; } elsif ($back > 0) { # 3ページ以降表示中 $out .= qq |最初 / 前の$pageView件 / |; } if ($next > $last) { # 最後ページ表示中 $out .= qq |[最後]\n|; } elsif ($next == $last) { # 最後の1ページ前表示中 $out .= qq |(次)最後\n|; } elsif ($next < $i) { # 最後の2ページ前以前表示中 $out .= qq |次の$pageView件 / 最後\n|; } $out .= qq |
\n|; if ($room ne '') { $out .= qq |$multi_form\n|; } if ($p1f) { $out .= qq |$p1f\n|; } if ($p2f) { $out .= qq |$p2f\n|; } if ($p3f) { $out .= qq |$p3f\n|; } if ($miruPass) { $out .= qq |\n|; } # 閲覧者限定時 $out .= < (次のページはありません) [$pageLink2]
\n|; if ($str eq 'skin') { return $out; } else { print $out; } } #------------------------------------------------- # 入室画面 #------------------------------------------------- sub enter { local($cpwd); # クッキー取得 if ($miruPass) { ($cpwd) = &get_cookie('GATE'); } &header; &uemini_link; &ue_msg("#800080","#FFFFFF","管理モード"); if (!$mspass) { &error("マスターパスワードが設定されていません"); } print <

希望の操作の欄にパスワードを入力してください

記 事 管 理
EOM if ($room ne '') { print qq |$multi_form\n|; } if ($miruPass) { print <

マスターパスワード

EOM } else { print < EOM } print <
設定データ編集
EOM if ($room ne '') { print qq |$multi_form\n|; } if ($miruPass) { print <

マスターパスワード

EOM } else { print < EOM } print <
EOM exit; } #------------------------------------------------- # 絵文字入力フォーム #------------------------------------------------- sub em_form { $ihtm = "$ijf" . "i.htm"; $j1htm = "$ijf" . "j1.htm"; $e1htm = "$ijf" . "e1.htm"; } #------------------------------------------------- # ホスト名とUserAgentの表示 #------------------------------------------------- sub HosUaOut { local ($ho,$UA) = split(/<:>/,$_[0]); print qq |
\n|; if ($HosUaOut == 1 || $HosUaOut == 3) { # 暗号化 if ($HosUaEnc == 1 || $HosUaEnc == 3) { $ho = &HosUaEnc($ho); $ho = "ホスト:$ho"; } print qq |$ho\n|; } if ($HosUaOut == 3 && $UA) { print qq |
|; } if (($HosUaOut == 2 || $HosUaOut == 3) && $UA) { if ($telAgentPC == 1) { $UA = &telAgent($UA); } # 携帯機種名取得 # 暗号化 if ($HosUaEnc == 2 || $HosUaEnc == 3) { $UA = &HosUaEnc($UA); $UA = "ブラウザ:$UA"; } print qq |$UA\n|; } print qq |
\n|; } #------------------------------------------------- # 動画貼り付け 1 #------------------------------------------------- # Special Thaks !!! # ようつべリンカーR # http://afox.s206.xrea.com/0ch_youtube_r_pl.20070620.txt # YouTubeのURLが入力されたら再生画面を表示させたい # http://katsubemakito.net/cgiperl/a-la-carte/youtubeurl-1.html sub douga_on1 { my $com = shift; # YouTube my $pturl = 'http://((jp|www)\.)?youtube\.com/watch\?'; my $tar = 'v=([\w\_\-]{1,})'; my $opt1 = '[\w\_\-\&=;+]*'; my $opt2 = '[\w\_\-\&=;+<>]{1,}'; # 閲覧者限定・auto_link有効時 (オプション指定時サポート) if ($com =~ m|$pturl$opt2<\/a>|i) { $com =~ s|($pturl$opt2)|&youtube_on($1,$5)|ieg; # auto_link有効時 (オプション指定時サポート) } elsif ($com =~ m|$pturl$opt2|i) { $com =~ s|($pturl$opt2)|&youtube_on($1,$4)|ieg; # auto_link無効時 (オプション指定時サポート) } elsif ($com =~ m|$pturl$opt1$tar$opt1|i) { $com =~ s|($pturl$opt1$tar$opt1)|&youtube_on($1,$4)|ieg; } # ニコニコ動画 # 以前はこれで行けてたけど、ダメになったみたい # $com =~ s|http://(www\.)?nicovideo.jp/watch/([^<]+)|
|g; $pturl = 'http://(www\.)?nicovideo.jp/watch/'; # 閲覧者限定・auto_link有効時 if ($com =~ m|$pturl([\w<>]+)|i) { $com =~ s|($pturl([\w<>]+))|&nico_on($1,$4,2)|ieg; # auto_link有効時 } elsif ($com =~ m|$pturl([\w<>]+)|i) { $com =~ s|($pturl([\w<>]+))|&nico_on($1,$3,1)|ieg; # auto_link無効時 } elsif ($com =~ m|$pturl(\w+)|i) { $com =~ s|($pturl(\w+))|&nico_on($1,$3)|ieg; } # GyaOうたブロ $pturl = 'http://www.gyao.jp/utablog/play.php\?'; # 閲覧者限定・auto_link有効時 if ($com =~ m|$pturl([\w<>=]+)|i) { $com =~ s|($pturl([\w<>=]+))|&utablog_on($1,$3)|ieg; # auto_link有効時 } elsif ($com =~ m|$pturl([\w<>=]+)|i) { $com =~ s|($pturl([\w<>=]+))|&utablog_on($1,$2)|ieg; # auto_link無効時 } elsif ($com =~ m|${pturl}contents_id=(uta\d{1,})|i) { $com =~ s|(${pturl}contents_id=(uta\d{1,}))|&utablog_on($1,$2)|ieg; } if (!$dougaOn2) { # 動画貼り付け機能2が有効ならそちらでのみ実行 $com =~ s|
||g; # 間が空いてしまうから。 } return $com; } #------------------------------------------------- # 動画貼り付け YouTube置換 #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub youtube_on { my ($ut_url,$ut_nam) = @_; # my $str = qq |

[$ut_url]
|; my $str; # プレーヤーを埋め込み if ($dougaOn1 == 1) { # HD再生対応 $str = qq |

[$ut_url]
|; # ポップアップ再生 } else { my $tmp = $miruPass ? "$script?mode=jump&url=http://www.youtube.com/v/$ut_nam" : "http://www.youtube.com/v/$ut_nam"; #-# ↓これだとWindow再使用の時にアクティブにならない #-# my $str = qq |

[$ut_url]
|; my $tmp2 = "'$tmp'"; $str = qq |

[$ut_url]
|; } return $str; } #------------------------------------------------- # 動画貼り付け ニコニコ動画置換 #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub nico_on { my ($ut_url,$ut_nam,$tmp) = @_; if ($tmp == 1) { $tmp = qq|[→アカウントない人はこっち]|; } elsif ($tmp == 2) { $tmp = qq|[→アカウントない人はこっち]|; } else { $tmp = qq|[アカウントない人は→http://dic.nicovideo.jp/v/$ut_nam]|; } my $str; # プレーヤーを埋め込み if ($dougaOn1 == 1) { $str = qq |

[$ut_url]
$tmp
|; # ポップアップ再生 } else { $str = qq |
[$ut_url]
$tmp
|; } return $str; } #------------------------------------------------- # GyaOうたブロ #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub utablog_on { my ($ut_url,$ut_nam) = @_; my $tmp = $miruPass ? "$script?mode=jump&url=http://www.gyao.jp/utablog/wmv.php?contents_id=$ut_nam" : "http://www.gyao.jp/utablog/wmv.php?contents_id=$ut_nam"; my $tmp2 = "'$tmp'"; my $str = qq |

[$ut_url]
|; } #------------------------------------------------- # 動画貼り付け 2 #------------------------------------------------- # asf asx wmv mov mp4 swf rm ram flvファイルのURL sub douga_on2 { my $com = shift; my $pturl = 'http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+'; my $pturl2 = 'http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,\<\>]+'; # flv player # yybbs.cgiの設置ディレクトリにflvplayer.swfが必要です。 # ↑Rev2.38、2.38Mで↓に変更 # flvplayer.swfのパスは[20]拡張設定2−flvplayer.swfのパスで指定します。 # 閲覧者限定・auto_link有効時 if ($com =~ m|$pturl2\.(
)?f(
)?l(
)?v
|i) { $com =~ s|($pturl2\.(
)?f(
)?l(
)?v
)|&flvplayer_on($1,$4)|ieg; # auto_link有効時 } elsif ($com =~ m|$pturl2\.(
)?f(
)?l(
)?v
|i) { $com =~ s|($pturl2\.(
)?f(
)?l(
)?v
)|&flvplayer_on($1,$2)|ieg; # auto_link無効時 } elsif ($com =~ m|$pturl\.flv|i) { $com =~ s|($pturl\.flv)|&flvplayer_on($1,$1)|ieg; } # QuickTime # 閲覧者限定・auto_link有効時 if ($com =~ m/$pturl2\.((
)?m(
)?o(
)?v|(
)?m(
)?p(
)?4)<\/a>/i) { $com =~ s/(
$pturl2\.((
)?m(
)?o(
)?v|(
)?m(
)?p(
)?4|)<\/a>)/$dougaOn2 == 1 ? &quicktime_on($1,$4) : &extplayer_on($1,$4)/ieg; # auto_link有効時 } elsif ($com =~ m/
$pturl2\.((
)?m(
)?o(
)?v|(
)?m(
)?p(
)?4)<\/a>/i) { $com =~ s/(
$pturl2\.((
)?m(
)?o(
)?v|(
)?m(
)?p(
)?4)<\/a>)/$dougaOn2 == 1 ? &quicktime_on($1,$2) : &extplayer_on($1,$2)/ieg; # auto_link無効時 } elsif ($com =~ m/$pturl\.(mov|mp4)/i) { $com =~ s/($pturl\.(mov|mp4))/$dougaOn2 == 1 ? &quicktime_on($1,$1) : &extplayer_on($1,$1)/ieg; } if ($dougaOn2 == 2) { # mp3 # 閲覧者限定・auto_link有効時 if ($com =~ m/
$pturl2\.(
)?m(
)?p(
)?3<\/a>/i) { $com =~ s/(
$pturl2\.(
)?m(
)?p(
)?4<\/a>)/&extplayer_on($1,$4)/ieg; # auto_link有効時 } elsif ($com =~ m/
$pturl2\.(
)?m(
)?p(
)?3<\/a>/i) { $com =~ s/(
$pturl2\.(
)?m(
)?p(
)?3<\/a>)/&extplayer_on($1,$2)/ieg; # auto_link無効時 } elsif ($com =~ m/$pturl\.mp3/i) { $com =~ s/($pturl\.mp3)/&extplayer_on($1,$1)/ieg; } } # 以下のファイルは変換しない # 外部プレーヤーでポップアップ再生 if ($dougaOn2 == 2) { $com =~ s|
||g; # 間が空いてしまうから。 return $com; } # Windows Media Player # 閲覧者限定・auto_link有効時 if ($com =~ m/
$pturl2\.((
)?a(
)?s(
)?(f|x)|(
)?w(
)?m(
)?v)<\/a>/i) { $com =~ s/(
$pturl2\.((
)?a(
)?s(
)?(f|x)|(
)?w(
)?m(
)?v|)<\/a>)/&wmp_on($1,$4)/ieg; # auto_link有効時 } elsif ($com =~ m/
$pturl2\.((
)?a(
)?s(
)?(f|x)|(
)?w(
)?m(
)?v)<\/a>/i) { $com =~ s/(
$pturl2\.((
)?a(
)?s(
)?(f|x)|(
)?w(
)?m(
)?v|)<\/a>)/&wmp_on($1,$2)/ieg; # auto_link無効時 } elsif ($com =~ m/$pturl\.(as(f|x)|wmv)/i) { $com =~ s/($pturl\.(as(f|x)|wmv))/&wmp_on($1,$1)/ieg; } # flash player # 閲覧者限定・auto_link有効時 if ($com =~ m|
$pturl2\.(
)?s(
)?w(
)?f
|i) { $com =~ s|($pturl2\.(
)?s(
)?w(
)?f
)|&flashplayer_on($1,$4)|ieg; # auto_link有効時 } elsif ($com =~ m|$pturl2\.(
)?s(
)?w(
)?f
|i) { $com =~ s|($pturl2\.(
)?s(
)?w(
)?f
)|&flashplayer_on($1,$2)|ieg; # auto_link無効時 } elsif ($com =~ m|$pturl\.swf|i) { $com =~ s|($pturl\.swf)|&flashplayer_on($1,$1)|ieg; } # Real Player # 閲覧者限定・auto_link有効時 if ($com =~ m|$pturl2\.(
)?r(
)?a?(
)?m
|i) { $com =~ s|($pturl2\.(
)?r(
)?a?(
)?m
)|&realplayer_on($1,$4)|ieg; # auto_link有効時 } elsif ($com =~ m|$pturl2\.(
)?r(
)?a?(
)?m
|i) { $com =~ s|($pturl2\.(
)?r(
)?a?(
)?m
)|&realplayer_on($1,$2)|ieg; # auto_link無効時 } elsif ($com =~ m|$pturl\.ra?m|i) { $com =~ s|($pturl\.ra?m)|&realplayer_on($1,$1)|ieg; } $com =~ s|
||g; # 間が空いてしまうから。 return $com; } #------------------------------------------------- # 動画貼り付け Windows Media Player置換 #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub wmp_on { my ($ut_url,$ut_nam) = @_; my $str = qq |

[$ut_url]
|; } #------------------------------------------------- # 動画貼り付け QuickTime置換 #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub quicktime_on { my ($ut_url,$ut_nam) = @_; my $str = qq |

[$ut_url]
|; } #------------------------------------------------- # 動画貼り付け flash player置換 #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub flashplayer_on { my ($ut_url,$ut_nam) = @_; my $str = qq |

[$ut_url]
|; } #------------------------------------------------- # 動画貼り付け Real Player置換 #------------------------------------------------- # $ut_url リンク先 # $ut_nam 動画指定 sub realplayer_on { my ($ut_url,$ut_nam) = @_; my $id = int(rand(10000)) . substr($ut_nam,-15,-3) . int(rand(10000)); $id =~ s/\W//g; my $str = qq |


[$ut_url]
|; } #------------------------------------------------- # 動画貼り付け flv player置換 #------------------------------------------------- # Special Thanks! # FLVやMP3をWEB上で再生する(その3) - JW FLV Media Player 4.x FLVやMP3をWEB上で再生する(その3) - JW FLV Media Player 4.x # http://www.nobodyplace.com/mutter/2009/02/09/172129.php # yybbs.cgiの設置ディレクトリにflvplayer.swfが必要です。 # ↑Rev2.38、2.38Mで↓に変更 # flvplayer.swfのパスは[20]拡張設定2−flvplayer.swfのパスで指定します。 # $ut_url リンク先 # $ut_nam 動画指定 sub flvplayer_on { my ($ut_url,$ut_nam) = @_; my $str; # プレーヤーを埋め込み if ($dougaOn2 == 1) { #-# ↓これだとflv以外別のアプリで再生しようとする #-# $str = qq |

[$ut_url]
|; $str = qq|

[$ut_url]
|; # flvplayer.swfでポップアップ再生 } else { my $tmp; my $pturl = 'http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+'; my $pturl2 = 'http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,\<\>]+'; # 閲覧者限定・auto_link有効時 if ($ut_url =~ m|$pturl2\.(
)?f(
)?l(
)?v
|i) { $tmp = $1; # auto_link有効時 } elsif ($ut_url =~ m|$pturl2\.(
)?f(
)?l(
)?v
|i) { $tmp = $1; # auto_link無効時 } elsif ($com =~ m|($pturl\.flv)|i) { $tmp = $1; } my $tmp2 = "'$flvplayer?file=$ut_nam'"; $str = qq |
POPUP再生
[$ut_url]
|;# ポップアップ } return $str; } #------------------------------------------------- # 動画貼り付け 外部プレーヤーでポップアップ再生 #------------------------------------------------- sub extplayer_on { my ($ut_url,$ut_nam) = @_; my ($str,$tmp); my $pturl = 'http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,]+'; my $pturl2 = 'http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\,\<\>]+'; # 閲覧者限定・auto_link有効時 if ($ut_url =~ m|$pturl2\..+|i) { $tmp = $1; # auto_link有効時 } elsif ($ut_url =~ m|$pturl2\..+|i) { $tmp = $1; # auto_link無効時 } elsif ($com =~ m|($pturl\.\w{2,3})|i) { $tmp = $1; } my $tmp2 = "'$script?${multi_link}mode=extplay&file=$ut_nam'"; $str = qq |
POPUP再生
[$ut_url]
|; return $str; } #------------------------------------------------- # 携帯のみのサブルーチン #------------------------------------------------- sub com_seigen { &error("無効な機能\の呼び出しです(ip-1)"); } sub keitai_col { &error("無効な機能\の呼び出しです(ip-2)"); } sub keitai_ico { &error("無効な機能\の呼び出しです(ip-3)"); } sub FileOuti { &error("無効な機能\の呼び出しです(ip-4)"); } sub tel_half { &error("無効な機能\の呼び出しです(ip-5)"); } sub HosUaOuti { &error("無効な機能\の呼び出しです(ip-6)"); } sub UtnCheck { &error("無効な機能\の呼び出しです(ip-7)"); } sub color1 { &error("無効な機能\の呼び出しです(ip-8)"); } sub color3 { &error("無効な機能\の呼び出しです(ip-9)"); } sub color2 { &error("無効な機能\の呼び出しです(ip-10)"); } sub mvbtn4_2 { &error("無効な機能\の呼び出しです(ip-11)"); } 1;