#!/usr/bin/perl
print qq(Content-type: text/html\n\n);
use CGI;
$query = new CGI;
$dirs = "dirs.txt";
$type = $query->param('type');
$search = $query->param('search');
$topic = $query->param('topic');
$show = $query->param('view');
$skip = $query->param('skip');
$u = $query->param('u');
$p = $query->param('p');
$search_type = "\&" . $type;
# convert multiple spaces to single spaces
$search =~ tr/ / /s;
# chop the last space
chop($search) if ($search =~ / $/);
# convert spaces to verticle bars
$search =~ tr/ /\|/s;
$head = "parts/header.html";
$foot = "parts/footer.html";
$admmail = "www\@mordor.nazgul.com";
$doc_root = "./";
open(HEAD, "$head") || print "$head $!";
open(FOOT, "$foot") || print "$foot $!";
print
;
&results;
print qq( to remove a message e-mail: $admmail);
print ;
# subs
#-----------------------------------------------------------------------------
sub results {
&navagation;
open(DIRS, "./admin/$dirs") || print "Can't open $dirs, $!";
@dirs = ;
close(DIRS);
foreach $directory (@dirs) {
chomp($directory);
$index = $doc_root . $directory . "/archive.index";
open(INDEX, "$index");
@index = ;
foreach $entry (@index) {
chomp($entry);
($o_thread,
$action,
$id,
$title,
$name,
$email,
$url,
$reply) = split(/\t/, $entry);
$match = $doc_root . $action . "\/archive/" . $id . "\.archive";
$rep_f = " (a reply to message $reply)" if ($reply);
&find_messages;
}
close(INDEX);
print qq(\n\n);
}
&disp;
&navagation;
print qq(\n
\n);
}
sub disp {
$count = @entrys;
$up = $u;
$pop = ($up - 10);
$up = (10) if ($up < 10 || !$up);
$shift = ($count - $up);
for($i = 0; $i < $shift; $i++) {
shift(@entrys);
}
for($ii = 0; $ii < $pop; $ii++) {
pop(@entrys);
}
sort(@entrys);
if ($up <= ($count - 5)) {
$up_ = ($up + 5);
} else {
$up_ = $count;
}
$down_ = ($up - 5);
$view = (2);
if ($count > 0) {
print qq(
);
print qq();
print qq( | );
print qq();
print qq(Message: | );
print qq(Posted By: | );
print qq(Posted On: | );
print qq( );
foreach $entry (@entrys) {
my ($o_thread, $reply, $id, $match, $name, $title, $email) = split(/\ -\,-\ /, $entry);
if ($reply && $show == 2) {
print qq(\n);
print qq();
print qq();
print qq($title);
print qq( | );
print qq();
print qq( Posted by: $name ) if ($name);
print qq();
print qq( | \n);
$tm = localtime($id);
print qq($tm);
print qq( | );
}
if (!$reply) {
print qq(\n);
print qq() if ($show == 2);
print qq();
print qq($title);
print qq() if ($show == 2);
print qq( | );
print qq();
print qq( Posted by: $name ) if ($name);
print qq();
print qq( | \n);
$tm = localtime($id);
print qq($tm);
print qq( | \n);
}
}
print qq( |
);
&search_form;
} else {
print qq(Sorry, no matches.);
&search_form;
}
}
sub find_messages {
eval($search_type);
sub search_topic {
if ($action =~ /$topic/i &&
$body =~ /$search/ig ||
$title =~ /$search/ig ||
$name =~ /$search/ig ||
$email =~ /$search/ig) {
$entry = "$o_thread -,- $reply -,- $id -,- $match -,- $name -,- $title -,- $email";
push(@entrys, $entry);
}
}
sub search_all {
if ($body =~ /$search/ig ||
$title =~ /$search/ig ||
$name =~ /$search/ig ||
$email =~ /$search/ig) {
$entry = "$o_thread -,- $reply -,- $id -,- $match -,- $name -,- $title -,- $email";
push(@entrys, $entry);
}
}
sub topic_display {
if ($action =~ /$topic/i) {
$entry = "$o_thread -,- $reply -,- $id -,- $match -,- $name -,- $title -,- $email";
push(@entrys, $entry);
}
}
# sort(@entrys);
}
sub navagation {
print qq( [);
print qq() if ($show != 2);
print qq(View replys /);
print qq( ) if ($show == 2);
print qq( Close replys]);
print qq( [Add a new message]);
print qq( [Back to topics]);
print qq();
}
sub search_form {
print qq(
);
}