#!/usr/bin/speedy -- -M2 -r5 -t5 #administration view input form use strict; use CGI; use lib qw(../lib ./); use HTML::Template::Pro; use Unicode::Japanese; use Image::Magick; use COMMON; use DB_File; use Fcntl qw(:DEFAULT :flock); use POSIX; use utf8; require "config.pm"; my $bbs = new COMMON; my $bbsno = $config::bbsno; my $page = $bbs->cgi()->param('page'); unless($bbs->isset($page)){ $page = 1; } my (%BBSDirName, %BBSName, @bbs, %ImageLayout, @ImageLayout, %ImageWidth, @ImageWidth, @IconName); $bbs->BBSName(\%BBSName); $bbs->BBSDirName(\%BBSDirName); $bbs->ImageLayout(\%ImageLayout); $bbs->ImageWidth(\%ImageWidth); my $bbsdir = $BBSDirName{$bbsno}; my $err_flg = 0; my $ImageFlg = 0; my (@msg, $msg); unless($bbs->isset($bbsno)){ $err_flg = 1; my $msg = "掲示板を選択してください"; push(@msg, $msg); } unless(-e "../$bbsdir"){ $err_flg = 1; my $msg = "掲示板を登録してあるディレクトリ($bbsdir)がありません。"; push(@msg, $msg); } if($err_flg == 1){ $bbs->err_html(@msg); exit; } my $useImase = $config::useImase; my $RssMode = $config::RssMode; my $useIcon = $config::useIcon; my $ImgCnt = $config::ImgCnt; my %IconName = %config::IconName; my %IconImage = %config::IconImage; my $logfile = $bbs->LogFile($bbsno); my %LogData = ( "LOGFILE" => $config::LogPath. $logfile, ); #Log Read $bbs->ImageWidth(\%ImageWidth); $bbs->ImageLayout(\%ImageLayout); my @bbs; my @Log; my $tied = tie(@Log, "DB_File", $LogData{"LOGFILE"}, O_RDONLY, 0666, $DB_RECNO)||die $!; my ($startNo, $endNo, $viewLine, $LogCnt, $pageCnt); $viewLine = $config::viewLine; $LogCnt = $tied->length; $pageCnt = ceil($LogCnt/$viewLine); if($page > $pageCnt){ $page = 1; } $startNo = (($page - 1) * $viewLine); $endNo = ($page * $viewLine) + 1; my $viewCnt = 0; foreach (reverse(@Log)){ my %bbs; my ($logno, $Subject, $LogDate, $Comment, $ImageFlg, $LayOut, $Icon, $Imgsize) = split(/\t/, $_); $viewCnt++; if( ($viewCnt > $startNo) && ($viewCnt < $endNo) ){ $bbs{subject} = $Subject; $bbs{bbsdate} = $LogDate; $bbs{comment} = $Comment; $bbs{imgflg} = $ImageFlg; if($Icon != 0){ if($useIcon == 1){#text icon $bbs{text} = 1; $bbs{img} = 0; $bbs{IconName} = $IconName{$Icon}; }elsif($useIcon == 2){#image icon $bbs{text} = 0; $bbs{img} = 1; $bbs{IconName} = $IconName{$Icon}; $bbs{IconImage} = $IconImage{$Icon}; $bbs{icondir} = $config::IconDir; $bbs{bbsdir} = $bbsdir; }else{ $useIcon = 0; } } $bbs{useIcon} = $useIcon; my (@ImgLog, $ImgLogFile, @SplitLog, @ViewLog); $ImgLogFile = $bbs->ImageLogFile($bbsno); $ImgLogFile = $config::LogPath. $ImgLogFile; my $tied = tie(@ImgLog, "DB_File", $ImgLogFile, O_RDONLY, 0666, $DB_RECNO)||die $!; my $length = $tied->length; for (my $i = 0; $i < $length; $i++){ @SplitLog = split(/\t/, $ImgLog[$i]); if(($SplitLog[1] == $bbsno) && ($SplitLog[2] == $logno )){ push (@ViewLog, $ImgLog[$i]); } } untie(@ImgLog); undef @SplitLog; my @imagecntloop; if($LayOut eq "01"){ $bbs{layout_l} = 0; $bbs{layout_r} = 1; }elsif($LayOut eq "02"){ $bbs{layout_l} = 1; $bbs{layout_r} = 0; }else{ $bbs{layout_l} = 0; $bbs{layout_r} = 0; } for(my $i = 0; $i < $ImgCnt; $i++){ my %imageno; $imageno{imageno} = $i + 1; foreach my $ViewLog(@ViewLog){ @SplitLog = split(/\t/, $ViewLog); if($imageno{imageno} == $SplitLog[3]){ $imageno{imgpath} = "../".$config::UploadDir. $SplitLog[5]; if($SplitLog[4]){ $imageno{imagetitle} = $SplitLog[4]; }else{ $imageno{imagetitle} = $SplitLog[5]; } my $viewWidth; if($ImageWidth{$Imgsize} ne ""){ $viewWidth = $ImageWidth{$Imgsize}; }else{ $viewWidth = $SplitLog[8]; } $imageno{ImageWidth} = $viewWidth; $imageno{bbsno} = $bbsno; $imageno{logno} = $logno; } } push(@imagecntloop, \%imageno); } $bbs{imagecntloop} = \@imagecntloop; push(@bbs, \%bbs); } } untie @Log; my @page; for(my $i = 0 ; $i < $pageCnt; $i++){ my %page; if(($i >= (($page - 1) - 5)) && ($i < ($page + 5) ) ){ if( ($i + 1) == $page){ $page{now} = 1; }else{ $page{now} = 0; } $page{pageNum} = $i + 1; push(@page, \%page); } } my ($pageNext, $pagePrev); if(($page - $viewLine) > 0){ if( (($page - 1) - 5) <= 0){ $pagePrev = 1; }else{ $pagePrev = $page - 1; } }else{ $pagePrev = 0; } if(($page + $viewLine) < $pageCnt){ if(($page + 5) > $pageCnt){ $pageNext = 0; }else{ $pageNext = $page + 1; } }else{ $pageNext = 0; } my $template = "../$bbsdir/template/htmlbody.html"; #my $html_template = $bbs->HtmlTemplate($template); my $html_template = $bbs->HtmlTemplate($template, loop_context_vars=>1); $html_template->param(bbs=>\@bbs); $html_template->param(page=>\@page); $html_template->param(bbsname=>$BBSName{$bbsno}); $html_template->param(pageNext=>$pageNext); $html_template->param(pagePrev=>$pagePrev); print $bbs->cgi->header(-type=>"text/html", -charset=>"utf-8"); print $html_template->output(); 1;