Leitgedanken/bibellookup_2017.php
2022-11-21 09:47:28 +01:00

399 lines
12 KiB
PHP

<?php
function mailnachricht($wort, $art, $id)
{
$db = dbconnect(); #12.09.2014
$user_admin=$_COOKIE["user_admin"];
$empfaenger = "admin@lg-on.de";
$betreff = "Leitgedanken-Online: Fehler bei Bibelstelle";
if($art=='T'){
$systemart="Textwort";
$result1_daten = $db->query("SELECT ueberschrift,date_format(datum, '%d.%m.%Y') datum
FROM quelle
WHERE lid = '$id'
");
$row_daten = $result1_daten->fetch_array();
$info ="$row_daten[ueberschrift] ($row_daten[datum])";
}
if($art=='L'){
$systemart="Publikationen";
$result1_daten = $db->query("SELECT thema
FROM lue_quelle
WHERE eid = '$id'
");
$row_daten = $result1_daten->fetch_array();
$info ="$row_daten[thema]";
}
if($art=='B'){
$systemart="Luther Bibel 2017";
$info ="Falscher Textverweis in Bibelstelle";
}
$result_user = $db->query("SELECT nachname, vorname FROM admin where user=\"$user_admin\"");
$row_user = $result_user->fetch_array();
$text = "
<html>
<head>
<title>Fehler bei Bibelstelle</title>
</head>
<body>
<font face='Arial' size='2'>
Guten Tag!<br><br>
In Leitgedanken Online wurde ein Fehler in der einer Bibelstelle gefunden.
<br>
<br>
<table>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Textwort:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$wort</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
System:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$systemart</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Thema:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$info</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
ID:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$id</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Betroffener:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$row_user[vorname] $row_user[nachname]</b>
</font>
</td>
</tr>
</table>
<br>
Bitte korrigieren Sie den Fehler umgehend!
<p>
Diese Mail wurde automatisch generiert!<br>
Antworten Sie daher nicht auf diese Mail<br>
<br>
Vielen Dank
</body>
</html>";
$headers = "MIME-Version: 1.0\n";
#$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: Leitgedanken Online <admin@lg-on.de>\n";
@$return = @mail($empfaenger, $betreff, $text, $headers);
}
# Text zwischen Text ausblenden, wie Überschriften
# http://entwickler-forum.de/showthread.php?t=61357
function strip_only($str, $tags, $stripContent = false) {
$content = '';
if(!is_array($tags)) {
$tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags));
if(end($tags) == '') array_pop($tags);
}
foreach($tags as $tag) {
if ($stripContent)
$content = '(.+</'.$tag.'[^>]*>|)';
$str = preg_replace('#</?'.$tag.'[^>]*>'.$content.'#is', '', $str);
}
return $str;
}
function splitWord($a, $b, $c, $d, $e, $f, $g, $h, $art, $id)
{
/*
echo "a: '$a'<br>
b: '$b'<br>
c: '$c'<br>
d: '$d'<br>
e: '$e'<br>
f: '$f'<br>
g: '$g'<br>
h: '$h'<br>
i: '$i'<br>
<br>
";
*/
// mehrere Textwörter
if($g=='-'){
$db = dbconnect();
$result1_pruef = $db->query("SELECT count(*) Anz
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers = '$f'
ORDER BY bid ASC
");
$row_pruef1 = $result1_pruef->fetch_array();
$result2_pruef = $db->query("SELECT count(*) Anz
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers = '$h'
ORDER BY bid ASC
");
$row_pruef2 = $result2_pruef->fetch_array();
if($row_pruef1['Anz'] > 0 AND $row_pruef2 ['Anz'] > 0){
$result1 = $db->query("SELECT bid
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers = '$f'
ORDER BY bid ASC
");
$row1 = $result1->fetch_array();
$result2 = $db->query("SELECT bid
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers = '$h'
ORDER BY bid ASC
");
$row2 = $result2->fetch_array();
$query = "SELECT vers, inhalt
FROM bibel_lut_2017
WHERE bid between $row1[bid] AND $row2[bid]
AND vers !=''
ORDER BY bid ASC
";
$result = $db->query( $query)
or die ("Cannot execute query: mehrere Textwörter");
// Schleife über alle Kapitel der Bibel
$ret_wort = "";
while ($row = $result->fetch_array()){
# Text zwischen Überschriften wegfiltern
$tags = 'h3';
$inhalt = strip_only($row['inhalt'], $tags, true); // text
$ret_wort .= " <span class=\'verse\'>$row[vers]</span> $inhalt";
}
}else{
$ret_wort ="Die Textstelle konnte nicht geladen werden<br>Evtl liegt ein Schreibfehler vor. <br>Der Administrator wurde verst&auml;ndigt!";
$wort="$a$b $c$d$e$f$g$h";
mailnachricht($wort, $art,$id);
}
}
// einzelne Textstellen
if($g=='' AND $f!=''){
$db = dbconnect();
$result_pruef = $db->query("SELECT count(*) Anz
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers = '$f'
ORDER BY bid ASC
");
$row_pruef = $result_pruef->fetch_array();
if($row_pruef['Anz'] > 0){
$result1 = $db->query("SELECT bid
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers = '$f'
ORDER BY bid ASC
");
$row1 = $result1->fetch_array();
$query = "SELECT vers, inhalt
FROM bibel_lut_2017
WHERE bid = $row1[bid]
AND vers !=''
ORDER BY bid ASC
";
$result = $db->query( $query)
or die ("Cannot execute query");
// Schleife über alle Kapitel der Bibel
$ret_wort = "";
while ($row = $result->fetch_array()){
# Text zwischen Überschriften wegfiltern
$tags = 'h3';
$inhalt = strip_only($row['inhalt'], $tags, true); // text
$ret_wort .= " <span class=\'verse\'>$row[vers]</span> $inhalt";
}
}else{
$ret_wort ="Die Textstelle konnte nicht geladen werden<br>Evtl liegt ein Schreibfehler vor. <br>Der Administrator wurde verst&auml;ndigt!";
$wort="$a$b $c$d$e$f$g$h";
mailnachricht($wort, $art,$id);
}
}
// ganze Kapitel
if($g=='' AND $f==''){
$db = dbconnect();
$query = "SELECT vers, inhalt
FROM bibel_lut_2017
WHERE anz_buch = '$a'
AND buch = '$b'
AND kapitel ='$c'
AND vers != ''
ORDER BY bid ASC
";
$result = $db->query( $query)
or die ("Cannot execute query: Ganze Kapitel");
// Schleife über alle Kapitel der Bibel
$ret_wort = "";
while ($row = $result->fetch_array()){
# Text zwischen Überschriften wegfiltern
$tags = 'h3';
$inhalt = strip_only($row['inhalt'], $tags, true); // text
$ret_wort .= " <span class=\'verse\'>$row[vers]</span> $inhalt";
}
$max=1000;
$origin=strlen($ret_wort);
$ret_wort = substr($ret_wort.' ' , 0 , $max + 1);
$ret_wort = substr($ret_wort , 0 , strrpos ($ret_wort , ' '));
$ret_wort = strip_tags($ret_wort, '<nobr><em>,<span>,<br>,<b>,<strong>,<ul>,<li>,<ol>,<a>');
if($max<=$origin){
# Funktioniert manchmal nicht, da nicht zwischen Wort getrennt wird [strrpos ($ret_wort , ' ')] sondern immer nach einem
# vollständigen Wort. Das Merkmal ist: Wenn ein Leerzeichen kommt, dann trennen.
# Es kann passieren, dass es dann nach dem Wort span [<span class=\'verse\'>] getrennt wird,
# Dann sieht es so aus: <span<nobr> <b>[...]</b></nobr>, weil nach dem Span ein Leerzeichen kommt.
# Der Tag wird dann nicht dargestellt.
# Zur Minderung: $ret_wort = strip_tags($ret_wort, '<nobr><em>,<span>,<br>,<b>,<strong>,<ul>,<li>,<ol>,<a>');
$ret_wort.="<nobr> <b>[...]</b></nobr>";
}
}
$wort="$a$b $c$d$e$f$g$h";
#$sql1 = $db->query( "INSERT INTO test (wort, inhalt) VALUES ('$wort', '$ret_wort')" );
$ret_wort=trim($ret_wort);
$ret_wort = strip_tags($ret_wort, '<nobr><em>,<br>,<b>,<strong>,<ul>,<li>,<ol>,<a>');
$ret_wort =str_replace ("#", "\#" , $ret_wort);
# Neu mit Lutherbibel 2017 (real_escape_string) damit die Hochkommas escaped werden
$ret_wort = $db->real_escape_string($ret_wort);
#echo "<pre>$ret_wort</pre>";
return $ret_wort;
}
function getword($wort){
$wort = str_replace (array("&auml;", "&Auml;", "&uuml;", "&Uuml;", "&ouml;", "&Ouml;", "&szlig;")
, array("ä", "Ä", "ü", "Ü", "ö", "Ö", "ß")
, $wort
);
$trenner = explode("|", $wort);
$wort = $trenner[0];
if(isset($trenner[1])){
$art = $trenner[1];
}else{
$art = "";
}
if(isset($trenner[2])){
$id = $trenner[2];
}else{
$id = "";
}
return preg_replace_callback("/([0-9][0-9]?\.\s*)?(Philemon|Judas|Johannes|Mose|Könige|Chronik|Korinther|Samuel|Thessalonicher|Timotheus|Petrus|Sirach|Mose|Josua|Richter|Rut|Ruth|Samuel|Könige|Chronik|Esra|Nehemia|Esther|Ester|Hiob|Psalm|Sprüche|Prediger|Hoheslied|Jesaja|Jeremia|Klagelieder|Hesekiel|Daniel|Hosea|Joel|Amos|Tobias|Obadja|Jona|Micha|Nahum|Habakuk|Zefanja|Haggai|Sacharja|Maleachi|Judit|Weisheit|Baruch|Makkabäer|Stücke zu Ester|Stücke zu Daniel|Gebet Manasses|Matthäus|Markus|Lukas|Apostelgeschichte|Römer|Korinther|Galater|Epheser|Philipper|Kolosser|Thessalonicher|Timotheus|Titus|Hebräer|Jakobus|Offenbarung)(\s*[0-9]{1,3})(,\s*)?(\s*aus\s*|\s*Vers\s*)?([0-9]{0,3})?(\-|\.{0,1})?([0-9]{0,3})?/", function($m) use (&$art,&$id) { return splitWord($m[1], $m[2], $m[3], $m[4], $m[5], $m[6], $m[7], $m[8],"$art", "$id");}, $wort);
}
?>