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

📄 setforums.cgi

📁 一个linux论坛
💻 CGI
📖 第 1 页 / 共 5 页
字号:
#!/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 + -