📄 search.cgi
字号:
$matches_so_far = "处理中..." if (!$matches_so_far);
$forumname = "处理中..." if (!$forumname);
$output .= qq~
<tr>
<td bgcolor=$miscbacktwo valign=middle align=center><font face="$font" color=$fontcolormisc><b>搜索中....</b></font></td></tr>
<tr>
<td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc>
请等待,程序正在搜索中。<br>
<b>当前搜索情况:</b>
<ul>
<li>详细情况....<BR>
<li>搜索论坛: <b>$forumname</b>
<li>搜索结果: <b>$matches_so_far</b>
<li>匹配符合: <b>$matches_in_forum</b>$matches_in_forums
</ul>
</tr>
</td>
</table></td></tr></table>
<meta http-equiv="refresh" content="2; url=$relocurl">
~;
} # end if action eq continue
else {
# Print form
&getmember("$inmembername");
$jumphtml .= qq~
<select name="FORUMS_TO_SEARCH">
<option value="all">所有论坛
~;
$filetoopen = "$ikondir" . "data/allforums.cgi";
open(FILE, "$filetoopen");
flock(FILE, 2) if ($OS_USED eq "Unix");
@forums = <FILE>;
close(FILE);
foreach $forum (@forums) { #start foreach @forums
chomp $forum;
($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate ,$idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic) = split(/\|/,$forum);
if ((($privateforum eq "yes") && ($userregistered ne "no") && ($allowedentry{$forumid} eq "yes"))||($membercode eq "ad")) {
$rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forumid");
}
elsif ($privateforum ne "yes") {
$rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forumid");
}
push (@rearrangedforums, $rearrange);
} # end foreach (@forums)
@finalsortedforums = sort(@rearrangedforums);
foreach $sortedforums (@finalsortedforums) { #start foreach
($categoryplace, $category, $forumname, $forumdescription, $forumid) = split(/\|/,$sortedforums);
if ($categoryplace ne $lastcategoryplace) { #start if $categoryplace
$jumphtml .= "<option value=\"\">\n";
$jumphtml .= "<option value=\"\">>> $category <<\n";
$jumphtml .= "<option value=\"$forumid\"> $forumname\n";
}
else {
$jumphtml .= "<option value=\"$forumid\"> $forumname\n";
}
$lastcategoryplace = $categoryplace;
} # end foreach
$jumphtml .= qq~</select>\n~;
$refineposts = qq~<select name="POST_SEARCH">
<option value="topictitle_search">在主题中搜索关键字
<option value="post_search">在回复中搜索关键字
<option value="both_search">两者都搜索
</select>
~;
$refinename = qq~<select name="NAME_SEARCH">
<option value="topictitle_search">搜索主题作者
<option value="post_search">搜索回复作者
<option value="both_search">两者都搜索
</select>
~;
$currenttime = time;
$output .= qq~
<tr>
<td bgcolor="$miscbacktwo" valign=middle colspan=2 align="center">
<p><form action="$boardurl/$thisprog" method="post">
<input type=hidden name="action" value="startsearch">
<input type=hidden name="CUR_TIME" value="$currenttime">
<font face="$font" color=$fontcolormisc><b>请输入要搜索的关键字</b></font></td></tr>
<tr>
<td bgcolor=$miscbackone width colspan=2 align="center" valign="middle"><font face="$font" color=$fontcolormisc><b>请输入要搜索的关键字</b>
(多个关键字之间使用逗号 ',' 分隔)</font><br><br><input type=text size=40 name="SEARCH_STRING"></td></tr>
<tr>
<td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center><font face="$font" color=$fontcolormisc><b>搜索选项</b></font></td></tr>
<tr>
<td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>作者搜索</b></font> <input name="TYPE_OF_SEARCH" type="radio" value="username_search">
</td>
<td bgcolor="$miscbackone" align="left" valign="middle">
$refinename
</td>
</tr>
<tr>
<td bgcolor="$miscbackone" align="right" valign="middle"><font face="$font" color=$fontcolormisc>
<b>关键字搜索</b></font> <input name="TYPE_OF_SEARCH" type="radio" value="keyword_search" checked>
</td>
<td bgcolor="$miscbackone" align="left" valign="middle">
$refineposts
</td>
</tr>
<tr>
<td bgcolor="$miscbacktwo" valign="middle" colspan=2 align=center><font face="$font" color=$fontcolormisc><b>请选择要搜索的论坛 (不要选那些用 >> 和 << 括起来的,那只是类别名,不是论坛)</b></font></td></tr>
<tr>
<td bgcolor="$miscbackone" colspan="2" valign="middle" align="center"><font face="$font" color=$fontcolormisc>
<b>搜索论坛: $jumphtml</b></td>
</tr>
<tr>
<td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center><BR>
<input type=submit value="开始搜索">
</td></form></tr></table></td></tr></table>
~;
}
&output(
-Title => "$boardname - 贴子搜索",
-ToPrint => "$output",
-Version => $versionnumber
);
sub displayresults {
open (READ, "$searchfilename") or &error("搜索结果&对不起,搜索结果只能保存 30 分钟,请重新搜索!");
@completed_search = <READ>;
close (READ);
foreach (@completed_search) {
push (@TRUE_RESULTS, $_) if ($_ =~ /\|/)
}
$total_results = @TRUE_RESULTS;
$SEARCH_STRING = $completed_search[1];
chomp $SEARCH_STRING;
$TYPE_OF_SEARCH = $completed_search[2];
chomp $TYPE_OF_SEARCH;
$REFINE_SEARCH = $completed_search[3];
chomp $REFINE_SEARCH;
$FORUMS_TO_SEARCH = $completed_search[4];
chomp $FORUMS_TO_SEARCH;
$TYPE_OF_SEARCH = "关键字" if ($TYPE_OF_SEARCH eq "keyword_search");
$TYPE_OF_SEARCH = "作者" if ($TYPE_OF_SEARCH eq "username_search");
$REFINE_SEARCH = "主题" if ($REFINE_SEARCH eq "topictitle_search");
$REFINE_SEARCH = "回复" if ($REFINE_SEARCH eq "post_search");
$REFINE_SEARCH = "主题和回复" if ($REFINE_SEARCH eq "both_search");
if ($total_results > 0) {
$result_line = qq(使用<b>$TYPE_OF_SEARCH</b>搜索方式,在<b>$REFINE_SEARCH</b>中搜索到 <b>$total_results</b> 个相匹配的贴子);
}
else {
$result_line = qq(对不起,使用<b>$TYPE_OF_SEARCH</b>搜索方式,在<b>$REFINE_SEARCH</b>中<b>没有</b>搜索到任何相匹配的贴子);
}
$output .= qq~
<tr>
<td bgcolor="$miscbacktwo" valign=middle colspan=3 align=center>
<font face="$font" color=$fontcolormisc>
$result_line
</font>
</td>
</tr>
<tr>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc>
<b>主题</b></font>
</td>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc>
<b>发表时间、位置</b></font>
</td>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc>
<b>关键字匹配说明</b></font>
</font>
</td>
</tr>
~;
### Work out if there is a span, and if so how many pages.
$maxthreads = 25;
$numberofitems = $total_results;
$numberofpages = $numberofitems / $maxthreads;
$instart = $start;
if ($numberofitems > $maxthreads) { #if
$showmore = "yes";
if ($instart eq "" || $instart < 0) { $instart = 0; }
if ($instart > 0) { $startarray = $instart; }
else { $startarray = 0; }
$endarray = $instart + $maxthreads - 1;
if ($endarray < ($numberofitems - 1)) { $more = "yes"; }
if (($endarray > ($maxthreads - 1)) && ($more ne "yes")) { $endarray = $numberofitems - 1; }
} #
else {
$showmore = "no";
$startarray = 0;
$pages = qq~<font face="$font" color=$menufontcolor>搜索结果只有一页</font>~;
$endarray = $numberofitems - 1;
}
### if we have multiple pages, print them
if ($showmore eq "yes") { #1
if ($maxthreads < $numberofitems) { #2
($integer,$decimal) = split(/\./,$numberofpages);
if ($decimal > 0) { $numberofpages = $integer + 1; }
$pagestart = 0;
$counter = 0;
while ($numberofpages > $counter) { #3
$counter++;
if ($instart ne $pagestart) { $pages .= qq~<a href="$thisprog?action=display&start=$pagestart"><font face="$font" color=$fonthighlight><b>$counter</b></font></a> ~; }
else { $pages .= qq~<a href="$thisprog?action=display&start=$pagestart"><font face="$font" color=$menufontcolor>$counter</font></a> ~; }
$pagestart = $pagestart + $maxthreads;
} #e3
} #e2
$pages = qq~<font face="$font" color=$menufontcolor><b>搜索结果含有多页</b> [ $pages ]~;
} #1
foreach (@TRUE_RESULTS[$startarray .. $endarray]) { # start foreach loop
($forumid, $topicid, $topictitle, $topicdescription, $forumname, $postdate, $string_returned) = split(/\|/,$_);
$postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600);
$longdate = &longdate("$postdate");
$topicdescription = qq( -=> $topicdescription) if $topicdescription;
if ($badwords) {
@pairs = split(/\&/,$badwords);
foreach (@pairs) {
($bad, $good) = split(/=/,$_);
chop $good;
$topictitle=~ s/$bad/$good/isg;
}
}
$output .= qq(
<tr>
<td bgcolor=$miscbackone valign=middle>
<font face="$font" color=$fontcolormisc>
<B><a href="$boardurl/$threadprog?forum=$forumid&topic=$topicid">$topictitle</a></B><br>
$topicdescription
</td>
<td bgcolor=$miscbackone valign=middle>
<font face="$font" color=$fontcolormisc>
所处论坛: <a href="$boardurl/$forumsprog?forum=$forumid">$forumname</a><BR>发表时间: $longdate</font>
</td>
<td bgcolor=$miscbackone valign=middle align=center>
<font face="$font" color=$fontcolormisc>
$string_returned
</font>
</td>
</tr>
);
undef $topicdescription;
} # end foreach
$output .= qq(
<tr>
<td bgcolor="$miscbacktwo" valign=middle colspan=2 align=center>
<font face="$font" color=$fontcolormisc>
$pages
</font>
</td>
<td bgcolor="$miscbacktwo" valign=middle colspan=1 align=center>
<font face="$font" color=$fontcolormisc>
<a href="$boardurl/$thisprog"><b>>> 再 次 搜 索 <<</b></a>
</font>
</td>
</tr>
</table></td></tr></table>);
&output( -Title => "$boardname - 搜索结果",
-ToPrint => "$output",
-Version => $versionnumber);
} # end routine
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -