#!/usr/bin/perl

use CGI;

require "kkhisa-stdlib.pl";
require "kkhisa-config.pl";
require "kkhisa-kklib.pl";

##################################################################
# Programm #######################################################
##################################################################

$query = new CGI;

$q = $query->param('q');
$m = $query->param('m');

$sel{$m} = "selected ";

&html_write_header("Suchergebnis", "mitte");

print <<"EOF";
 <body class="inhalt" onload="mkblue('', 2, '../');document.forms[0].elements[0].focus();" onunload="mkblue('', 3, '../');">
EOF

&html_kopfzeile("${path_cgi_to_html}leer.php", $q?"Suchergebnis":"Suche", "${path_cgi_to_html}leer.php");

print <<"EOF";
  <div align=center>
   <form action="kkhisa-suche.pl" method="get">
    <input type="text" name="q" size="20" value="$q">
    <select name="m">
     <option $sel{'0'}value="0">genauer Text
     <option $sel{'1'}value="1">einige W&ouml;rter
     <option $sel{'2'}value="2">alle W&ouml;rter
     <option $sel{'3'}value="3">Suchausdruck
     <option $sel{'4'}value="4">regul&auml;rer Ausdruck
    </select>
    <input type="submit" value="Suchen!">
   </form>
   <a href="/suchen-hilfe.html">Hilfe</a>
  </div>
  <hr size=1 noshade>
EOF

if (!open(CONF, $path_data."suche.conf")) {
    warn "E: ${path_data}suche.conf\n";
    print <<"EOF";
<h3>Fehler</h3>
Die Suchmaschine wurde noch nicht konfiguriert.
EOF
} else {
    chomp(@suchconf = <CONF>);
    open(FIND, "find $document_root -type f |") or die;
    foreach $f (sort <FIND>) {
	chomp $f;
	$drin = 0;
	$fs = substr($f, length($document_root));
#	print "<br>$fs</br>\n";
	foreach $opt (@suchconf) {
	    ($cmd, $regex) = split(':', $opt, 2);
	    $drin = 1 if (($cmd eq "include") && ($fs =~ m|$regex|i));
	    $drin = 0 if (($cmd eq "exclude") && ($fs =~ m|$regex|i));
	}
	if (($drin) && open(F, $f)) {
	    $data = join("", <F>);
            if ($data =~ m|<title>(.*?)</title>|i and $1) {
		$title = $1;
	    } else {
		$title = "(unbenannt; $fs)";
	    }
	    $data = &extractText($data);
	    close(F);

	    my $re = qr"\b\Q${q}\E\b"i;
# Hier sind die verschiedenen Suchalgorithmen festgelegt
	    if (!$query->param('m')) {
		# Der Text kommt exakt so auf der Seite vor.
		$drin = ($data =~ $re);

	    } elsif ($m == 1) {
		# Mindestens ein Suchwort kommt auf der Seite vor.
		$drin = 0;
		foreach (split(" ", $q)) {
		    $drin = 1 if ($data =~ $re);
		}

	    } elsif ($m == 2) {
		# Alle Suchworte kommen auf der Seite vor.
		$drin = 1;
		foreach (split(" ", $q)) {
		    $drin = 0 if ($data !~ $re);
		}

	    } elsif ($m == 3) {
		# Den einzelnen Suchworten kann ein "+" oder "-"
		# vorangestellt werden.
		$drin = (substr($q, 0, 1) eq "+") ? 1 : 0;
		foreach $wort (split(" ", $q)) {
		    if ($wort =~ s/^\+//i) {
			$drin = 0 if ($data !~ $re);
		    } elsif ($wort =~ s/^-//i) {
			$drin = 0 if ($data =~ $re);
		    } else {
			$drin = 1 if ($data =~ $re);
		    }
		}

	    } elsif ($m == 4) {
		# Das Suchwort wird als regulärer Ausdruck ausgewertet.
		$drin = ($data =~ /$q/i);

	    } else {
		$drin = 0;
	    }
# </Suchalgorithmen>
	    if ($drin) {
		print "<table><tr><td><a href=\"$fs\">$title</a><br></td></tr></table>\n";
		$ergebnisse++;
	    }
	}
    }
}

if (!$ergebnisse and $q) {
	print "Leider nichts gefunden.\n";
}

&html_fusszeile("Kirchenkreis Hildesheim-Sarstedt");

__END__

