<?php
###########################################################
#
# (c) PlaNet Concept e.K., Lars Odermath, 2003
#
###########################################################
#
# :: planetSearch iX :: Version vom 05.10.2003
#
# COPYRIGHT NOTICE
# Copyright 2003 PlaNet Concept e.K.
# All Rights Reserved.
# EMail: kontakt@planetc.de
# URL : http://www.planetc.de
#
# :: planetSearch iX :: darf für private Homepages kostenlos benutzt und geändert
# werden, solange SÄMTLICHE Copyright-Verweise und die restlichen Kommentare erhalten
# bleiben.
#
# Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K.,
# Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des
# Einsatzes befreit ist.
#
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns,
# bevor Sie versuchen, mit unserem Script Geld zu verdienen.)
#
# Um dieses Skript über das Internet oder ein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen SÄMTLICHE Copyright-Verweise und die restlichen Kommentare erhalten
# bleiben.
#
# Sollten Sie den Copyright-Verweis in der Ausgabe des Scriptes nicht anzeigen
# oder das Script auf kommerziellen Seiten einsetzen wollen, können Sie dies gegen die
# Entrichtung einer Lizenz-Gebühr in Höhe von € 49,00 zzgl. der gesetzl. MWSt. tun.
# Senden Sie uns dazu bitte eine eMail und geben u.a. die URL für das Script an.
# Sie erhalten dann umgehend eine Rechnung von uns.
#
# BITTE LESEN UND BEACHTEN SIE UNSERE NUTZUNGSBEDINGUNGEN FÜR DIE SCRIPTE!
# Die Nutzungsbedingungen finden Sie in der der beigefügten "nutzungsbedingungen.txt"
# und unter http://www.planetc.de/download/nutzungsbedingungen.html
#
###########################################################
###########################################################
#############################
include ("./admin/inc/config.inc.php");
#############################
@setlocale("LC_ALL", "da_DA");
# Suchbegriff(e) übernehmen und umwandeln
$search_exp = strip_tags($HTTP_POST_VARS["search_exp"]);
$exp_capital = strip_tags($HTTP_POST_VARS["exp_capital"]);
$exp_full = strip_tags($HTTP_POST_VARS["exp_full"]);
#############################
#Prüfen, ob ein Suchbegriff eingegeben wurde
if (!empty($search_exp) || !empty($HTTP_GET_VARS["search_exp"])) {
if (!empty($HTTP_GET_VARS["search_exp"])) {
$search_exp = $HTTP_GET_VARS["search_exp"];
}
# Sonderzeichen entfernen
$frrepl = array("=\+=", "=\s+=");
$torepl = array("", " ");
$search_exp = preg_replace( $frrepl, $torepl, $search_exp);
$search_exp = preg_quote($search_exp);
$search_exp = trim($search_exp);
# Zeichenanzahl des Suchbgeriffes prüfen
if (strlen($search_exp) < $sexp_length) {
// Template laden
$tmpl = join('', file("./results/search-error.php"));
$tmpl = preg_replace("=\[search_error_count\]=", $error_count, $tmpl);
$tmpl = preg_replace("=\[search_error_empty\]=", "", $tmpl);
echo $tmpl;
} else {
# Suchbegriffe in Array umwandeln und zählen
$search_arr = explode(" ",$search_exp);
$search_count = count($search_arr);
# "Dummy"-Array für Such-Array erzeugen
$arr = array();
$arr_all = array();
# Template laden
$tmpl = join('', file("./results/search-results.php"));
# Bereich der Trefferanzeige aus dem Template ziehen
preg_match_all("=\[SEARCH_START\](.*)\[SEARCH_STOP\]=siU", $tmpl, $between);
$search_pages = 0;
# Datenfile durchsuchen
$cont_part = do_search();
$search_pages = count($cont_part); // Anzahl der Trefferseiten
rsort($cont_part); // Array sortieren
$blaetter = seitenaufteilung($search_pages);
if (!isset($HTTP_GET_VARS['a'])) {
$a = 0;
}
// Arrays auslesen
for ($j=$a; $j!=$a+$nps; $j++) {
if (($j==$search_pages) || (!preg_match("=.*aNe.*=sU", "$blaetter"))) {
break;
}
list($anz_searchexp, $title, $descr, $new_path, $searchx) = $cont_part[$j];
$content = preg_replace("=\[SEARCH_TITLE\]=", "$title", $between[1][0]);
// Trefferseite nummerieren
$search_nr = $j+1;
$content = preg_replace("=\[SEARCH_NR\]=", "$search_nr", $content);
$searchx = stripslashes($searchx);
$content = preg_replace("=\[SEARCH_CONTENT\]=", "$searchx", $content);
$content = preg_replace("=\[SEARCH_LINK\]=", "$from_dir"."$new_path", $content);
$content = preg_replace("=\[SEARCH_URL\]=", "http://"."$HTTP_SERVER_VARS[SERVER_NAME]"."$from_dir"."$new_path", $content);
$content = preg_replace("=\[SEARCH_DESC\]=", "$descr", $content);
$content = preg_replace("=\[SEARCH_COUNT\]=", "$anz_searchexp", $content);
$cont_x .= $content;
}
// Suchergebnis zusammenstellen und anzeigen
$tmpl = preg_replace("=\[SEARCH_START\](.*)\[SEARCH_STOP\]=siU", $cont_x, $tmpl);
$search_exp_all = urldecode($search_exp);
$search_exp_all = str_replace('\\', '', $search_exp_all);
$tmpl = preg_replace("=\[SEARCH_WORDS\]=", $search_exp_all, $tmpl);
$tmpl = preg_replace("=\[SEARCH_PAGES\]=", $search_pages, $tmpl);
$tmpl = preg_replace("=\[SHOW_PAGES\]=", $blaetter, $tmpl);
if (empty($cont_part)) {
$tmpl = preg_replace("=\[NO_MATCH\]=", $no_match, $tmpl);
} else {
$tmpl = preg_replace("=\[NO_MATCH\]=", "", $tmpl);
}
echo $tmpl;
#################################################
# Logdatei schreiben
foreach ($search_arr as $search_exp) {
$zeilen = file("./admin/_log/search_log.txt");
$anz_zeilen = sizeof($zeilen);
$x=0;
# Datenfile auslesen
for ($i=0; $i<$anz_zeilen; $i++) {
list ($search_word, $search_num) = split("\\|", chop($zeilen[$i]));
// wenn Suchbegriff gefunden wird
if ($search_exp==$search_word) {
$search_num++;
$i-2;
$x++;
}
$new_log .= "$search_word|$search_num\n";
}
// wenn der Suchbegriff nicht schon geloggt wurde
if ($x==0) {
$search_num = "1";
$new_log .= "$search_exp|$search_num\n";
}
$data = fopen("./admin/_log/search_log.txt","w+");
flock($data,1);
fwrite($data, $new_log);
flock($data,3);
fclose($data);
unset($new_log);
}
#################################################
}
}
#############################
# Wenn kein Suchbegriff eingegeben wurde
else {
# Template laden
$tmpl = join('', file("./results/search-error.php"));
$tmpl = preg_replace("=\[search_error_count\]=", "", $tmpl);
$tmpl = preg_replace("=\[search_error_empty\]=", $error_empty, $tmpl);
echo $tmpl;
}
#############################
#############################
# Datenfile durchsuchen
function do_search() {
global $search_exp, $exp_capital, $exp_full, $search_arr, $search_count, $search_area, $cont_part, $search_pages, $arr_all, $maxz, $hit_area, $HTTP_GET_VARS;
// Datenfile öffnen und auslesen
$zeilen = file("./admin/data/search_data.php");
$anz_zeilen = sizeof($zeilen);
for ($i=0; $i<$anz_zeilen; $i++) {
list ($path, $title, $description, $keywords, $content) = split("\\|\|\|", chop($zeilen[$i]));
# zu durchsuchender Bereich
if ($search_area==1) { // Titel, Description, Keywords
$a = "$title"."$description"."$keywords";
}
else { // alles
$a = "$content"."$title"."$description"."$keywords";
}
// Umlaute verarbeiten
$a = ch_uml($a);
$j=0;
// Werte aus der URL auslesen
if (empty($exp_full)) {
$exp_full = $HTTP_GET_VARS['exp_full'];
}
if (empty($exp_capital)) {
$exp_capital = $HTTP_GET_VARS['exp_capital'];
}
if ($exp_full=="yes") { // nur ganze Wörter
$pref = "\b";
}
if ($exp_capital=="no") { // Groß- und Kleinschreibung nicht unterscheiden
$capit = "i";
}
foreach ($search_arr as $search_word) { // jeden Suchbegriff prüfen
if (preg_match("=$pref$search_word$pref=$capit", $a)) { // wenn Suchbegriff vorkommt...
$anz_searchexp += preg_match_all("=$pref$search_word$pref=$capit"."sU", $a, $nullinger);
$j++; // i für jeden gefundenen Suchbegriff erhöhen
if ($j==$search_count) { // wenn ALLE Suchbegriffe gefunden wurden...
// Bereich der Treffer ermitteln und Treffer hervorheben
if ($hit_area==1) {
$swlen = strlen($search_word);
$strlen = strlen($a);
$len = floor(($maxz-$swlen)/2);
foreach ($search_arr as $search_word) {
if (preg_match("=$pref$search_word$pref=$capit", $hitx)) {
$hitx = $hitx;
}
else {
if (isset($hitx)) {
$len = floor($len/2);
}
// Trefferbereich ermitteln
preg_match("=\b.{0,$len}($pref$search_word$pref).{0,$len}\b=s$capit", $a, $hit);
// Punkte hinzufügen, wenn mehr Zeichen als Max vorhanden sind
if ($strlen>$swlen) { $hit[0] = " ...".$hit[0]."... "; }
$hitx .= $hit[0];
}
}
foreach ($search_arr as $search_word) {
$hitx = preg_replace("=$pref($search_word)$pref=$capit", "<span class='hitword'>\\1</span>", $hitx);
}
} // hit_area Ende
$s_show = array();
$s_show[] = $anz_searchexp;
$s_show[] = $title;
$s_show[] = $description;
$s_show[] = $path;
$s_show[] = $hitx;
array_push($arr_all, $s_show);
unset($a, $anz_searchexp, $hitx);
}
}
}
}
// Treffer-Array zurückgeben
$cont_part = $arr_all;
return ($cont_part);
} // end func
// Umlaute bearbeiten
function ch_uml($del_uml) {
$del_uml = preg_replace("=ä=", "ä", $del_uml); // Umlaute und ß
$del_uml = preg_replace("=ö=", "ö", $del_uml);
$del_uml = preg_replace("=ü=", "ü", $del_uml);
$del_uml = preg_replace("=Ä=", "Ä", $del_uml);
$del_uml = preg_replace("=Ö=", "Ö", $del_uml);
$del_uml = preg_replace("=Ü=", "Ü", $del_uml);
$del_uml = preg_replace("=ß=", "ß", $del_uml);
return ($del_uml);
} // end func
#################################################
#################################################
# Anzeige der Blätterfunktion
function seitenaufteilung($anz_zeilen) {
global $nps, $a, $HTTP_SERVER_VARS, $HTTP_GET_VARS, $search_exp, $exp_full, $exp_capital;
$a = $HTTP_GET_VARS['a'];
$PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];
$search_exp = urlencode($search_exp);
$seiten=ceil($anz_zeilen / $nps);
$foot = "<table width=600 border=0 cellspacing=0 cellpadding=0 align=center><tr><td> </td></tr><tr><td align=center>";
if($a >= $nps) {
$back=$a-$nps;
$foot .= "<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$back' class='page_link'><<</a> ";
}
if ($anz_zeilen<=$nps) {
$foot .= "";
} else {
for ($i=1;$i<=$seiten;$i++) {
$fwd=($i-1)*$nps;
if ($a==$fwd) {
$foot .= "<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$fwd' class='page_link'>-$i-</a> ";
} else{
$foot .= "<a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$fwd' class='page_link'>$i</a> ";
}
}
}
if(($a < $anz_zeilen-$nps) && ($nps<$anz_zeilen)) {
$fwd=$a+$nps;
$foot .= " <a href='$PHP_SELF?search_exp=$search_exp&exp_full=$exp_full&exp_capital=$exp_capital&a=$fwd' class='page_link'>>></a>";
}
$foot .= "</td></tr><tr><td> </td></tr><tr><td align=right><a href='http://www.planetc.de' target='_blank' class='copy'>PlaNet Search</a></td></tr></table><br>";
return("$foot");
}
#################################################
?>