require("config.inc"); require("languages.lib"); require("ferticon.lib"); require("datum.inc"); set_time_limit(120); error_reporting(0); $cid = mysql_connect($dbhost,$dbuser,$dbpasswd); mysql_selectdb($dbname); $la = mysql_escape_string($_REQUEST["la"]); $artikel = mysql_escape_string($_REQUEST["artikel"]); $seq = mysql_escape_string($_REQUEST["seq"]); function FormatText ($text) { global $cid, $la; // Wort auf Existenz im Glossar prüfen, Querverweise als Link formatieren // jeweils nur das erste Auftreten in der Textstelle ausgeben. $words = explode(" ",$text); // Zähler für Feld mit bereits verlinkten Begriffen $count = 0; for ($i = 0; $i <= count($words); $i++) { $w = $words[$i]; $prefix = ""; $postfix = ""; // Einleitende Tags komplett in Prefix übernehmen. if (substr($w,0,1) == "<") { $p = strpos($w,">"); $prefix = $prefix . substr($w,0,$p+1); $w = substr($w,$p+1); } // ggf. Klammern vor/nach dem Keyword abtrennen $ch = substr($w,0,1); while ( ($ch == "(") || ($ch == ")") || ($ch == ";") || ($ch == ",") || ($ch == ":") || ($ch == ".") || ($ch == "/") || ($ch == "-")) { $prefix = $prefix . $ch; $w = substr($w,1); $ch = substr($w,0,1); } // Einleitende Tags komplett in Prefix übernehmen. if (strpos($w,"<") > 0) { $p = strpos($w,">"); $prefix = $prefix . substr($w,0,$p+1); $w = substr($w,$p+1); } $ch = substr($w,strlen($w)-1,1); while ( ($ch == "(") || ($ch == ")") || ($ch == ";") || ($ch == ":") || ($ch == ".") || ($ch == ",") || ($ch == "/") || ($ch == "<")) { $postfix = $ch . $postfix; $w = substr($w,0,strlen($w)-1); $ch = substr($w,strlen($w)-1); } // Suchbegriff z.B. für frz. vom "l'" befreien if ($la == "fr") { if (substr($w,0,2) == "l'") { $w = substr($w,2); } if (substr($w,0,2) == "d'") { $w = substr($w,2); } if (substr($w,0,2) == "s'") { $w = substr($w,2); } } // Endung abschneiden, falls Wort länger als 4 Buchstaben if (strlen($w) > 4) { $wx = substr($w,0,strlen($w)-1); // Klammern führen zu einer Fehlermeldung, also ignorieren if (strpos($wx,"(") == 0) { # $params[0] = $wx . "%"; $q = "SELECT * FROM glossar WHERE upper(keyword) LIKE upper('$wx%') AND sprache='$la'"; $r = mysql_query($q,$cid); } $gkeyword = @mysql_result($r,0,"keyword"); $glid = @mysql_result($r,0,"glossarid"); // Gegenkontrolle: Ist die Wortlänge des gefundenen Treffers // max. 1 Zeichen länger als der Suchbegriff? (Wortendung) if (($gkeyword != "") && (strlen($gkeyword) <= strlen($wx)+1)) { // ist es das erste Auftreten im Abschnitt? $iw = strtolower($wx); $icount = 1; while (($icount <= $count) && ($glids[$icount] != $glid)) { $icount++; } // ja, also merken und als Link markieren if ($glids[$icount] != $glid) { $count++; $glids[$count] = $glid; $words[$i] = "" . $w . ""; if ($prefix != "") { $words[$i] = $prefix . $words[$i]; } if ($postfix != "") { $words[$i] = $words[$i] . $postfix; } } } } } $text = implode($words," "); return ($text); } // Ende function FormatText function ShowText ($id, $titel) { global $cid; // gibt's den Text schon vorformatiert und ist der aktuell ? $q = "SELECT mdate FROM texte WHERE id=$id"; $rt = mysql_query($q, $cid); $mdate = mysql_result($rt,0,"mdate"); mysql_free_result($rt); $q = "SELECT * FROM formattedtext WHERE id=$id"; $rv = mysql_query($q, $cid); // odbc_binmode($rv,2); // odbc_longreadlen($rv,32768); if (mysql_num_rows($rv) == 1) { // es gibt schon einen vorformatierten Text $vmdate = mysql_result($rv,0,"mdate"); if ($vmdate >= $mdate) { // ja, dann wird der direkt angezeigt $text = mysql_result($rv,0,"text"); $doformat = 0; } else { // nein -> vorformatieren $doformat = 1; } } else { // es gibt noch keinen vorformatierten Text $doformat = 1; } // muß der Text formatiert werden? if ($doformat == 1) { $q = "SELECT text FROM texte WHERE id=$id"; $rt = mysql_query($q, $cid); //odbc_binmode($rt,2); //odbc_longreadlen($rt,65536); $text = mysql_result($rt,0,"text"); mysql_free_result($rt); $text = FormatText($text); // Formatierten Text in Datenbank abspeichern. $q = "DELETE FROM formattedtext WHERE id=$id"; $rd = mysql_query($q, $cid); mysql_free_result($rd); $q = "INSERT INTO formattedtext (id,text,mdate) VALUES ($id,'$text',now())"; $ri = mysql_query($q,$cid); mysql_free_result($ri); } // Text ausgeben $text = nl2br($text); if ($titel != "-") { ?>
echo "$titel"; ?>
} ?>
// Glossar-Links anpassen
$text = ereg_replace("/db/","",$text);
$text = ereg_replace("&cn=de&la=de","",$text);
$text = ereg_replace("glossar.show.php3","glossary.show.php3",$text);
echo " $text
// Link zum Inhaltsverzeichnis
if ($titel != "-") {
Hyperlink("artikel.php3?artikel=$artikel&la=$la","$_toc[$la]","u");
echo " \n";
}
// Link zum vorherigen Abschnitt
if ($pseq > 0) {
Hyperlink("text.php3?artikel=$artikel&seq=$pseq&la=$la","$ptitel","l");
}
if ($text == "") {
if ($n2seq != "") {
if ($pseq > 0) { echo " "; }
HyperLink("text.php3?artikel=$artikel&seq=$n2seq&la=$la","$n2titel","r");
}
} else {
if ($nseq != "") {
if ($pseq > 0) { echo " "; }
HyperLink("text.php3?artikel=$artikel&seq=$nseq&la=$la","$ntitel","r");
}
}
echo " \n";
// Falls Datei vorhanden, diese als Link angeben
if ($datei != "") {
echo "Datei zum Download (PDF)\n";
} else {
// Artikeltext ausgeben
ShowText($id,$titel);
// Wenn aktueller Artikeltext = leer, dann gleich den nächsten ausgeben
if ($text == "") {
if ($nseq != "") { ShowText($nid,$ntitel); }
// Link zum vorherigen Abschnitt
if ($pseq > 0) {
Hyperlink("text.php3?artikel=$artikel&seq=$pseq&la=$la","$ptitel","l");
}
if ($n2seq != "") {
echo " ";
HyperLink("text.php3?artikel=$artikel&seq=$n2seq&la=$la","$n2titel","r");
}
} else {
// Link zum vorherigen Abschnitt
if ($pseq > 0) {
Hyperlink("text.php3?artikel=$artikel&seq=$pseq&la=$la","$ptitel","l");
echo " ";
}
if ($nseq != "") {
HyperLink("text.php3?artikel=$artikel&seq=$nseq&la=$la","$ntitel","r");
}
}
} // if (datei...
?>
echo $atitel; ?>