📄 setforums.cgi
字号:
#!/usr/bin/perl
#############################################################
# LeoBoard ver.5000 / LB5000 / 雷傲超级论坛 ver.5000
#
# 版权所有: 雷傲工作室(原蓝宝石软件工作室)
#
# 制作人 : 山鹰糊 (Shining Hu)
# 花无缺 (Ifairy Han)
#
# 主页地址: http://www.CGIer.com/ CGI 编程者之家
# http://www.LeoBoard.com/ 雷傲论坛支持主页
# http://www.leoBBS.com/ 本论坛直通车
#
#############################################################
BEGIN {
$LBPATH = '.';
my $pgm = $0;
$pgm =~s/\\/\//g;
$pgm =~s/^.*\/([^\/]+)$/$1/g;
unless (-e $LBPATH.'/'.$pgm) {
foreach ($0, $ENV{'SCRIPT_FILENAME'}, $ENV{'PATH_TRANSLATED'}) {
s!\\!/!g; s/^(.*)\/[^\/]+$/$1/g;
if (-e $_ . '/' .$pgm) { $LBPATH = $_; last; }
}
}
unshift (@INC, "$LBPATH");
}
use LBCGI;
use File::Copy;
use Image::Info qw(image_info);
$LBCGI::POST_MAX=1024*150;
$LBCGI::DISABLE_UPLOADS = 0;
$LBCGI::HEADERS_ONCE = 1;
require "lbadmin.lib.pl";
require "data/boardinfo.cgi";
require "lb.lib.pl";
require "rebuildlist.pl";
$|++;
#################--- Begin the program ---###################
$thisprog = "setforums.cgi";
$query = new LBCGI;
&ipbanned; #封杀一些 ip
$inmembername = $query->cookie("adminname");
$inpassword = $query->cookie("adminpass");
$inmembername =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
$inpassword =~ s/[\a\f\n\e\0\r\t\|\@\;\#\{\}\$]//isg;
@params = $query->param;
foreach $param(@params) {
$theparam = $query->param($param);
$theparam = &cleaninput("$theparam");
$PARAM{$param} = $theparam;
}
$action = $PARAM{'action'};
$inforum = $PARAM{'forum'};
$incategory = $PARAM{'category'};
$checkaction = $PARAM{'checkaction'};
$inmovetype = $PARAM{'movetype'};
$incforum = $PARAM{'cforum'};
$new_categoryname = $PARAM{'categoryname'};
$new_categorynumber = $PARAM{'categorynumber'};
$new_forumname = $PARAM{'forumname'};
$new_forumdescription = $PARAM{'forumdescription'};
$new_forummoderator = $PARAM{'forummoderator'};
$new_forummoderator =~ s/\, /\,/gi;
$new_forummoderator =~ s/ \,/\,/gi;
$new_catemods = $PARAM{'catemods'};
$new_catemods =~ s/\, /\,/gi;
$new_catemods =~ s/ \,/\,/gi;
$new_htmlstate = $PARAM{'htmlstate'};
$new_idmbcodestate = $PARAM{'idmbcodestate'};
$new_privateforum = $PARAM{'privateforum'};
$new_forumpass = $PARAM{'forumpass'};
$new_hiddenforum = $PARAM{'hiddenforum'};
$new_indexforum = $PARAM{'indexforum'};
$new_startnewthreads = $PARAM{'startnewthreads'};
$new_forumgraphic = $PARAM{'forumgraphic'};
$new_ratings = $PARAM{'ratings'};
$new_teamlogo = $PARAM{'teamlogo'};
$new_teamurl = $PARAM{'teamurl'};
$new_fgwidth = $PARAM{'fgwidth'};
$new_fgheight = $PARAM{'fgheight'};
&getadmincheck;
print header(-charset=>gb2312);
&admintitle;
&getmember("$inmembername");
if (($membercode eq "ad") && ($inpassword eq $password) && ($password ne "") && ($inmembername ne "") && (lc($inmembername) eq lc($membername))) { #s1
my %Mode = (
'addforum' => \&addforum,
'processnew' => \&createforum,
'edit' => \&editform,
'doedit' => \&doedit,
'bakcat' => \&bakcat,
'upcat' => \&upcat,
'addcategory' => \&catform,
'doaddcategory' => \&doaddcategory,
'editcatname' => \&editcatname,
'reordercategories' => \&reordercats,
'updatecount' => \&updatecount,
'recount' => \&recount,
'reorder' => \&reorder,
'delxzb' => \&delxzb,
'delans' => \&delans,
);
if($Mode{$action}) {
$Mode{$action}->();
}
elsif (($action eq "delete") && ($checkaction ne "yes")) { &warning; }
elsif (($action eq "delete") && ($checkaction eq "yes")) { &deleteforum; }
else { &forumlist; }
}
else {
&adminlogin;
}
print qq~</td></tr></table></body></html>~;
exit;
##################################################################################
sub delans {
unlink ("${lbdir}data/news$inforum.cgi");
print qq~<tr><td bgcolor=#FFFFFF align=center colspan=2>
<font color=#990000><b>删除该区所有的公告</b><p>
<font color=#333333>该区所有的公告已经被删除!</font>
</td></tr>
~;
}
sub bakcat {
$filetoopen = "$lbdir" . "data/allforums.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, "$filetoopen");
flock(FILE, 1) if ($OS_USED eq "Unix");
my @forums = <FILE>;
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
my $size=@forums;
if ($size > 0) {
unlink ("${lbdir}data/allforums.pl");
copy("${lbdir}data/allforums.cgi","${lbdir}data/allforums.pl");
chmod (0666,"${lbdir}data/allforums.pl");
print qq~<tr><td bgcolor=#333333 colspan=3><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 论坛管理</b></td></tr>
<tr><td bgcolor=#EEEEEE align=center colspan=2><font color=#333333><b>所有分类已经备份</b><br>当前论坛 $size 个已经备份!</td></tr>
~;
}
else {
print qq~<tr><td bgcolor=#333333 colspan=3><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 论坛管理</b></td></tr>
<tr><td bgcolor=#EEEEEE align=center colspan=2><font color=#333333><b>所有分类没有备份</b><br>当前论坛分类文件没有找到,请使用重新建立论坛主界面功能一次!</td></tr>
~;
}
}
sub upcat {
open(FILE, "${lbdir}data/allforums.pl");
my @forums = <FILE>;
close(FILE);
my $size=@forums;
if ($size > 0) {
unlink ("${lbdir}data/allforums.cgi");
copy("${lbdir}data/allforums.pl","${lbdir}data/allforums.cgi");
chmod (0666,"${lbdir}data/allforums.cgi");
print qq~<tr><td bgcolor=#333333 colspan=3><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 论坛管理</b></td></tr>
<tr><td bgcolor=#EEEEEE align=center colspan=2><font color=#333333><b>所有分类已经还原</b><br>当前论坛 $size 个已经还原!</td></tr>
~;
}
else {
print qq~<tr><td bgcolor=#333333 colspan=3><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 论坛管理</b></td></tr>
<tr><td bgcolor=#EEEEEE align=center colspan=2><font color=#333333><b>所有分类没有还原</b><br>当前备份分类文件没有找到,使用还原前请先备份!</td></tr>
~;
}
}
sub updatecount {
$filetoopen = "$lbdir" . "data/allforums.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, "$filetoopen");
flock(FILE, 1) if ($OS_USED eq "Unix");
my @forums = <FILE>;
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
$totle1 = 0;
$totle2 = 0;
foreach (@forums) {
chomp $_;
(my $tempno,my $no, $no, $no, $no, $no ,$no ,$no ,$no, $no ,$no ,$no,my $threads,my $posts, $no, $no, $no,$no,$no,$no) = split(/\t/,$_);
next if ($tempno !~ /^[0-9]+$/);
$totle1 += $threads;
$totle2 += $posts;
}
require "$lbdir" . "data/boardstats.cgi";
$filetomake = "$lbdir" . "data/boardstats.cgi";
&winlock($filetomake) if ($OS_USED eq "Nt");
if (open(FILE, ">$filetomake")) {
flock(FILE, 2) if ($OS_USED eq "Unix");
print FILE "\$lastregisteredmember = \'$lastregisteredmember\'\;\n";
print FILE "\$totalmembers = \'$totalmembers\'\;\n";
print FILE "\$totalthreads = \'$totle1\'\;\n";
print FILE "\$totalposts = \'$totle2\'\;\n";
print FILE "\n1\;";
close (FILE);
}
&winunlock($filetomake) if ($OS_USED eq "Nt");
print qq~<tr><td bgcolor=#333333 colspan=3><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 论坛管理</b></td></tr>
<tr><td bgcolor=#EEEEEE align=center colspan=2><font color=#333333><b>所有信息已经保存</b><br>
主题总数:$totle1 篇<BR>回复总数:$totle2 篇</td></tr>
~;
}
sub forumlist {
print qq~<tr><td bgcolor=#333333 colspan=3><font color=#FFFFFF><b>欢迎来到论坛管理中心 / 论坛管理</b></td></tr>
<tr><td bgcolor=#FFFFFF colspan=3><font color=#333333>
<b>1.<a href="$thisprog?action=updatecount">重新统计</a>:</b><br>对整个论坛的贴子重新统计总数,这样可以修复首页上总数显示的错误。<br><br>
</td></tr><tr><td bgcolor=#FFFFFF colspan=3><font color=#333333>
<b>2.<a href="$thisprog?action=bakcat">备份论坛分类</a>/<a href="$thisprog?action=upcat">还原论坛分类</a></b><br>
对整个论坛的分类进行备份,这样可以修复所有论坛丢失的情况。(论坛也会自动进行备份和恢复)<br><br>
</td></tr><tr><td bgcolor=#FFFFFF colspan=3><font color=#333333>
<b>3.注意事项:</b><br>在下面,您将看到目前所有的论坛分类。您可以编辑论坛分类名或是增加一个新的论坛到这个分类中。也可以编辑或删除目前存在的论坛。您可以对目前的分类重新进行排列。<br>
</td></tr>
~;
$filetoopen = "$lbdir" . "data/allforums.cgi";
&winlock($filetoopen) if ($OS_USED eq "Nt");
open(FILE, "$filetoopen");
flock(FILE, 1) if ($OS_USED eq "Unix");
@forums = <FILE>;
close(FILE);
&winunlock($filetoopen) if ($OS_USED eq "Nt");
$a = 0;
foreach (@forums) {
$a = sprintf("%09d",$a);
chomp $_;
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc,$forumpass,$hiddenforum,$indexforum,$teamlogo,$teamurl, $fgwidth, $fgheight, $miscadd3, $miscadd4, $miscad5) = split(/\t/,$_);
next if ($forumid !~ /^[0-9]+$/);
$categoryplace = sprintf("%09d",$categoryplace);
my $rearrange = ("$categoryplace\t$a\t$category\t$forumname\t$forumdescription\t$forumid\t$threads\t$posts\t$forumgraphic\t$ratings\t$misc\t$forumpass\t$hiddenforum\t$indexforum\t$teamlogo\t$teamurl\t$fgwidth\t$fgheight\t$miscadd3\t$miscadd4\t$miscad5\t");
push (@rearrangedforums, $rearrange);
$a++;
}
@rearrangedforums = sort (@rearrangedforums);
$highest = 0;
foreach (@rearrangedforums) {
chomp $_;
($categoryplace,my $a,$category, $forumname, $forumdescription, $forumid, $threads, $posts, $forumgraphic, $ratings, $misc,$forumpass,$hiddenforum,$indexforum,$teamlogo,$teamurl, $fgwidth, $fgheight, $miscadd3, $miscadd4, $miscad5) = split(/\t/,$_);
$categoryplace = sprintf("%01d",$categoryplace);
if ($categoryplace ne $lastcategoryplace) {
if ($categoryplace > $highest) { $highest = $categoryplace; }
print qq~<tr><td bgcolor=#FFFFFF colspan=3 ><font color=#333333><hr noshade></td></tr><tr><td bgcolor=#EEEEEE width=20% nowrap><font color=#333333>分类名: <b>$category</b><td bgcolor=#EEEEEE width=15% align=center nowrap><font color=#333333><a href="$thisprog?action=editcatname&category=$categoryplace">编辑分类名称</a></td><td bgcolor=#EEEEEE width=25%><font color=#333333><a href="$thisprog?action=addforum&category=$categoryplace">增加论坛到此分类中</a></font></td></td></tr>~;
}
if($category =~/^childforum-[0-9]+/){
$temp="子论坛名";$addforumline="";$addspace=" ";
}else{
$temp="论坛名";$addforumline=qq~<BR><a href="$thisprog?action=addforum&category=childforum-$forumid">增加子论坛到此论坛中</a>~;$addspace="";
}
$filerequire = "$lbdir" . "data/style${forumid}.cgi";
if (-e $filerequire) {
$mydelthisstlye = qq~ <a href="forumstyles.cgi?action=delstyle&forum=$forumid">删除该区自定义风格</a> |~;
$mystyle = qq~| <a href="forumstyles.cgi?action=style&forum=$forumid"><font color=red>修改该区风格</font></a>~;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -