'; include('./fehler.html'); } else { if($logfile) { // Suchbegriff loggen $heute = date("d.m.Y H:i", time()); $logtext .= $heute.' '; $remote_ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; $remote_host = gethostbyaddr($remote_ip); $logtext .= " Suchbegriff: \"$q\" - "; $logtext .= "von $remote_host ($remote_ip)\n"; $fp = fopen($DOCUMENT_ROOT.$logfile, 'a'); fwrite($fp, $logtext); fclose($fp); } // BaseDir uebersetzen $Dir = $BaseDir; $BaseDir = $Home_Dir.$BaseDir; // Bestimmen, ob ueberhaupt mittels sessions gecached werden soll if ($Session_Cache_Results) { if (!isset($Start)) { // Die alte session noetigenfalls aufraeumen if (isset($PHPSESSID)) { session_id($PHPSESSID); session_start(); session_unregister('files'); session_destroy(); } // $files enthaelt nach dem Aufruf alle Funde, und zwar als array aus SearchResults(class) $files = array(); if (! session_register('files')) echo "Failed to cache data..."; ParseDirForString($files, $BaseDir, $extensions, $q, $HitsPerFile); $Start = 0; if (! session_register('files')) echo "Failed to cache data..."; } else if (! session_register('files')) echo "Failed to load cached data..."; } else { ParseDirForString($files, $BaseDir, $extensions, $q, $HitsPerFile); if (!isset($Start)) $Start = 0; } // resarray nach prio sortieren if ($UseObjects) { // ObjectSort usort($files, array ("SearchResult", "cmp_obj")); } else { /*print "
vorher
\n"; print_r($files); print "
";*/ usort($files, array_sort_prio); } if (!isset($ResultsPerPage)) $ResultsPerPage = $DefResultsPerPage; require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/header.inc.php'); ?>

Ihre Suchanfrage

Suche

Ihre Suche nach $q ergab ".count($files)." Treffer.

\n"; if(count($files) != 0) { print "
"; echo" Treffer ".($Start + 1)." bis ".min(($Start + $ResultsPerPage), count($files)).":\n"; // Der Textextractor wird benutzt um unnoetige Dateizugriffe zu vermeiden, // denn es kann haeufig passieren, dass es mehr als nur eine Textstelle in einer // Datei vorhanden ist. Diese muss dann nur einmal geoeffnet und gelesen werden. $TextExtractor = new GetText; // Die Ergebnisse im relevanten Bereich durchlaufen for ($j = $Start; $j < min($Start + $ResultsPerPage, count($files)); $j++) { $SearchEntry = $files[$j]; // Das grundlegende Setup, um die noetigen Daten einzustellen, unabhaengig davon, ob Objekte benutzt werden oder nicht if ($UseObjects) { // SearchEntry enthaelt nun ein Objekt des Typs SearchResult, das den Dateinamen des Suchergebnisses, sowie alle Textfunde enthaelt $filename = $SearchEntry->GetFileName(); $title = $SearchEntry->GetTitle(); $matchcount = $SearchEntry->GetMatchCount(); } else // Keine Objekte benutzen { // SearchEntry ist also ein array, wobei Element -1 den Pfad, die restlichen die Match-Positions enthalten $filename = $SearchEntry[-1]; $title = $SearchEntry[-2]; $matchcount = count($SearchEntry) - 1; } $size = filesize($filename).' Bytes'; $link = RemapPath($filename); echo '
'.(++$Index + $Start).'. '.$title."
\n
\n"; $TextExtractor->OpenFile($filename); // beschleunigt mehrere Zugriffe auf die selbe Datei for ($i = 0; $i < $matchcount; $i++) { // Bestimmen, ob Objekte benutzt werden koennen if ($UseObjects) $match = $SearchEntry->GetMatch($i); else // Keine Objekte benutzen $match = $SearchEntry[$i]; echo '...'.$TextExtractor->GetTextAt_Highlighted($match, $match + strlen($q), $ShowWordsBefore, $ShowWordsAfter, $Marker_Start, $Marker_End)."...
\n"; } echo "$link - $size\n
\n
\n

\n"; } // Die Resultatseiten-Sprungmarken ausgeben $pages = (int)((count($files) - 1) / $ResultsPerPage + 1); $Index = (int)($Start / 5); echo '
Ergebnis-Seiten: '; if (($pages > 0) && ($Index != 0)) echo " [ << Zurück ] "; for ($i = 0; $i < $pages; $i++) { $ausgabeSeitenNummer = $i+1; // Seitennummern sollen nicht mit 0 anfangen if ($Index == $i) echo " $ausgabeSeitenNummer"; else echo " [ $ausgabeSeitenNummer ] "; } if (($pages > 0) && ($Index < $pages - 1)) echo " [ Nächste >> ] "; } } print "

"; ?>