📄 attachadmin.cgi
字号:
}
if($attachcount == 0){
print qq~
<tr><td align="center" colspan="5" height="30" valign="middle"><br><br>最少选择一个需要删除的附件<br><br><br></td></tr>
~;
}else{
if($start ne "checked"){
print qq~<tr><td align="center" colspan="3" bgcolor="#DDDDDD">需要删除附件 $allattachcount 个</td><td align="center" bgcolor="#DDDDDD" colspan="2"><input type="submit" name="Submit" value="确定删除"></td></tr>~;
}else{
print qq~<tr><td align="center" colspan="3" bgcolor="#DDDDDD">共删除附件 $allattachcount 个</td><td align="center" bgcolor="#DDDDDD" colspan="2">已上附件已被完全删除</td></tr>~;
}
}
print qq~
</table></form>
</td>
</tr>
<tr><td bgcolor="#FFFFFF" align="center" valign="middle" colspan="2" height="50">--<a href="$thisprog?forum=$forum&eachp=$eachp">返回</a>--</td></tr>~;
}
sub toppage{
$attachdir="${imagesdir}usr/$forum";
if($forum ne ""){
if(!-d $attachdir){
&errorout("管理程式出错","找不到附件目录 - $attachdir");return;
}
}
print qq~
<tr>
<td bgcolor="#EEEEEE" align=center>
<font color="#990000"><b>使用说明</b>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" align=center>
本程序的是为了管理文章附件而设,在这里可快速删除和检查附件。<p>
请在使用前注意以下几点:<p>
<table width=80%>
<tr><td><ol type="1">
<li>基本变量设置中,路径的配置是否使用绝对路径。如果不是,请改成绝对路径。<p>
<li>检查 ${imagesdir}usr 目录是否设置为可读写。如果不是,请设为可读写。<p></ol>
</td></tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="#EEEEEE" align=center>
<font color="#990000"><b>附件管理设置</b>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" align=center colspan=2>
~;
$eachp=20 if(!$eachp);
my $filetoopen = "$lbdir" . "data/allforums.cgi";
$filetoopen = &stripMETA($filetoopen);
open(FILE, "$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
my @forums = <FILE>;
close(FILE);
chomp @forums;
$forumlist=(join("\n",@forums))."\n";
$forumlist=~s/(.+?)\t(.+?)\t(.+?)\t(.+?)\t(.+?)\n/<option value="$1">$4<\/option>/g;
$forumlist =~ s/option value=\"$forum\"/option value=\"$forum\" selected style='color:#990000'>>/g if($forum ne "");
$selectsort{$sortt}=" selected";
$selectaord{$aord}=" selected";
print qq~
<table width=100%><form action="$thisprog" method=get name=form><tr><td align="right" width="15%">选择分论坛:</td><td width="*"><select name="forum" style="width:100%">$forumlist</select></td><td align="right" width="10%">每页显示:</td><td width="15%"><input type="text" name="eachp" value="$eachp" style="width:80%"> 个</td><td width="25%"><select name="sortt" style="width:65%"><option value="name"$selectsort{name}>依主题编号</option><option value="size"$selectsort{size}>依附件容量</option><option value="lastmod"$selectsort{lastmod}>依上传日期</option></select><select name="aord" style="width:35%"><option value="d"$selectaord{d}>降序</option><option value="a"$selectaord{a}>升序</option></select></td><td width="10%" align="center"><input type="submit" value="查看附件"></td></tr></form></table>
</td>
</tr>
~;
if($forum ne ""){
print qq~
<script language="JavaScript" type="text/javascript">
var wincount=1;
function admin(forumid,topicid,replyid,countid,action){
var Win=window.open("$thisprog?action="+action+"&forum="+forumid+"&topic="+topicid+"&reply="+replyid+"&count="+countid,"openScript"+wincount,'width=400,height=200,resizable=0,scrollbars=0,menubar=0,status=1');
wincount++;
if(wincount>9999)wincount=1;
}
</script>
<tr>
<td bgcolor="#FFFFFF" align=center colspan=2><form action="$thisprog" method=post name=form>
<input type="hidden" name="forum" value="$forum">
<input type="hidden" name="start" value="unchecked">
<input type="hidden" name="pageaction" value="1">
<input type="hidden" name="action" value="multdelete">
<input type="hidden" name="sortt" value="$sortt">
<input type="hidden" name="aord" value="$aord">
<input type="hidden" name="eachp" value="$eachp">
<table width=90% cellspacing="0" cellpadding="2">
<tr><td align="center" bgcolor="#DDDDDD"><b style="color:blue">附件名称</b></td><td align="center" width="20%" bgcolor="#DDDDDD"><b style="color:blue">附件容量</b></td><td align="center" width="20%" bgcolor="#DDDDDD"><b style="color:blue">上傳日期</b></td><td align="center" width="30%" bgcolor="#DDDDDD"><b style="color:blue">相关操作</b></td><td align="center" width="5" bgcolor="#DDDDDD"><b style="color:blue">选</b></td></tr>~;
opendir(DIR,"$attachdir");
@attachfiles=grep(/^$forum\_/,readdir(DIR));
closedir(DIR);
chomp @attachfiles;
if($sortt eq "lastmod"){
@attachfiles=sort lastmod @attachfiles
}elsif($sortt eq "size"){
@attachfiles=sort size @attachfiles
}else{
@attachfiles=sort name @attachfiles
}
@attachfiles = reverse(@attachfiles) if ($aord eq "a");
$allattachcount=@attachfiles;
$start=0 if(!$start);
$end=$start+$eachp;
$end=$allattachcount if($end > $allattachcount);
$attachcount=0;
$numberofpages = $allattachcount / $eachp;
($integer,$decimal) = split(/\./,$numberofpages);
if ($decimal > 0) { $numberofpages = $integer + 1; }
$mypages=$numberofpages;
$count = (($start/$eachp)+1);
$countstart= $count-4;
$countend = $count+4;
if($countstart <= 0){
$addendcount=0-$countstart;
$countstart=1;
$countend+=$addendcount;
$countend++;
}
if($countend >= ($mypages+1)){
$addstartcount=$countend-($mypages+1);
$countend=($mypages+1);
$countstart-=$addstartcount;
}
@page_array=("",$countstart .. $countend,"");
$pages=join("\t\t",@page_array);
$pages=~s/\t([-0-9]+)\t/
my $page=$+;
my $pagestart=($page-1)*$eachp;
my $p_link;
if($page eq $count){
$p_link=qq~<font color="#990000"><B>$page<\/B><\/font> ~;
}else{
$p_link=qq~<a href="$thisprog?forum=$forum&start=$pagestart&sortt=$sortt&aord=$aord&eachp=$eachp" class=hb>$page<\/a> ~;
}
$p_link="" if(int($page) <= 0 || $pagestart >= $allattachcount);
$p_link;
/ge;
if ($start > "0") {
$beginpage=qq~<a href="$thisprog?forum=$forum&start=0&sortt=$sortt&aord=$aord&eachp=$eachp" title="首 页" ><font face=webdings >9</font></a>~;
$pageup=$count-1;
$pageup1=($pageup-1)*$eachp;
$showup = qq~<a href="$thisprog?forum=$forum&start=$pageup1&sortt=$sortt&aord=$aord&eachp=$eachp" title="第$pageup页" ><font face=webdings >7</font></a>~;
} else {
$beginpage=qq~<font color="#990000"><font face=webdings >9</font></font>~;
$showup = qq~<font color="#990000"><font face=webdings >7</font></font>~;
}
$showend=($mypages-1)*$eachp;
if ($count ne $mypages) {
$endpage=qq~<a href="$thisprog?forum=$forum&start=$showend&sortt=$sortt&aord=$aord&eachp=$eachp" title="尾 页" ><font face=webdings >:</font></a>~;
$pagedown=$count+1;
$pagedown1=$count*$eachp;
$showdown = qq~<a href="$thisprog?forum=$forum&start=$pagedown1&sortt=$sortt&aord=$aord&eachp=$eachp" title="第$pagedown页" ><font face=webdings >8</font></a> ~;
} else {
$endpage=qq~<font color="#990000"><font face=webdings >:</font></font>~;
$showdown = qq~<font color="#990000"><font face=webdings >8</font></font>~;
}
$topicpages = qq~<font color=$menufontcolor>$beginpage $showup [ $pages ] $showdown $endpage</font>~;
$j=$start+1;
$k=$start;
for($i=$start;$i<$end;$i++){
$filefullname=$attachfiles[$i];
next if($filefullname eq "");
$filepath="$attachdir/".$filefullname;
my @filename=split(/\./,$filefullname);
$fileext=pop(@filename);
$filename=join(".",@filename);
$filecount=$filename[1];
$filecount=0 if(!$filecount);
$filesize=(stat("$filepath"))[7];
$filelastmod=(stat("$filepath"))[9];
$lastmoddate=&longdate($filelastmod);
my($forumid,$topicid,$relyid)=split(/\_/,$filename[0]);
$relyid=0 if(!$relyid);
@checktopic=&getpl($forumid,$topicid);
if($#checktopic == 0){
$topiclink=qq([丢失]);
}else{
($topictitle,$topisstarter,$topicposttime,$topicreply,$topicview)=@checktopic;
$topicstart=0;$orelyid=$relyid;
if($relyid > $maxtopics){
my ($crelyid,undef)=split(/\./,($relyid/$maxtopics));
$topicstart=$crelyid*$maxtopics;
}
$relyid="bottom" if($relyid eq $topicreply);
$topicpostdata=(!$topicpostdata)?"Unknown":&dateformat("$topicposttime");
$topiclink=qq(<a href="topic.cgi?forum=$forumid&topic=$topicid&start=$topicstart#$relyid" target="_blank" TITLE="$topictitle \n发布时间: $topicpostdata \n主题作者: $topisstarter ">[文章]</a>);
}
print qq~
<tr><td align="left"><a href="$imagesurl/usr/$forum/$filefullname" title="下载附件" target="_blank">$filefullname</a></td><td align="right">$filesize bytes</td><td align="right">$lastmoddate</td><td align="center">$topiclink <a href="javascript:admin($forumid,$topicid,$orelyid,$filecount,'moveattach')">[移动]</a> <a href="javascript:admin($forumid,$topicid,$orelyid,$filecount,'copyattach')">[复制]</a> <a href="javascript:admin($forumid,$topicid,$orelyid,$filecount,'deleteattach')">[删除]</a></td><td align="center" width="5"><input type="checkbox" name="delete_array" value="$filefullname"></td></tr>
~;
$attachcount++;
$k++;
}
if($attachcount == 0){
print qq~
<tr><td align="center" colspan="5" height="30" valign="middle"><br><br><br><br>该分论坛没有任何附件</td></tr>
~;
}else{
print qq~
<tr><td align="center" colspan="4" bgcolor="#EEEEEE"><a href="$thisprog?action=delete_no_topic&forum=$forum&eachp=$eachp&pageaction=1">删除本论坛中主题丢失的附件</a></td><td align="center" width="5" bgcolor="#EEEEEE"><input type="submit" name="Submit" value="删"></td></tr>
<tr><td align="center" colspan="3" bgcolor="#DDDDDD">该分论坛共有附件 $allattachcount 个 [$j - $k]</td><td align="center" bgcolor="#DDDDDD" colspan="2">$topicpages</td></tr>
~;
}
print qq~</table></form>
</td>
</tr>~;
}
}
sub moveattach{
print qq~<tr><td bgcolor="#333333" height="20"><font color="#FFFFFF">
<b>论坛管理中心 / 移动文章附件</b>
</td></tr>~;
if($forum eq "" || $topic eq ""){
&erroroutsmall("分论坛与主题编号不能为空!");return;
}
$attachdir="${imagesdir}usr/$forum";
if(!-d $attachdir){
&erroroutsmall("找不到附件目录 - $attachdir");return;
}
opendir(DIR,"$attachdir");
if($count == 0){
@attachfiles=grep(/^$forum\_$topic\./,readdir(DIR)) if($reply == 0);
@attachfiles=grep(/^$forum\_$topic\_$reply\./,readdir(DIR)) if($reply > 0);
}else{
@attachfiles=grep(/^$forum\_$topic\.$count\./,readdir(DIR)) if($reply == 0);
@attachfiles=grep(/^$forum\_$topic\_$reply\.$count\./,readdir(DIR)) if($reply > 0);
}
closedir(DIR);
chomp @attachfiles;
if($#attachfiles < 0){
&erroroutsmall("找不到该附件!");return;
}
my $filetoopen = "$lbdir" . "data/allforums.cgi";
$filetoopen = &stripMETA($filetoopen);
open(FILE, "$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
my @forums = <FILE>;
close(FILE);
chomp @forums;
if($start eq "checked"){
if($nforum eq "" || $ntopic eq ""){
&erroroutsmall("新分论坛与主题编号不能为空!");return;
}
if($forum eq $nforum && $topic eq $ntopic && $reply eq $nreply){
&erroroutsmall("新分论坛不能和旧编号相同!");return;
}
@checktopic=&getpl($nforum,$ntopic);
if($#checktopic == 0){
&erroroutsmall("找不到该主题");return;
}elsif($nreply > $checktopic[3]){
&erroroutsmall("找不到该回覆");return;
}
$nattachdir="${imagesdir}usr/$nforum";
@oldfilename=split(/\./,$attachfiles[0]);
$fileext=pop(@oldfilename);
$newfilename="$nforum\_$ntopic";
$newfilename.="\_$nreply" if($nreply > 0);
$newfilename.=".$count" if($count > 0);
$newfilename.=".$fileext";
if(-e "$nattachdir/$newfilename"){
&erroroutsmall("该文章已有附件存在!");return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -