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

271 lines
11 KiB
PHP

<?php
#require("config/datenbankanbindung.php");
function verweise($lid, $user_admin, $template){
include_once 'classes/lg-on_Smarty.class.php';
$smarty = new lgon_Smarty();
require_once("config.inc.php");
require_once("func_rollenrechte.php");
$templatename = "verweise.html"; # bei dynamischem Inhalt nimmt er ansicht.html
require_once "language/german.inc.php";
$db = dbconnect();
$result_te_cache = $db->query("SELECT count(*) Anz
FROM quelle_verweise_cache
WHERE erg_lid = $lid");
$row_cache = $result_te_cache->fetch_array();
## Es ist wichtig, dass alle 3 Kategorien in den Cache geschrieben werden, da die Eintragungen dort maßgeblich sind,
## ob das Fenster Querverweise eingeblendet wird.
## Benutzt wird der Cache der Querverweise nur für Kategorie 3 da die WhereBedingungen mit REGEXP sonst zu lange dauern würden
$result_qv = $db->query( "SELECT lid, txt_anz_buch, txt_buch, txt_kapitel, txt_vers, Ueberschrift, thema, unterthema, textstelle, replace(replace(replace(textstelle, ' aus ', ''), 'vgl',''), ' ','') textstelle2, botschaft, textwort, inhalt, zusammenfassung, kontext, DATE_Format(datum, '%d.%m.%Y') as datum, kid, ukid, DATE_Format(datum, '%d') tag, DATE_Format(datum, '%m') monat, DATE_Format(datum, '%Y') jahr, ukid, DATE_Format(datum, '%Y-%m-%d')AS datum_berechnung, stapgd
FROM quelle
WHERE lid='$lid'" );
$row_qv = $result_qv->fetch_array();
if(rore($user_admin,'a_erwaehnt','RE')){
$smarty->assign('verweise_right_otherlg', "1");
}
$query2_qv = "SELECT lid, DATE_Format(datum, '%d') tag, DATE_Format(datum, '%m') monat, DATE_Format(datum, '%Y') jahr, DATE_Format(datum, '%Y%m%d') datum_format, kid, ukid
FROM quelle
WHERE replace(replace(replace(textstelle, ' aus ', ''), 'vgl',''), ' ', '') LIKE '$row_qv[textstelle2]'
ORDER BY datum_format DESC";
$result_qv = $db->query( $query2_qv)
or die ("Cannot execute query1");
$lid_verw = "";
// For each result that we got from the Database
while ($row2_qv = $result_qv->fetch_array()){
$lid_verw .= "$row2_qv[lid],"; // LID merken, damit sie nicht bei "Siehe auch..." ausgegeben werden
$wochentag = date("l", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag'],$row2_qv['jahr']));
$result_gd = $db->query( "SELECT wgd FROM profil WHERE user = '$user_admin'" );
$row_gd = $result_gd->fetch_array();
if($wochentag == 'Wednesday' AND $row_gd['wgd'] != '0' AND ($row2_qv['ukid'] == '1')){ // Hintergrund kommt aus der wort_wahl.php. Es gibt einige Gottesdienste, die auf einen Mittwoch fallen (1. vom Monat) aber kein Tag addiert werden darf, daher: Wann muss ein Tag (faktor) addiert werden, generell, wenn Wochengottesdienst, wenn Faktor im Profil != 0 und wenn unterkategorie 1 (GD normal) ist. Bei allen anderen Gottesdiensten bleibt der Mittwoch erhalten. (Buß und Bettag ist Mittwoch, Erntedank bleibt auch am 1. des Monats)
$datum = date("d.m.Y", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag']+$row_gd['wgd'],$row2_qv['jahr']));
}else{
$datum = date("d.m.Y", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag'],$row2_qv['jahr']));
}
if($row_qv['lid'] != $row2_qv['lid']){ // auf aktuelles Wort soll nicht verwiesen werden
if($row_qv['textstelle'] != ''){
if($row_cache['Anz'] == 0){
$sql1 = $db->query( "INSERT INTO quelle_verweise_cache ( erg_lid, lid, tag, monat, jahr, datum_format, kid, ukid, art)
VALUES ($lid, $row2_qv[lid], '$row2_qv[tag]', '$row2_qv[monat]', '$row2_qv[jahr]', '$row2_qv[datum_format]', $row2_qv[kid], $row2_qv[ukid], 'IGT')");
}
if($row2_qv['kid'] == 1 AND $row2_qv['ukid'] == 37){
$gdbericht = "(GD-Bericht)";
}else{
$gdbericht = "";
}
$row2_qv['link'] = "<a target=\"kurshaupt\" href=ausgabe.php?lid=$row2_qv[lid]>Wort vom $datum $gdbericht</a>";
$value[] = $row2_qv;
}
}
}
// Assign this array to smarty...
$smarty->assign('table_data', $value);
// Inhaltsgleiche Textstellen: ..." Ende
// " Textstellenenthaltungen:..."
$lid_verw = substr($lid_verw, 0, -1); //letztes Komma entfernen
$verse = explode("|", $row_qv['txt_vers']);
$query2 = "";
for($i=0; $i<count($verse)-1; $i++){ // -1 | hinten
// Select zusammenbauen
if($i==1){
$query2 = "SELECT distinct lid, DATE_Format(datum, '%d') tag, DATE_Format(datum, '%m') monat, DATE_Format(datum, '%Y') jahr, DATE_Format(datum, '%Y%m%d') datum_format, kid, ukid
FROM quelle
WHERE txt_anz_buch = '$row_qv[txt_anz_buch]'
AND txt_buch = '$row_qv[txt_buch]'
AND txt_kapitel = '$row_qv[txt_kapitel]'
AND (txt_vers LIKE '%|$verse[$i]|%'";
}else{
$query2 .= "or txt_vers LIKE '%|$verse[$i]|%'";
}
if($i==count($verse)-2){
$query2 .= ")
AND LID NOT IN($lid_verw)
ORDER BY datum_format DESC";
}
}
if($query2 != ''){
$result = $db->query( $query2)
or die ("Cannot execute query2b");
while ($row2_qv = $result->fetch_array()){
$wochentag = date("l", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag'],$row2_qv['jahr']));
$result_gd = $db->query("SELECT wgd FROM profil WHERE user = '$user_admin'");
$row_gd = $result_gd->fetch_array();
if($wochentag == 'Wednesday' AND $row_gd['wgd'] != '0' AND ($row2_qv['ukid'] == '1')){ // Hintergrund kommt aus der wort_wahl.php. Es gibt einige Gottesdienste, die auf einen Mittwoch fallen (1. vom Monat) aber kein Tag addiert werden darf, daher: Wann muss ein Tag (faktor) addiert werden, generell, wenn Wochengottesdienst, wenn Faktor im Profil != 0 und wenn unterkategorie 1 (GD normal) ist. Bei allen anderen Gottesdiensten bleibt der Mittwoch erhalten. (Buß und Bettag ist Mittwoch, Erntedank bleibt auch am 1. des Monats)
$datum = date("d.m.Y", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag']+$row_gd['wgd'],$row2_qv['jahr']));
}else{
$datum = date("d.m.Y", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag'],$row2_qv['jahr']));
}
if($row_qv['lid'] != $row2_qv['lid']){ // auf aktuelles Wort soll nicht verwiesen werden
if($row_qv['textstelle'] != ''){
if($row_cache['Anz'] == 0){
$sql1 = $db->query( "INSERT INTO quelle_verweise_cache ( erg_lid, lid, tag, monat, jahr, datum_format, kid, ukid, art)
VALUES ($lid, $row2_qv[lid], '$row2_qv[tag]', '$row2_qv[monat]', '$row2_qv[jahr]', '$row2_qv[datum_format]', $row2_qv[kid], $row2_qv[ukid], 'TEN')");
}
if($row2_qv['kid'] == 1 AND $row2_qv['ukid'] == 37){
$gdbericht = "(GD-Bericht)";
}else{
$gdbericht = "";
}
$row2_qv['link'] = "<a target=\"kurshaupt\" href=ausgabe.php?lid=$row2_qv[lid]>Wort vom $datum $gdbericht</a>";
$value1[] = $row2_qv;
}
}
}
} // Ende if query2 !=""
$smarty->assign('table_data1', $value1);
// "Textstellenenthaltungen ..." Ende
// "Textworterwähnung..."
if(rore($user_admin,'a_erwaehnt','RE')){
$verse = explode("|", $row_qv['txt_vers']);
$query3 = "";
for($i=0; $i<count($verse)-1; $i++){ // -1 | hinten
if($row_qv['txt_anz_buch'] != ''){
$suche="$row_qv[txt_anz_buch]. $row_qv[txt_buch] $row_qv[txt_kapitel],$verse[$i]";
}else{
$suche="$row_qv[txt_buch] $row_qv[txt_kapitel],$verse[$i]";
}
$verweis_akt = urlencode(serialize($suche));
if($row_cache['Anz'] == 0){
// Select zusammenbauen
if($i==1){
$query3 = "SELECT distinct lid, DATE_Format(datum, '%d') tag, DATE_Format(datum, '%m') monat, DATE_Format(datum, '%Y') jahr, DATE_Format(datum, '%Y%m%d') datum_format, kid, ukid
FROM quelle
WHERE (Inhalt REGEXP '[[:<:]]".$suche."[[:>:]]'";
}else{
$query3 .= "or Inhalt REGEXP '[[:<:]]".$suche."[[:>:]]'";
}
if($i==count($verse)-2){
$query3 .= ")
AND LID NOT IN($lid_verw)
ORDER BY datum_format DESC";
}
}
}
#echo "$query3<br><br>";
if($row_cache['Anz'] > 0){
$result = $db->query("SELECT lid, tag, monat, jahr, datum_format, kid, ukid
FROM quelle_verweise_cache
WHERE erg_lid = $lid
AND art = 'TER'");
$result2 = $db->query("SELECT lid, tag, monat, jahr, datum_format, kid, ukid
FROM quelle_verweise_cache
WHERE erg_lid = $lid
AND art = 'TER'");
}else{
if($query3 != ''){
$result = $db->query($query3)
or die ("Cannot execute query3");
$result2 = $db->query($query3)
or die ("Cannot execute query4");
}
}
if($query3 != ''){
$row_vorh = $result2->fetch_array();
while ($row2_qv = $result->fetch_array()){
if($row_vorh['lid'] !=''){
$wochentag = date("l", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag'],$row2_qv['jahr']));
$result_gd = $db->query("SELECT wgd FROM profil WHERE user = '$user_admin'");
$row_gd = $result_gd->fetch_array();
if($wochentag == 'Wednesday' AND $row_gd['wgd'] != '0' AND ($row2_qv['ukid'] == '1')){ // Hintergrund kommt aus der wort_wahl.php. Es gibt einige Gottesdienste, die auf einen Mittwoch fallen (1. vom Monat) aber kein Tag addiert werden darf, daher: Wann muss ein Tag (faktor) addiert werden, generell, wenn Wochengottesdienst, wenn Faktor im Profil != 0 und wenn unterkategorie 1 (GD normal) ist. Bei allen anderen Gottesdiensten bleibt der Mittwoch erhalten. (Buß und Bettag ist Mittwoch, Erntedank bleibt auch am 1. des Monats)
$datum = date("d.m.Y", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag']+$row_gd['wgd'],$row2_qv['jahr']));
}else{
$datum = date("d.m.Y", mktime(0,0,0,$row2_qv['monat'],$row2_qv['tag'],$row2_qv['jahr']));
}
if($row_qv['lid'] != $row2_qv['lid']){ // auf aktuelles Wort soll nicht verwiesen werden
if($row_qv['textstelle'] != ''){
if($row_cache['Anz'] == 0){
$sql1 = $db->query( "INSERT INTO quelle_verweise_cache ( erg_lid, lid, tag, monat, jahr, datum_format, kid, ukid, art)
VALUES ($lid, $row2_qv[lid], '$row2_qv[tag]', '$row2_qv[monat]', '$row2_qv[jahr]', '$row2_qv[datum_format]', $row2_qv[kid], $row2_qv[ukid], 'TER')");
}
if($row2_qv['kid'] == 1 AND $row2_qv['ukid'] == 37){
$gdbericht = "(GD-Bericht)";
}else{
$gdbericht = "";
}
$row2_qv['link'] = "<a target=\"kurshaupt\" href=ausgabe.php?lid=$row2_qv[lid]>Wort vom $datum $gdbericht</a>";
$value2[] = $row2_qv;
}
}
}
$smarty->assign('table_data2', $value2);
} //End if ein/ausblenden angezeigt werden muss
// "Textworterwähnung ..." Ende
} // if($query3 != ''){
} // Ende Rechteüberprüfung
return $smarty->fetch("$template/$templatename");
}
#$lid = 4272;
#$user_admin = 'schwaral';
#$template = 'standard';
#echo verweise($lid, $user_admin, $template);
?>