⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showboard.pl

📁 这个社区是虚拟社区使用的程序
💻 PL
📖 第 1 页 / 共 2 页
字号:
###############################################################################
# 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 + -