<?php ## Die Datei ist als ANSI abgespeichert und kein encoding wurde vorgenommen. Das könnte in Zeile 708ff erfolgen ## Somit ist der Export für SOGo (Jochen geeignet), aber nicht für Outlook, welches UTF8 benötigt /* # Fuer debugging error_reporting(E_ALL); ini_set('display_errors', 1); #echo __LINE__."<br>"; */ $user_admin=$_COOKIE["user_admin"]; require("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php $db = dbconnect(); $result_header = $db->query("SELECT export_header FROM profil WHERE user = '$user_admin'"); $row_header = $result_header->fetch_array(); if($row_header['export_header'] == 'utf8'){ header("Content-Type: text/html; charset=utf-8"); } require_once("func_rollenrechte.php"); $user_admin=$_COOKIE["user_admin"]; $timezone = 'Europe/Berlin'; ini_set('date.timezone',$timezone); if(isset($_GET['mon'])){ $mon = $_GET['mon']; }else{ $mon = ""; } if(isset($_GET['jahr'])){ $jahr = $_GET['jahr']; }else{ $jahr = ""; } if(isset($_GET['tag'])){ $tag = $_GET['tag']; }else{ $tag = ""; } if(isset($_GET['typ'])){ $typ = $_GET['typ']; }else{ $typ = ""; } if(isset($_GET['lid'])){ $lid = $_GET['lid']; }else{ $lid = ""; } // Rechteüberprüfung $db = dbconnect(); if ($user_admin == ""){ require("index.php"); exit;} //Wenn man nicht angemeldet ist, darf man nicht auf die Seite if(!rore($user_admin,'a_outlook','RE')){require("lib/rechte.php");exit;} // Rechteüberprüfung ende $db = dbconnect(); if($mon < 10){ $mon = "0".$mon; # 0 voranstellen } ################# ## TYP=1 Einzelexport ################# if ($typ == 1){ $datum = "$jahr-$mon-$tag"; $Filename = "LG-Online_Monat_$lid.ics"; $query2 = "SELECT lid, textstelle, ueberschrift, vorwort, botschaft, textwort, inhalt, zusammenfassung, kontext, datum, DATE_Format(datum, '%d') tag, DATE_Format(datum, '%m') monat, DATE_Format(datum, '%Y') jahr, DATE_Format(datum, '%Y-%m-%d')AS datum_berechnung, kid, ukid FROM quelle WHERE lid=$lid "; } ################# ## TYP=2 Monatsexport ################# if ($typ == 2){ $Filename = "LG-Online-".$jahr."-".$mon.".ics"; $datum = "$jahr-$mon"; $query2 = "SELECT lid, textstelle, ueberschrift, textwort, vorwort, botschaft, inhalt, zusammenfassung, kontext, datum, DATE_Format(datum, '%d') tag, DATE_Format(datum, '%m') monat, DATE_Format(datum, '%Y') jahr, DATE_Format(datum, '%Y-%m-%d')AS datum_berechnung, kid, ukid FROM quelle WHERE datum LIKE'$datum%' AND kid=1 AND ( ukid=1 OR ukid=2 OR ukid=6 OR ukid=13 OR ukid=14 OR ukid=15 OR ukid=16 OR ukid=17 OR ukid=22 OR ukid=25 OR ukid=26 OR ukid=30 OR ukid=68 ) ORDER BY datum ASC "; } header("Content-Type: text/x-vCalendar"); header("Content-Disposition: inline; filename=$Filename"); $result = $db->query( $query2) or die ("Cannot execute query2"); echo"BEGIN:VCALENDAR VERSION:2.0 METHOD:PUBLISH"; while ($row = $result->fetch_array()){ $uid = md5($row['lid']); $lieder=""; ## Sonst bekommen bei der Schleife die nachfolgenden GDs dieselben Lieder, wenn keine erfasst wurden $el=""; $al=""; $wl=""; $date_nlg = mktime(0, 0, 0, 12, 1, 2007); // Datum ab dem neue LGs gelten $date_nlg_format = date("Y-m-d", $date_nlg); // ISO-8601 Format wie in der Datenbank: Formatierung für Vergleiche erforderlich $switch_date = strtotime ($date_nlg_format); //Umrechnung des Fristgrenztages in eine Zahl $lg_datum = strtotime ($row['datum_berechnung']); // Umrechnung des Enddatums in eine Zahl $result2 = $db->query("SELECT notiz FROM notizen WHERE lid = '$row[lid]' AND user = '$user_admin' "); $row2 = $result2->fetch_array(); ################################## ## Aufbau der Lieder ################################## $query = "SELECT nr, titel FROM lieder_quelle, lieder WHERE art='el' AND lid=$row[lid] AND lieder_quelle.gbid = lieder.gbid ORDER BY lieder.gbid"; $result4 = $db->query( $query) or die ("Cannot execute query4"); $zaehler = 1; $el =""; while ($row4 = $result4->fetch_array()){ if($zaehler != 1){ $el .= "; $row4[nr] - $row4[titel]"; }else{ $el = "Eingangslied: $row4[nr] - $row4[titel]"; $zaehler = $zaehler+1; } } $query = "SELECT nr, titel FROM lieder_quelle, lieder WHERE art='al' AND lid=$row[lid] AND lieder_quelle.gbid = lieder.gbid ORDER BY lieder.gbid"; $result4 = $db->query( $query) or die ("Cannot execute query AL"); $zaehler = 1; $al =""; while ($row4 = $result4->fetch_array()){ if($zaehler != 1){ $al .= "; $row4[nr] - $row4[titel]"; }else{ $al = "Abendmahlslied: $row4[nr] - $row4[titel]"; $zaehler = $zaehler+1; } } $query = "SELECT nr, titel FROM lieder_quelle, lieder WHERE art='wl' AND lid=$row[lid] AND lieder_quelle.gbid = lieder.gbid ORDER BY lieder.gbid"; $result4 = $db->query( $query) or die ("Cannot execute query WL"); $zaehler = 1; $wl =""; while ($row4 = $result4->fetch_array()){ if($zaehler != 1){ $wl .= "; $row4[nr] - $row4[titel]"; }else{ $wl = "Weitere Lieder: $row4[nr] - $row4[titel]"; $zaehler = $zaehler+1; } } $query = "SELECT nr, titel FROM lieder_quelle, lieder WHERE art='bl' AND lid=$row[lid] AND lieder_quelle.gbid = lieder.gbid ORDER BY lieder.gbid"; $result5 = $db->query( $query) or die ("Cannot execute query BL"); $zaehler = 1; $bl = ""; while ($row5 = $result5->fetch_array()){ if($zaehler != 1){ $bl .= "; $row5[nr] - $row5[titel]"; }else{ $bl = "Bußlied: $row5[nr] - $row5[titel]"; $zaehler = $zaehler+1; } } if ($el != ""){ $el .= "\\n"; } if ($al != ""){ $al .= "\\n"; } if ($wl != ""){ $wl .= "\\n"; } if ($bl != ""){ $bl .= "\\n"; } if ($el != "" OR $al != "" OR $wl != "" OR $bl != ""){ $lieder ="$el$bl$al$wl\\n"; } ################################## ## Aufbau der Lieder ENDE ################################## ################################## ## Kategorie und Unterkategorie ################################## $result1_kid = $db->query("SELECT bezeichnung FROM kategorie WHERE kid =$row[kid] "); $row_kid = $result1_kid->fetch_array(); $result1_ukid = $db->query("SELECT bezeichnung FROM unterkategorie WHERE ukid =$row[ukid] "); $row_ukid = $result1_ukid->fetch_array(); ###################################################################### ## Prüfung, ob Bibellesung vorhanden ist, die zur Kategorie passt ###################################################################### # Neu am 05.12.2019: Bibellesung Jugendgottesdienst, die ja immer am ersten im Monat sind, wurden auch bei normalen GDs angezeigt, die am 01. des Monats waren. $bibellesung_header = ""; $bibellesung = ""; $result_lesung = $db->query( "SELECT lid FROM quelle a WHERE datum='$row[datum_berechnung]' AND kid = 12 AND lid != '$lid' AND a.ukid = (select ukid from unterkategorie b where a.ukid=b.ukid and b.bezeichnung ='$row_ukid[bezeichnung]') "); $row_lesung = $result_lesung->fetch_array(); if($row_lesung['lid'] != ''){ require_once("lesung.php"); $bibellesung = lesung($row['datum_berechnung'], $template, $verzeichnis, $filename_podcast_lesung); } $text = strip_tags($row['inhalt'],'<br>,<li>,<p>,<ul>'); $textstelle = strip_tags($row['textstelle'],'<br>,<li>,<p>,<ul>'); $textwort = strip_tags($row['textwort'],'<br>,<li>,<p>,<ul>'); $ueberschrift = strip_tags($row['ueberschrift'],'<br>,<li>,<p>,<ul>'); $kategorie = strip_tags($row_kid['bezeichnung'],'<br>,<li>,<p>,<ul>'); $unterkategorie = strip_tags($row_ukid['bezeichnung'],'<br>,<li>,<p>,<ul>'); $notiz = strip_tags($row2['notiz'],'<br>,<li>,<p>,<ul>'); # =0D=0A --> Zeilenumbrüche im VCS if ($lg_datum >= $switch_date){ $botschaft = strip_tags($row['botschaft'],'<br>,<li>,<p>,<ul>'); $vorwort = strip_tags($row['vorwort'],'<br>,<li>,<p>,<ul>'); $zusammenfassung = strip_tags($row['zusammenfassung'],'<br>,<li>,<p>,<ul>'); $kontext = strip_tags($row['kontext'],'<br>,<li>,<p>,<ul>'); } $lieder = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $lieder ); $lieder = trim(str_replace(array("\n", "\r") , array("","") , $lieder )); $lieder = html_entity_decode($lieder); $textstelle = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $textstelle ); $textstelle = trim(str_replace(array("\n", "\r") , array("","") , $textstelle )); $textstelle = html_entity_decode($textstelle); $textwort = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $textwort ); $textwort = trim(str_replace(array("\n", "\r") , array("","") , $textwort )); $textwort = html_entity_decode($textwort); $text = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $text ); $text = trim(str_replace(array("\n", "\r") , array("","") , $text )); $text = html_entity_decode($text); $ueberschrift = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $ueberschrift ); $ueberschrift = trim(str_replace(array("\n", "\r") , array("","") , $ueberschrift )); $ueberschrift = html_entity_decode($ueberschrift); if ($ueberschrift == ""){ $ueberschrift_header = ""; }else{ $ueberschrift_header = "\\n\\nÜberschrift:\\n"; } $bibellesung = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $bibellesung ); $bibellesung = trim(str_replace(array("\n", "\r") , array("","") , $bibellesung )); $bibellesung = html_entity_decode($bibellesung); if ($bibellesung == ""){ $bibellesung_header = ""; }else{ $bibellesung_header = "\\n\\nBibellesung:\\n"; } $kategorie = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $kategorie ); $kategorie = trim(str_replace(array("\n", "\r") , array("","") , $kategorie )); $kategorie = html_entity_decode($kategorie); if ($kategorie == ""){ $kategorie_header = ""; }else{ $kategorie_header = "\\n\\nKategorie:\\n"; } $unterkategorie = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $unterkategorie ); $unterkategorie = trim(str_replace(array("\n", "\r") , array("","") , $unterkategorie )); $unterkategorie = html_entity_decode($unterkategorie); $notiz = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $notiz ); $notiz = trim(str_replace(array("\n", "\r") , array("","") , $notiz )); $notiz = html_entity_decode($notiz); if ($notiz == ""){ $notiz_header = ""; }else{ $notiz_header = "\\n\\nNotizen:\\n"; } if ($lg_datum >= $switch_date){ #Neue LGs? $text_header="\\n\\nAusführungen:\\n"; ## Soll nur angezeigt werden in den neuen LGs $vorwort = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $vorwort ); $vorwort = html_entity_decode($vorwort); $vorwort = trim(str_replace(array("\n", "\r") , array("","") , $vorwort )); $vorwort_header="\\n\\nVorwort:\\n"; $botschaft = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $botschaft ); $botschaft = html_entity_decode($botschaft); $botschaft = trim(str_replace(array("\n", "\r") , array("","") , $botschaft )); $botschaft_header="\\n\\nBotschaft:\\n"; $zusammenfassung = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $zusammenfassung ); $zusammenfassung = trim(str_replace(array("\n", "\r") , array("","") , $zusammenfassung )); $zusammenfassung = html_entity_decode($zusammenfassung); # Das Tag <ul> wird durch Zeilenumbruch ersetzt (=0D=0A). Gerade bei der Zusammenfassung # kommt es vor, dass mit <ul> begonnen wird. Dann soll nicht gleich eine Leerzeile # nach der Überschrift erscheinen if(preg_match("/^=0D=0A/", $zusammenfassung)){ $zusammenfassung_header="=\\n\\nZusammenfassung:"; }else{ $zusammenfassung_header="\\n\\nZusammenfassung:\\n"; } $kontext = str_replace (array("<br /><ul>", "<br /> ", "<br />", "<ul>", "<li>", "</li>", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "„", "“", "\t", "</ul>", "'" ) , array('', "\\n", "\\n", "", '\\n-', "", "ä", "Ä", "ü", "Ü", "ö", "Ö", "ß", "\"", "\"", "", "\\n", "'" ) , $kontext ); $kontext = trim(str_replace(array("\n", "\r") , array("","") , $kontext )); $kontext = html_entity_decode($kontext); $kontext_header="\\n\\nKontext:\\n"; } $wochentag = date("l", mktime(0,0,0,$row['monat'],$row['tag'],$row['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'){ $datum = date("Ymd", mktime(0,0,0,$row['monat'],$row['tag']+$row_gd['wgd'],$row['jahr'])); // + relativer Tag zum Mittwoch Do--> +1 }else{ $datum = date("Ymd", mktime(0,0,0,$row['monat'],$row['tag'],$row['jahr'])); // Diese Zeile ist für Sonntag, da braucht man den Tag ja nicht verschieben, nur Werktags } # Pear Package date: Wird hier zur Überprüfung der Sommerzeit verwendet #require_once("Date/Date.php"); $sommerzeit = date("I", mktime(6, 0, 0, $row['monat'], $row['tag'], $row['jahr'])); #echo $sommerzeit."<br>"; #exit; #$date=new Date("$row[jahr]-$row[monat]-$row[tag] 06:00:00"); ## Uhrzeit egal. Zu den Zeiten wo GDs stattfinden ist die Zeitumstellung schon rum // UTC hat keine Sommerzeit #$date->setTZbyID("Europe/Berlin"); if ($sommerzeit == 1) { $faktor = "0"; }else{ $faktor = "1"; } switch($wochentag) { case 'Sunday': $stunde_beg = 7+$faktor; # Sommerzeitbedingt $stunde_end = 8+$faktor; # Sommerzeitbedingt $vCalStart = "$datum"."T0".$stunde_beg."3000Z"; $vCalEnd ="$datum"."T0".$stunde_end."3000Z"; break; case 'Wednesday': $stunde_beg = 18+$faktor; # Sommerzeitbedingt $stunde_end = 19+$faktor; # Sommerzeitbedingt $vCalStart = "$datum"."T".$stunde_beg."0000Z"; $vCalEnd ="$datum"."T".$stunde_end."0000Z"; break; case 'Thursday': $stunde_beg = 18+$faktor; # Sommerzeitbedingt $stunde_end = 19+$faktor; # Sommerzeitbedingt $vCalStart = "$datum"."T".$stunde_beg."0000Z"; $vCalEnd ="$datum"."T".$stunde_end."0000Z"; break; default: $stunde_beg = 7+$faktor; # Sommerzeitbedingt $stunde_end = 8+$faktor; # Sommerzeitbedingt $vCalStart = "$datum"."T0".$stunde_beg."3000Z"; $vCalEnd ="$datum"."T0".$stunde_end."3000Z"; break; } $lieder = strip_tags($lieder); $textwort = strip_tags($textwort); $vorwort_header = strip_tags($vorwort_header); $vorwort = strip_tags($vorwort); $botschaft_header = strip_tags($botschaft_header); $botschaft = strip_tags($botschaft); $text_header = strip_tags($text_header); $text = strip_tags($text); $zusammenfassung_header = strip_tags($zusammenfassung_header); $zusammenfassung = strip_tags($zusammenfassung); $kontext_header = strip_tags($kontext_header); $kontext = strip_tags($kontext); $notiz_header = strip_tags($notiz_header); $notiz = strip_tags($notiz); $ueberschrift_header = strip_tags($ueberschrift_header); $ueberschrift = strip_tags($ueberschrift); $kategorie = strip_tags($kategorie); $kategorie_header = strip_tags($kategorie_header); $unterkategorie = strip_tags($unterkategorie); $textstelle = strip_tags($textstelle); $bibellesung = strip_tags($bibellesung); $description = "$lieder$textstelle: \"$textwort\" $bibellesung_header$bibellesung $ueberschrift_header$ueberschrift $kategorie_header$kategorie - $unterkategorie $vorwort_header$vorwort $botschaft_header$botschaft $text_header$text $zusammenfassung_header$zusammenfassung $kontext_header$kontext $notiz_header$notiz"; echo" BEGIN:VEVENT DTSTART:$vCalStart DTEND:$vCalEnd LOCATION: TRANSP: OPAQUE SEQUENCE:0 SUMMARY:Gottesdienst: $ueberschrift CATEGORIES:NAK DESCRIPTION:$description PRIORITY:1 CLASS:PUBLIC ATTACH;VALUE=URL:http://www.lg-on.de UID: $uid END:VEVENT"; } echo"END:VCALENDAR"; exit; ?>