📄 showboard.pl
字号:
###############################################################################
# ShowBoard.pl #
###############################################################################
# UltraBoard Ver. 1.61 by UltraScripts.com #
# Scripts written by Jacky W.W. Yung, WebMaster@UltraScripts.com #
# Available from http://www.UltraScripts.com/UltraBoard/ #
# --------------------------------------------------------------------------- #
# PROGRAM NAME : UltraBoard #
# VERSION : 1.61 #
# LAST MODIFIED : 30/06/1999 #
# =========================================================================== #
# COPYRIGHT NOTICE : #
# #
# Copyright (c) 1999 Jacky Yung. All Rights Reserved. #
# #
# This program is free software; you can change or modify it as you see fit. #
# However, modified versions cannot be sold or distributed. You cannot alter #
# the copyright and "powered by" notices throughout the scripts. These #
# notices must be clearly visible to the end users. #
# #
# WARRANTY DISCLAIMER: #
# #
# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT #
# ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR #
# FITNESS FOR A PARTICULAR PURPOSE. #
###############################################################################
###############################################################################
# ShowBoard #
###############################################################################
sub ShowBoard {
#use POSIX qw(&ceil);
if ($DisplayFront eq "") {
print "Location: $URLSite\n\n";
exit;
}
my ($HTML, $Menu, $List);
$ColSpan=5;
unless (-e "$DBPath/$in{'Board'}/board.list") {
&ShowError("ACCESS DENIED","The board that you want access is not found.<br>Please contact the webmaster (".&Link("mailto:$EmailAddress","","").$EmailAddress."</a>".") for more information.");
}
open(BOARD,"$DBPath/$in{'Board'}/board.list")||&CGIError("Couldn't open/read the board.list file<br>\nPath: $DBPath/$in{'Board'}<br>\nReason : $!");
flock(BOARD,1) if ($FLock);
@BOARD_DATA=<BOARD>;
close(BOARD);
@BoardInfo=&DecodeDBOutput($BOARD_DATA[0]);
if ($Group ne "administrator") {
if ($BoardInfo[5] ne "Active") {
&ShowError("ACCESS DENIED","The \"$BoardInfo[1]\" board is currently inactive.<br>Please contact the webmaster (".&Link("mailto:$EmailAddress","","").$EmailAddress."</a>".") for more information.");
}
if (($BoardInfo[6] eq "Private")&&($Group eq "Guest")) {
print "Location: UltraBoard.$Ext?Action=SignIn&Ref=ShowBoard&Board=$in{'Board'}&Idle=$in{'Idle'}&Sort=$in{'Sort'}&Order=$in{'Order'}&Page=$in{'Page'}\n\n";
}elsif ($BoardInfo[6] eq "Private") {
require "$DBPath/$in{'Board'}/Access.db";
if (!exists ($Access{$MemberData[3]})) {
print "Location: UltraBoard.$Ext?Action=SignIn&Ref=ShowBoard&Board=$in{'Board'}&Idle=$in{'Idle'}&Sort=$in{'Sort'}&Order=$in{'Order'}&Page=$in{'Page'}\n\n";
}else{
$MemberStatus=$Access{$MemberData[3]};
}
}
}
###############################################################################
# sort messages
&GetCookies();
$NowTime=time;
if ($in{'Idle'} eq "") {
if ($Cookies{'Idle'} ne "") {
$in{'Idle'}=$Cookies{'Idle'};
} else {
$in{'Idle'}=$ShowTopics;
}
}
if ($in{'Sort'} eq "") {
if ($Cookies{'Sort'} ne "") {
$in{'Sort'}=$Cookies{'Sort'};
} else {
$in{'Sort'}=$SortTopics;
}
}
if ($in{'Order'} eq "") {
if ($Cookies{'Order'} ne "") {
$in{'Order'}=$Cookies{'Order'};
} else {
$in{'Order'}=$SortOrder;
}
}
%PostID={};
if ($in{'Idle'} eq "0") {
for (my ($db)=1;$db<=$#BOARD_DATA;$db++) {
@PostInfo=&DecodeDBOutput($BOARD_DATA[$db]);
if ($PostInfo[5]) {
$PostInfo[4]=(&GetMemberData($PostInfo[5]))[1];
$MemberInfo[3]=(&GetMemberData($PostInfo[5]))[3];
$MemberInfo[22]=(&GetMemberData($PostInfo[5]))[22];
}
$PostID{$PostInfo[1]}=join($Spliter,@PostInfo);
$SortField{$PostInfo[1]}=lc($PostInfo[$in{'Sort'}]);
#$PostID{$PostInfo[1]}=$BOARD_DATA[$db];
}
}else{
$IdleTime=86400*$in{'Idle'};
for (my ($db)=1;$db<=$#BOARD_DATA;$db++) {
@PostInfo=&DecodeDBOutput($BOARD_DATA[$db]);
if (($PostInfo[0]+$IdleTime)>$NowTime) {
if ($PostInfo[5]) {
$PostInfo[4]=(&GetMemberData($PostInfo[5]))[1];
}
$PostID{$PostInfo[1]}=join($Spliter,@PostInfo);
$SortField{$PostInfo[1]}=lc($PostInfo[$in{'Sort'}]);
}
}
}
if ($in{'Order'} eq "Ascend") {
$Sort{$in{'Sort'}}=&Image("$URLImages/SortAscend.gif","","","","","0","");
if (($in{'Sort'} eq "2")||($in{'Sort'} eq "0")) {
@SortedList=sort{$SortField{$a} <=> $SortField{$b}} keys %SortField;
}else{
@SortedList=sort{$SortField{$a} cmp $SortField{$b}} keys %SortField;
}
}else{
$Sort{$in{'Sort'}}=&Image("$URLImages/SortDescend.gif","","","","","0","");
if (($in{'Sort'} eq "2")||($in{'Sort'} eq "0")) {
@SortedList=sort{$SortField{$b} <=> $SortField{$a}} keys %SortField;
}else{
@SortedList=sort{$SortField{$b} cmp $SortField{$a}} keys %SortField;
}
}
###############################################################################
# $Title.=&Td("","","","","","","","","").&Font($FontFace,$HeaderTextSize,$HeaderTextColor)."<b>讨论</b>$Sort{'1'}"."</font>"."</td>".
$Title.=&Td("","","","","","","","","").&Font($FontFace,$HeaderTextSize,$HeaderTextColor).
&Link("UltraBoard.$Ext?Action=NewPost&Post=$in{'Post'}&Board=$in{'Board'}&Idle=$in{'Idle'}&Sort=$in{'Sort'}&Order=$in{'Order'}&Page=$in{'Page'}&Session=$SessionID","","",
"粘贴新讨论")."<img src=/vrcdata/Images/Post.gif border=0><span style=\"letter-spacing: 2\"><font color=yellow>我要发表新的言论</font>"."</a> - ".
"回复他人帖子请进入帖子内容 </span>".
&Image("$URLImages/Folder.gif","","","","","0","").
"</td>".
&Td("","","","","","","nowrap","","").&Font($FontFace,$HeaderTextSize,$HeaderTextColor)."<center><b>回复数</b>$Sort{'2'}</center>"."</font>"."</td>".
&Td("","","","","","","","").&Font($FontFace,$HeaderTextSize,$HeaderTextColor)."<center><b>浏览数</b>$Sort{'2'}</center>"."</font>"."</td>".
&Td("","","","","","","","","").&Font($FontFace,$HeaderTextSize,$HeaderTextColor)."<b>最后回复</b>$Sort{'0'}"."</font>"."</td>";
###############################################################################
# list messages
if ($UBMessageIcon) {
open(ICON,"$VarsPath/mIcons.txt");
flock(ICON,2) if ($FLock);
my (@Icons)=<ICON>;
close(ICON);
if ($#Icons>=0) {
%TopicIcon=();
for ($c=0;$c<=$#Icons;$c++) {
@IconData=split (/\|\^\|/, $Icons[$c]);
$TopicIcon{$IconData[0]}=$IconData[2];
}
}
}
if (!$in{'Page'}) {
$in{'Page'}=0;
}
$RowColor=$RowOddBGColor;
$FirstPost=$NumPage*$in{'Page'};
$LastPost=$NumPage*$in{'Page'}+$NumPage;
if ($LastPost > ($#SortedList+1)) {
$LastPost=$#SortedList+1;
}
for (my ($i)=$FirstPost;$i<$LastPost;$i++) {
@PostInfo=&DecodeDBOutput($PostID{$SortedList[$i]});
# add line showboard
$Post=$PostInfo[1];
open(POST,"$DBPath/$in{'Board'}/$Post.post")||&CGIError("Couldn't open/read the $Post.post file<br>\nPath: $DBPath/$in{'Board'}<br>\nReason : $!");
flock(POST,1) if ($FLock);
@POST_DATA=<POST>;
close(POST);
@PostStat=&DecodeDBOutput($POST_DATA[1]);
$TotalShow=$PostStat[1];
@PostStat=&DecodeDBOutput($POST_DATA[0]);
$PostName=$PostStat[2];
# add line showboard
# unless (-e "$MembersPath/$PostName.info") {
# &ShowError("FILE PROBLEM","The \"$PostName\" Profile is not found.<br>Please contact the webmaster (".&Link("mailto:$EmailAddress","","").$EmailAddress."</a>".") for more information.");
# }
@MemberInfo=&GetMemberData($PostName);
open(GROUP,"$MembersPath/Groups.db")||&CGIError("Couldn't open/read the Groups.db file<br>\nPath: $MembersPath<br>\nReason : $!");
flock(GROUP,1) if ($FLock);
while (<GROUP>) {
@Group=&DecodeDBOutput($_);
if ($MemberInfo[3] eq $Group[0]) {
$Status=$Group[1];
last;
}
}
close(GROUP);
$Rank="";
($MemberInfo23[0], $MemberInfo23[1]) = split(/\|\^\|/, $MemberInfo[23]);
open(GROUP,"$MembersPath/$MemberInfo[3].rank")||&CGIError("Couldn't open/read the $MemberInfo[0] $MemberInfo[3].rank file<br>\nPath: $MembersPath<br>\nReason : $!");
flock(GROUP,1) if ($FLock);
while (<GROUP>) {
@Group=&DecodeDBOutput($_);
if ($MemberInfo23[0] eq $Group[0]) {
$Rank=$Group[1];
last;
}
}
close(GROUP);
open(GROUP,"$MembersPath/Groups.db")||&CGIError("Couldn't open/read the Groups.db file<br>\nPath: $MembersPath<br>\nReason : $!");
flock(GROUP,1) if ($FLock);
while (<GROUP>) {
@Group=&DecodeDBOutput($_);
if ($MemberData[3] eq $Group[0]) {
$StatusUser=$Group[1];
last;
}
}
close(GROUP);
# end line showboard
if ($Cookies{"B_".$in{'Board'}."_TIME"}<$PostInfo[0]) {
$NewIcon=&Image("$URLImages/New.gif","","","","","0","");
$MessageStatus="此讨论有新的内容 !";
}else{
$NewIcon="";
$MessageStatus="您已经看过此讨论 !";
}
$MessageIcon=&Image("$URLImages/Message.gif","","","","","0",$PostInfo[7]);
if ($PostInfo[6] ne ""){
$MessageIcon=&Image("$URLImages/LockedMessage.gif","","","","","0",$PostInfo[7]);
$MessageStatus="此讨论已经被关闭 !";
}elsif ($PostInfo[8]) {
$MessageIcon=&Image($TopicIcon{$PostInfo[8]},"","","","","0",$PostInfo[7]);
}
$List.=
&Tr("","",$RowColor).
&Td("55%","","","","","","",$ColumnOddBGColor,"").
&Table("100%","CENTER","0","0","","").
&Tr("","","").
&Td("20","","","","","","","","").
&Link("UltraBoard.$Ext?Action=ShowPost&Board=$in{'Board'}&Post=$PostInfo[1]&Idle=$in{'Idle'}&Sort=$in{'Sort'}&Order=$in{'Order'}&Page=$in{'Page'}&Session=$SessionID",
"",$PostInfo[7],
"$MessageStatus").
$MessageIcon.
"</a>".
"</td>".
&Td("100%","","","","","","","","").
"<font color=800000><span style=\"font:9pt\">[ </span></font>";
if ($PostInfo[5]) {
$List.= &Link("UltraBoard.$Ext?Action=ShowProfile&ID=$PostInfo[5]&Board=$in{'Board'}&Idle=$in{'Idle'}&Sort=$in{'Sort'}&Order=$in{'Order'}&Page=$in{'Page'}&Session=$SessionID","Profile","",
"查看 $PostInfo[4] ($PostInfo[5]) 的个人信息");
if ($MemberInfo[22] eq "male"){
$List.= "<font color=navy>$Status$Rank</font><font color=red>*</font><font color=smalt>$PostInfo[4]</font>";
}
elsif ($MemberInfo[22] eq "female"){
$List.= "<font color=navy>$Status$Rank</font><font color=red>*</font><font color=claret>$PostInfo[4]</font>";
}
elsif (!($MemberInfo[22])){
$List.= "<font color=navy>$Status$Rank</font><font color=red>*</font><font color=blue>$PostInfo[4]</font>";
}
$List.="</a><font color=800000><span style=\"font:9pt\"> ]:</span></font>";
}else{
$List.= "($PostInfo[4])";
}
$List.= &Font($FontFace,$TextSize,$TextColor)." ".
&Link("UltraBoard.$Ext?Action=ShowPost&Board=$in{'Board'}&Post=$PostInfo[1]&Idle=$in{'Idle'}&Sort=$in{'Sort'}&Order=$in{'Order'}&Page=$in{'Page'}&Session=$SessionID",
"",$PostInfo[7],
"查看 ($PostInfo[3])").
$PostInfo[3].
"</a>".
" ".$NewIcon.
"</font>".
"</td>".
"</tr>".
"</table>".
"</td>".
&Td("10%","","","","","","",$ColumnOddBGColor,"").
&Font($FontFace,$TextSize,$TextColor).
"<center>".$PostInfo[2]."</center>".
"</font>".
"</td>".
&Td("10%","","","","","","",$ColumnEvenBGColor,"").
&Font($FontFace,$TextSize,$TextColor).
"<center>".$TotalShow."</center>".
"</font>".
"</td>".
&Td("25%","","","","","","",$ColumnEvenBGColor,"").
&Font($FontFace,$TextSize,$TextColor).
&GetDate($PostInfo[0],$DateTextColor,$TimeTextColor,$DateTextSize,$TimeTextSize).
"</font>".
"</td>".
"</tr>";
if ($RowColor eq $RowEvenBGColor) {
$RowColor=$RowOddBGColor;
}else{
$RowColor=$RowEvenBGColor;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -