Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* Event-Kalender - Einstellungen - verbindung.php (utf-8)
* - https://werner-zenk.de
*
Dieses Script wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne irgendeine Garantie;
ohne auch nur die implizierte Gewährleistung der Marktgängigkeit oder Eignung für einen bestimmten Zweck.
Weitere Informationen finden Sie in der GNU General Public License.
Siehe Datei: license.txt - http://www.gnu.org/licenses/gpl.html
Diese Datei und der gesamte "Event-Kalender" ist urheberrechtlich geschützt (c) 2021 Werner Zenk alle Rechte vorbehalten.
Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
*
* Hier können Sie den Event-Kalender individuell anpassen.
Achtung: Fehlerhafte Angaben können Probleme verursachen!
Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*/
// modify RaHa ->
require_once "verbindung_myfunctions.inc.php";
// <- modify RaHa
/* Jedem angemeldeten Benutzer nur seine Events anzeigen (ja/nein)
Die Events müssen vom Benutzer als "Privat" markiert werden! */
$EINZELPERSON_ANZEIGE = "nein"; // nein
/* Den Namen des Benutzers beim Event anzeigen (ja/nein) */
$BENUTZER = "ja"; // nein
/* Den Namen des Benutzers im Formular (durch den Admin.) anpassen (ja/nein) */
$BENUTZER_EDIT = "nein"; // nein
/* Die Beschreibung nur den angemeldeten Benutzern anzeigen (ja/nein) */
$BESCHREIBUNG_ANZEIGE = "nein"; // nein
/* Adressdatenbank einbinden (ja/nein)
Im Formularfeld: "Adresse" werden die Adressen zur Auswahl angezeigt.
*/
$ADRESSDATENBANK = "ja"; // nein
/*
* Kalender
*/
/* Kalender Beschriftung
Eine Beschriftung, ein Bild eintragen oder leer lassen. */
$KALENDER_BESCHRIFTUNG = '<img src="ev-header.png">'; // leer!
/* Zur Aktivierung das Kommentarzeichen (#) entfernen */
# $KALENDER_BESCHRIFTUNG = '<img src="bild.jpg">'; // Bild
/* Monatsbilder - Jeden Monat ein anderes Bild anzeigen */
# $KALENDER_BESCHRIFTUNG = '<div id="monatsbilder"></div>'; // <div id="monatsbilder"></div>
/* Feiertage anzeigen (ja/nein) */
$FEIERTAGE = "ja"; // ja
/* Kalenderblatt anzeigen (ja/nein) */
$KALENDERBLATT = "ja"; // ja
/* Die Namen der Wochentage ausschreiben (ja/nein) */
$WOCHENTAGSNAMEN = "nein"; // nein
/* Vorschau-Button (und BB-Code Button) im Formular anzeigen (ja/nein)
Für weitere Details, siehe Datei: "lies_mich.txt" */
$VORSCHAU_BUTTON = "ja"; // nein
/* Anzahl der aktuellen Events der nächsten Tage (Minimale Angabe) */
$AKTUELLE_EVENTS_TAGE = 14; // 14
/* Event mit einem Permalink (https://de.wikipedia.org/wiki/Permalink) anzeigen (ja/nein) */
$PERMALINK = "ja"; // ja
/*
* Darstellung und Formate
*/
// modify RaHa ->
require_once "verbindung_darformate.inc.php";
// <- modify RaHa
/* Standortbestimmung für die Anzeige von Sonnenauf.- und Sonnenuntergang (im Kalenderblatt)
Die geografische Länge und Breite des Standorts ermitteln Sie z.B. im Programm "Google Earth" oder
unter: https://werner-zenk.de/javascript/geolocation_api_bei_knopfdruck_koordianten_ausgeben.php */
$GEO_BREITE = "49.95"; // 49.95
$GEO_LAENGE = "10.95"; // 10.95
$REGION = ""; // Stadt, Ort, Region, Bezirk, ... (oder leer lassen!)
/* Anzahl der Serienevents (aufeinander folgende Tage)
die der Benutzer maximal eingeben kann. */
$SERIENEVENTS = 365;
/* Datumsformat
1 = "20 Dezember 2021 (So.)"
2 = "20 Dezember 2021 Sonntag"
3 = "Sonntag, 20 Dezember 2021"
4 = "20.12.2021 So."
5 = "20.12.2021" */
$DATUMSFORMAT = 1; // 1
/* Stundenformat (zur Auswahl im Kalendertag)
1 = 10:10, 10:20, 10:30, 10:40, 10:50
2 = 10:05, 10:10, 10:15, 10:20, 10:25, 10:30, 10:35, 10:40, 10:45, 10:50, 10:55
3 = 10:15, 10:30, 10:45 */
$STUNDENFORMAT = 1; // 1
/* Events können nur eintragen werden, wenn sich
das Jahr zwischen den folgenden Angaben befindet: */
$JAHR_MIN = 1900; // 1900 oder z.B.: date("Y") für das aktuelle Jahr
$JAHR_MAX = 2100; // 2100 oder z.B.: date("Y")+10 für das aktuelle Jahr + 10 Jahre
/*
* E-Mail Benachrichtigung (Beta2!)
Für weitere Details, siehe Datei: "lies_mich.txt" */
// modify RaHa -> muss für SENDE-EVENT-MAIL gesetzt werden!
/* E-Mail Adresse (eine beim Provider registrierte E-Mail Adresse).
Leer lassen, wenn die Option nicht angezeigt werden soll. */
$ABSENDER = "automail@checkip.net"; // user@example.com
// Empfänger der Nachricht
$EMPFAENGER = "mail@checkip.net"; // user2@example2.com
// <- modify RaHa
/* Wie viele Tage soll vor dem Event eine Benachrichtigung
versendet werden (Werte von 0 bis 30) */
$TAGE_DAVOR = 1; // 1
/*
* Experten Einstellungen
*/
/* Alte Events löschen (ja/nein) */
$DEL_EVENTS = "nein"; // nein
/* Löschen nach X-Tagen */
$DEL_TAGE = 365; // 365, Minimum: 1, Max.: 1000 Tage
/* Pflichtfelder im Formular
Die Kommentarzeichen (#) bei Pflichtfeldern entfernen. */
$PLICHTFELDER = [
# 'beschreibung',
# 'adresse',
# 'prioritaet',
# 'kategorie',
# 'aufgabe',
];
/* Folgende HTML-Tags können vom Benutzer verwendet werden.
Aus Sicherheitsgründen wird empfohlen diese Option nicht zu verwenden! */
$HTML_TAGS = ""; // z.B: <img><b><u><ol><li><del><mark>
/* Wie lange sollen Cookies gespeichert werden, Anzahl in Tagen. */
$COOKIE_TAGE = 10; // 10
/* Name der Datenbank-Tabelle (Vorzeichen)
Ändern wenn z.B.: eine Tabelle mit dem Namen: "mai20_kalender" bereits existiert!
(Nach der Installation bitte nicht mehr ändern!) */
$TABLE_PREFIX = "mai20"; // mai20 - Letzte Änderung an der DB-Tabelle: Mai 2020
/* Zeitzone setzen
Infos unter: http://php.net/manual/de/timezones.europe.php */
date_default_timezone_set("Europe/Berlin");
/* PHP-Meldungen zum testen anzeigen (0/E_ALL) */
$error = E_ALL; // E_ALL = anzeigen
if (isset($_SERVER["SERVER_NAME"])) { error_reporting($_SERVER["SERVER_NAME"] == 'localhost' ? E_ALL : $error); }
/* Bei einer fehlerhaften Verbindung zur Datenbank eine Nachricht ausgeben (ja/nein) */
$FEHLER_VERBINDUNG = "ja"; // ja
/* Beginn der Woche (Kalenderwoche)
Damit lässt sich die Woche im Kalender nicht ändern,
es wird nur der Modus bei der MySQL - Anweisung: "WEEK(datetime, Modus)" verändert!
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week */
$KW_MODUS = 3; // 3
/* PHP-Version überprüfen */
if (version_compare(PHP_VERSION, '7.3') < 0) {
die('<p><strong>Event-Kalender</strong><br>✘ Aktuelle PHP-Version: ' . PHP_VERSION . '<br>✔ Voraussetzung mind.: 7.3</p>');
}
/* Zeichenkodierung der aktuellen Datei überprüfen */
if (bin2hex('ä') !== 'c3a4') {
die('<p><strong>Event-Kalender</strong><br>✘ Die Datei: "<em>' . basename(__FILE__) . '</em>" muss unbedingt mit der Zeichenkodierung "<em>UTF-8</em> (ohne Signatur (BOM))" gespeichert werden!<br>
Siehe: <a href="https://werner-zenk.de/tipps/schriftzeichen_richtig_darstellen.php" target="_blank">Schriftzeichen richtig darstellen</a></p>');
}
// modify RaHa ->
require_once "dbinfo.inc.php";
require_once "verbindung_myfunctions2.inc.php";
require_once "verbindung_autoinstaller.inc.php";
// <- modify RaHa
?>
Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
/*
* Event-Kalender - kalenderform.php (utf-8)
* - https://werner-zenk.de
Dieses Script wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne irgendeine Garantie;
ohne auch nur die implizierte Gewährleistung der Marktgängigkeit oder Eignung für einen bestimmten Zweck.
Weitere Informationen finden Sie in der GNU General Public License.
Siehe Datei: license.txt - http://www.gnu.org/licenses/gpl.html
Diese Datei und der gesamte "Event-Kalender" ist urheberrechtlich geschützt (c) Werner Zenk alle Rechte vorbehalten.
Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
*/
// modify RaHa ->
// Modifikation SENDE-EVENT-MAIL
function sendeeventmail() {
global $db, $TABLE_PREFIX, $startMonat, $startTag, $startJahr, $volltag, $HTML_TAGS, $name, $gruppe, $wiederholung, $benachrichtigung, $privat, $KATEGORIEN, $KATEGORIE_EMAIL, $PRIORITAET, $PRIORITAET_KATEGORIE_FARBE, $ABSENDER;
if ($benachrichtigung !== 1) { return; }
if (strpos($_POST["ort"], "@") > 0 ) {
$MAIL_EMPFAENGER = trim($_POST["ort"]);
// hier sollte noch eine Überprüfung hin, ob die Adresse vorhanden ist
} else {
$ist_kategorie = $_POST["kategorie"];
$ist_kategorie = array_keys($KATEGORIEN, $ist_kategorie);
if (isset($ist_kategorie[0])) { $ist_kategorie = $ist_kategorie[0]; } else { return; }
if (!isset($KATEGORIE_EMAIL[$ist_kategorie])) { return; }
$MAIL_EMPFAENGER = $KATEGORIE_EMAIL[$ist_kategorie];
}
if (isset($_POST["eintragen"])) {
// Datum zusammensetzen
$start = $startJahr . '-' . sprintf("%02s", $startMonat) . '-' . sprintf("%02s", $startTag) . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde"] . ':' . $_POST["minute"]);
$ende = $startJahr . '-' . sprintf("%02s", $startMonat) . '-' . sprintf("%02s", $startTag) . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde2"] . ':' . $_POST["minute2"]);
} else {
// Datum zusammensetzen
$start = $_POST["jahr"] . '-' . sprintf("%02s", $_POST["monat"]) . '-' . sprintf("%02s", $_POST["tag"]) . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde"] . ':' . $_POST["minute"]);
$ende = $_POST["jahr"] . '-' . sprintf("%02s", $_POST["monat"]) . '-' . sprintf("%02s", $_POST["tag"]) . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde2"] . ':' . $_POST["minute2"]);
}
$start = str_replace("00:00", "", $start);
$ende = str_replace("00:00", "", $ende);
include_once "kalendersende-event-mail.php";
return;
}
// <- modify RaHa
/*
* Anmeldung
*/
if (isset($_POST["anmelden"])) {
// Benutzer überprüfen
if (
isset($NAME_PASS[trim($_POST["name"])]) &&
$NAME_PASS[trim($_POST["name"])] === $_POST["passwort"]
) {
$_SESSION["name"] = $_POST["name"];
echo '<!-- P -->'; // OK
} else {
echo '<!-- X -->'; // KO
}
}
/*
* Abmeldung
*/
if (isset($_POST["abmelden"])) {
if (session_destroy()) {
$_SESSION = [];
echo '<!-- O -->'; // Die Abmeldung war erfolgreich.
}
}
/*
* Event eintragen
*/
if (isset($_POST["eintragen"])) {
// Benutzer überprüfen
if (BENUTZER == true) {
// Datum überprüfen
if (
checkdate($_POST["monat"], $_POST["tag"], $_POST["jahr"]) &&
$_POST["jahr"] >= $JAHR_MIN &&
$_POST["jahr"] <= $JAHR_MAX
) {
// Ganztägig / Wiederholung / Benachrichtigung / Privat
$_POST["beschreibung"] = strip_tags(trim($_POST["beschreibung"]), $HTML_TAGS);
$volltag = isset($_POST["volltag"]) ? 1 : 0;
$wiederholung = isset($_POST["wiederholung"]) ? 1 : 0;
$benachrichtigung = isset($_POST["benachrichtigung"]) ? 1 : 0;
$privat = isset($_POST["privat"]) ? 1 : 0;
// Name ermitteln
if (isset($_POST["name"])) {
$name = $_POST["name"];
// Wenn der Name fehlt
if (empty($_POST["name"])) {
$name = $_SESSION["name"];
}
} else {
$name = $_SESSION["name"];
}
// Dauer des Events
$dauer = !ctype_digit($_POST["dauer"]) ? '1' : $_POST["dauer"];
// Serienevents
if (
$dauer >= 1 &&
$dauer <= $SERIENEVENTS
) {
$startTag = $_POST["tag"];
$startMonat = $_POST["monat"];
$startJahr = $_POST["jahr"];
$zaehler = 0;
$gruppe = date("YmdHis") . mt_rand(100, 999);
$starttime = mktime(0, 0, 0, $startMonat, $startTag, $startJahr);
if (!isset($_POST["tageauswahl"])) {
for ($i = 0; $i < $_POST["repeatcount"]; $i++) {
$startJahr = date("Y", $starttime);
$startMonat = date("m", $starttime);
$startTag = date("d", $starttime);
$everyTime = intval($_POST["repeatnr"]);
$everyTime = ($everyTime < 1) ? 1 : $everyTime;
if ($_POST["repeat"] == "NORMAL") {
$_POST["repeatnr"] = 1;
$_POST["repeatcount"] = 1;
} else {
eventEintragen();
$tagtime = $starttime;
for ($y = 1; $y < $dauer; $y++) {
$tagtime = strtotime("+ 1 day", $tagtime);
$startJahr = date("Y", $tagtime);
$startMonat = date("m", $tagtime);
$startTag = date("d", $tagtime);
eventEintragen();
}
}
switch ($_POST["repeat"]) {
case "NORMAL":
for ($y = 0; $y < $dauer; $y++) {
eventEintragen();
$starttime = strtotime("+ 1 day", $starttime);
$startJahr = date("Y", $starttime);
$startMonat = date("m", $starttime);
$startTag = date("d", $starttime);
}
break;
case "TAG":
$days = "+" . strval($everyTime) . " day";
$starttime = strtotime($days, $starttime);
break;
case "WOCHE":
$weeks = "+" . $everyTime . " week";
$starttime = strtotime($weeks, $starttime);
break;
case "MONAT4W":
$everyTime = intval($_POST["repeatnr"]) * 4;
$everyTime = ($everyTime < 1) ? 1 : $everyTime;
$weeks = "+" . $everyTime . " week";
$starttime = strtotime($weeks, $starttime);
break;
case "MONAT":
$months = "+" . $everyTime . " month";
$starttime = strtotime($months, $starttime);
break;
case "MONTAG":
$monday = "+" . $everyTime . " Monday";
$starttime = strtotime($monday, $starttime);
break;
case "DIENSTAG":
$tuesday = "+" . $everyTime . " Tuesday";
$starttime = strtotime($tuesday, $starttime);
break;
case "MITTWOCH":
$wednesday = "+" . $everyTime . " Wednesday";
$starttime = strtotime($wednesday, $starttime);
break;
case "DONNERSTAG":
$thursday = "+" . $everyTime . " Thursday";
$starttime = strtotime($thursday, $starttime);
break;
case "FREITAG":
$friday = "+" . $everyTime . " Friday";
$starttime = strtotime($friday, $starttime);
break;
case "SAMSTAG":
$saturday = "+" . $everyTime . " Saturday";
$starttime = strtotime($saturday, $starttime);
break;
case "SONNTAG":
$sunday = "+" . $everyTime . " Sunday";
$starttime = strtotime($sunday, $starttime);
break;
}
}
} else {
// Tageauswahl (mehrere Tage wurden ausgewählt)
if (isset($_POST["tage"])) {
// Eintragen
foreach ($_POST["tage"] as $tag) {
// Datum zusammensetzen
$start = $tag . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde"] . ':' . $_POST["minute"]) . ':' . '01';
$ende = $tag . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde2"] . ':' . $_POST["minute2"]) . ':' . '00';
// Farben tauschen
tauschePrioritaetFarbe_kategorieFarbe();
$insert = $db->prepare("INSERT INTO `" . $TABLE_PREFIX . "_kalender`
SET
`start`= :start,
`ende`= :ende,
`volltag`= :volltag,
`name`= :name,
`event`= :event,
`beschreibung`= :beschreibung,
`adresse`= :adresse,
`prioritaet`= :prioritaet,
`gruppe`= :gruppe,
`benachrichtigung`= :benachrichtigung,
`privat`= :privat,
`aufgabe`= :aufgabe,
`kategorie`= :kategorie");
$insert->execute([
':start' => $start,
':ende' => $ende,
':volltag' => $volltag,
':name' => $name,
':event' => strip_tags($_POST["event"]),
':beschreibung' => strip_tags(trim($_POST["beschreibung"]), $HTML_TAGS),
':adresse' => $_POST["adresse"],
':prioritaet' => $_POST["prioritaet"],
':gruppe' => $gruppe,
':benachrichtigung' => $benachrichtigung,
':privat' => $privat,
':aufgabe' => $_POST["aufgabe"],
':kategorie' => $_POST["kategorie"]
]);
}
$dauer = count($_POST["tage"]);
} else {
die('<!-- X2 -->'); // Ungültiges Datum
}
}
$ef = ($dauer == 1) ? 'E' : 'F';
echo $_POST["jahr"] . '|' . $_POST["monat"] . '|' . $ef;
// modify RaHa ->
// Modifikation SENDE-EVENT-MAIL
sendeeventmail();
// <- modify RaHa
} else {
echo '<!-- X6 -->'; // Die Anzahl der Tage benötigt einen gültigen Wert!
}
} else {
echo '<!-- X2 -->'; // Ungültiges Datum
}
}
}
/*
* Event kopieren oder bearbeiten
*/
if (isset($_POST["bearbeiten"])) {
// Datum überprüfen
if (
checkdate($_POST["monat"], $_POST["tag"], $_POST["jahr"]) &&
$_POST["jahr"] >= $JAHR_MIN &&
$_POST["jahr"] <= $JAHR_MAX
) {
// Benutzer überprüfen
if (BENUTZER == true) {
// Name und Gruppe aus der DB-Tabelle holen
$select = $db->prepare("SELECT `name`, `gruppe`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE `id` = :id");
$select->execute([':id' => $_POST["id"]]);
$status = $select->fetch();
// Berechtigung des Benutzers überprüfen
if (
$_SESSION["name"] === $status["name"] ||
$_SESSION["name"] === $NAME
) { // Admin.
// Datum zusammensetzen
$start = $_POST["jahr"] . '-' . zZ($_POST["monat"]) . '-' . zZ($_POST["tag"]) . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde"] . ':' . $_POST["minute"]) . ':' . '01';
$ende = $_POST["jahr"] . '-' . zZ($_POST["monat"]) . '-' . zZ($_POST["tag"]) . ' ' . (isset($_POST["volltag"]) ? '00:00' : $_POST["stunde2"] . ':' . $_POST["minute2"]) . ':' . '00';
// Ganztägig / Wiederholung / Benachrichtigung / Privat
$volltag = isset($_POST["volltag"]) ? 1 : 0;
$wiederholung = isset($_POST["wiederholung"]) ? 1 : 0;
$benachrichtigung = isset($_POST["benachrichtigung"]) ? 1 : 0;
$privat = isset($_POST["privat"]) ? 1 : 0;
// Name ermitteln
if (isset($_POST["name"])) {
$name = $_POST["name"];
if (empty($_POST["name"])) {
$name = $_SESSION["name"];
}
} else {
$name = $_SESSION["name"];
}
// Event kopieren
if (isset($_POST["kopieren"])) {
// Gruppe zuweisen
$gruppe = $status["gruppe"];
if (isset($_POST["neuegruppe"])) {
$gruppe = date("YmdHis") . mt_rand(100, 999);
}
$insert = $db->prepare("INSERT INTO `" . $TABLE_PREFIX . "_kalender`
SET
`start`= :start,
`ende`= :ende,
`volltag`= :volltag,
`name`= :name,
`event`= :event,
`beschreibung`= :beschreibung,
`adresse`= :adresse,
`prioritaet`= :prioritaet,
`gruppe`= :gruppe,
`wiederholung`= :wiederholung,
`benachrichtigung`= :benachrichtigung,
`privat`= :privat,
`aufgabe`= :aufgabe,
`kategorie`= :kategorie");
if ($insert->execute([
':start' => $start,
':ende' => $ende,
':volltag' => $volltag,
':name' => $name,
':event' => strip_tags($_POST["event"]),
':beschreibung' => strip_tags(trim($_POST["beschreibung"]), $HTML_TAGS),
':adresse' => $_POST["adresse"],
':prioritaet' => $_POST["prioritaet"],
':gruppe' => $gruppe,
':wiederholung' => $wiederholung,
':benachrichtigung' => $benachrichtigung,
':privat' => $privat,
':aufgabe' => $_POST["aufgabe"],
':kategorie' => $_POST["kategorie"]
])) {
echo intval($_POST["jahr"]) . '|' . intval($_POST["monat"]) . '|K';
}
}
// Event bearbeiten
else {
// Farben tauschen
tauschePrioritaetFarbe_kategorieFarbe();
$update = $db->prepare("UPDATE `" . $TABLE_PREFIX . "_kalender`
SET
`start`= :start,
`ende`= :ende,
`volltag`= :volltag,
`name`= :name,
`event`= :event,
`beschreibung`= :beschreibung,
`adresse`= :adresse,
`prioritaet`= :prioritaet,
`wiederholung`= :wiederholung,
`benachrichtigung`= :benachrichtigung,
`privat`= :privat,
`aufgabe`= :aufgabe,
`kategorie`= :kategorie
WHERE
`id` = :id");
if ($update->execute([
':start' => $start,
':ende' => $ende,
':volltag' => $volltag,
':name' => $name,
':event' => strip_tags($_POST["event"]),
':beschreibung' => $_POST["beschreibung"],
':adresse' => $_POST["adresse"],
':prioritaet' => $_POST["prioritaet"],
':wiederholung' => $wiederholung,
':benachrichtigung' => $benachrichtigung,
':privat' => $privat,
':aufgabe' => $_POST["aufgabe"],
':kategorie' => $_POST["kategorie"],
':id' => $_POST["id"]
])) {
echo intval($_POST["jahr"]) . '|' . intval($_POST["monat"]) . '|A';
}
}
// modify RaHa ->
// Modifikation SENDE-EVENT-MAIL
sendeeventmail();
// <- modify RaHa
} else {
echo '<!-- X3 -->'; // Keine Berechtigung zum ändern
}
}
} else {
echo '<!-- X2 -->'; // Ungültiges Datum
}
}
/*
* Event löschen
*/
if (
isset(
$_POST["loeschen"],
$_POST["bestaetigung"]
) || // Bestätigung zum löschen
isset($_POST["gruppe_del"])
) {
// Benutzer überprüfen
if (BENUTZER == true) {
// Jahr, Monat und Name aus der DB-Tabelle holen
$select = $db->prepare("SELECT YEAR(`start`) AS jahr, MONTH(`start`) AS monat, `name`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE `id` = :id");
$select->execute([':id' => $_POST["id"]]);
$status = $select->fetch();
// Berechtigung des Benutzers überprüfen
if (
$_SESSION["name"] === $status["name"] ||
$_SESSION["name"] === $NAME
) { // Admin.
// Löschen
if (isset($_POST["gruppe_del"])) {
$delete = $db->prepare("DELETE FROM `" . $TABLE_PREFIX . "_kalender`
WHERE `gruppe`= :gruppe");
if ($delete->execute([':gruppe' => $_POST["gruppe"]])) {
echo $status["jahr"] . '|' . $status["monat"] . '|M';
}
} else {
$delete = $db->prepare("DELETE FROM `" . $TABLE_PREFIX . "_kalender`
WHERE `id`= :id");
if ($delete->execute([':id' => $_POST["id"]])) {
echo $status["jahr"] . '|' . $status["monat"] . '|L';
}
}
} else {
echo '<!-- X4 -->'; // Sie haben keine Berechtigung diesen Event zu löschen!
}
}
}
/*
* Suche
*/
if (isset($_POST["suchbegriff"])) {
// Nach dem Marker (*) suchen und entfernen
$asterisk = substr_count($_POST["suchbegriff"], '*') > 0 ? true : false;
$suchbegriff = trim(str_replace("*", "", $_POST["suchbegriff"]));
// Ungültige HTML-Zeichen umwandeln
$suchbegriff = trim(htmlspecialchars($suchbegriff, ENT_HTML5, 'UTF-8'));
if ($suchbegriff != "") {
// Tipps zur Suche
$tippsZurSuche = '<details>
<summary>Tipps zur Suche</summary>
<p>Es kann nach einem <em>Event</em>, einer <em>Beschreibung</em> einem <em>Namen</em> einer <em>Kategorie</em>, einer <em>URL</em>, <br>
einer <em>Adresse</em>, einem <em>Schlüsselwort</em>, einem <em>Datum</em>, einer <em>Uhrzeit</em> oder einem Emoji 😉<br>
gesucht werden.</p>
<p>Beachten Sie dabei die Groß.- und Kleinschreibung sowie die Rechtschreibung!</p>
<p>Fügen Sie ein <span style="color: var(--highlight-color)">*</span> (Sternchen) hinzu, um im gesamten Kalender zu suchen.</p>
<p>Ein <span style="color: var(--highlight-color)">%</span> (Prozent-Zeichen) als Platzhalter für ein oder mehrere Zeichen, <br>
wenn Sie den Suchbegriff nicht genau kennen (z. B.: <em>Ph</em><span style="color: var(--highlight-color)">%</span><em>onie</em> für <em>Philharmonie</em>)<br>
oder einen <span style="color: var(--highlight-color)">_</span> (Unterstrich) für ein einzelnes Zeichen.</p>
<p>Um nach einem bestimmten Datum zu suchen geben Sie: <span style="color: var(--highlight-color)"><span title="Jahr">YYYY</span>-<span title="Monat">MM</span>-<span title="Tag">DD</span></span> ein<br>
(z. B.: <strong>' . date("Y-m-d") . '</strong>). Einen Monatstag erhalten Sie mit: <span style="color: var(--highlight-color)">-<span title="Monat">MM</span>-<span title="Tag">DD</span></span> (z. B.: <strong>' . date("-m-d") . '</strong>)<br>
oder: <span style="color: var(--highlight-color)">-%-<span title="Tag">DD</span></span> für einen Tag (z. B.: <strong>-%-' . date("d") . '</strong>).</p>
<p>Eine bestimmte Uhrzeit finden Sie mit: <span style="color: var(--highlight-color)"><span title="Stunden">HH</span>:<span title="Minuten">II</span></span> (z. B.: <strong>' . date("H:i") . '</strong>) oder <span style="color: var(--highlight-color)"><span title="Stunden">HH</span>:%</span><br>
(z. B.: <strong>' . date("H:") . '%</strong>) wenn die Minuten unbekannt sind.<br>
Das Komplette Datumsformat schaut folgend aus: <span style="color: var(--highlight-color)"><span title="Jahr (Y, 4-stellig)">YYYY</span>-<span title="Monat (M, 2-stellig)">MM</span>-<span title="Tag (D, 2-stellig)">DD</span> <span title="Stunden (H, 2-stellig)">HH</span>:<span title="Minuten (I, 2-stellig)">II</span>:<span title="Sekunden (S, 2-stellig)">SS</span></span>.</p>
</details>';
// Anzahl der Wörter ermitteln
$search = preg_split('/[\s]+/', $suchbegriff);
// Nur im ausgewählten Jahr oder im gesamten Kalender suchen
$arrays = isset($_POST["genau"]) ? [":suchbegriff" => $suchbegriff] : [":suchbegriff" => '%' . $suchbegriff . '%'];
$sqlAndYear = $asterisk == true ? '' : "AND YEAR(`start`) = :jahr";
$asterisk == false ? $arrays[":jahr"] = $_POST["jahr"] : null;
$ascdesc = isset($_POST["absteigend"]) ? 'DESC' : 'ASC';
$sqlOrderByLimit = " ORDER BY `" . $_POST["sortierung"] . "` " . $ascdesc . " LIMIT 250";
$sqlAlike = isset($_POST["genau"]) ? "=" : "LIKE";
// Nach mehreren Wörtern suchen
if (
count($search) > 1 &&
count($search) < 13 &&
mb_strlen($suchbegriff) >= 5 &&
!isset($_POST["genau"])
) {
// Wörter mit der Stopwortliste filtern
$stoppwortliste = array("anderes", "beides", "braucht", "darüber", "des", "dort", "einen", "etwas", "gekonnt", "hätte", "ich", "innerhalb", "ist", "kann", "konnten", "mein", "möchten", "nachdem", "nutzt", "seine", "solange", "somit", "unser", "vorher", "was", "wen", "wieder", "würde", "zwischen", "ab", "aber", "abgerufen", "abgerufene", "abgerufener", "abgerufenes", "acht", "ähnlich", "alle", "allein", "allem", "allen", "aller", "allerdings", "allerlei", "alles", "allgemein", "allmählich", "allzu", "als", "alsbald", "also", "am", "an", "ander", "andere", "anderem", "anderen", "anderer", "andererseits", "anderes", "anderm", "andern", "andernfalls", "anders", "anerkannt", "anerkannte", "anerkannter", "anerkanntes", "anfangen", "anfing", "angefangen", "angesetze", "angesetzt", "angesetzten", "angesetzter", "ansetzen", "anstatt", "arbeiten", "auch", "auf", "aufgehört", "aufgrund", "aufhören", "aufhörte", "aufzusuchen", "aus", "ausdrücken", "ausdrückt", "ausdrückte", "ausgenommen", "außen", "ausser", "außer", "ausserdem", "außerdem", "außerhalb", "author", "autor", "bald", "bearbeite", "bearbeiten", "bearbeitete", "bearbeiteten", "bedarf", "bedürfen", "bedurfte", "befragen", "befragte", "befragten", "befragter", "begann", "beginnen", "begonnen", "behalten", "behielt", "bei", "beide", "beiden", "beiderlei", "beides", "beim", "beinahe", "beitragen", "beitrugen", "bekannt", "bekannte", "bekannter", "bekennen", "benutzt", "bereits", "berichten", "berichtet", "berichtete", "berichteten", "besonders", "besser", "bestehen", "besteht", "beträchtlich", "bevor", "bezüglich", "bietet", "bin", "bis", "bisher", "bislang", "bist", "bleiben", "blieb", "bloß", "bloss", "böden", "brachte", "brachten", "brauchen", "braucht", "bräuchte", "bringen", "bsp.", "bzw", "ca.", "da", "dabei", "dadurch", "dafür", "dagegen", "daher", "dahin", "damals", "damit", "danach", "daneben", "dank", "danke", "danken", "dann", "dannen", "daran", "darauf", "daraus", "darf", "darfst", "darin", "darüber", "darüberhinaus", "darum", "darunter", "das", "dass", "daß", "dasselbe", "davon", "davor", "dazu", "dein", "deine", "deinem", "deinen", "deiner", "deines", "dem", "demnach", "demselben", "den", "denen", "denn", "dennoch", "denselben", "der", "derart", "derartig", "derem", "deren", "derer", "derjenige", "derjenigen", "derselbe", "derselben", "derzeit", "des", "deshalb", "desselben", "dessen", "desto", "deswegen", "dich", "die", "diejenige", "dies", "diese", "dieselbe", "dieselben", "diesem", "diesen", "dieser", "dieses", "diesseits", "dinge", "dir", "direkt", "direkte", "direkten", "direkter", "doch", "doppelt", "dort", "dorther", "dorthin", "drauf", "drei", "dreißig", "drin", "dritte", "drüber", "drunter", "du", "dunklen", "durch", "durchaus", "dürfen", "durfte", "dürfte", "durften", "eben", "ebenfalls", "ebenso", "ehe", "eher", "eigenen", "eigenes", "eigentlich", "ein", "einbaün", "eine", "einem", "einen", "einer", "einerseits", "eines", "einfach", "einführen", "einführte", "einführten", "eingesetzt", "einig", "einige", "einigem", "einigen", "einiger", "einigermaßen", "einiges", "einmal", "eins", "einseitig", "einseitige", "einseitigen", "einseitiger", "einst", "einstmals", "einzig", "ende", "entsprechend", "entweder", "er", "ergänze", "ergänzen", "ergänzte", "ergänzten", "erhält", "erhalten", "erhielt", "erhielten", "erneut", "eröffne", "eröffnen", "eröffnet", "eröffnete", "eröffnetes", "erst", "erste", "ersten", "erster", "es", "etc", "etliche", "etwa", "etwas", "euch", "euer", "eure", "eurem", "euren", "eurer", "eures", "fall", "falls", "fand", "fast", "ferner", "finde", "finden", "findest", "findet", "folgende", "folgenden", "folgender", "folgendes", "folglich", "fordern", "fordert", "forderte", "forderten", "fortsetzen", "fortsetzt", "fortsetzte", "fortsetzten", "fragte", "frau", "frei", "freie", "freier", "freies", "fuer", "fünf", "für", "gab", "gängig", "gängige", "gängigen", "gängiger", "gängiges", "ganz", "ganze", "ganzem", "ganzen", "ganzer", "ganzes", "gänzlich", "gar", "gbr", "geb", "geben", "geb
lieben", "gebracht", "gedurft", "geehrt", "geehrte", "geehrten", "geehrter", "gefallen", "gefälligst", "gefällt", "gefiel", "gegeben", "gegen", "gehabt", "gehen", "geht", "gekommen", "gekonnt", "gemacht", "gemäß", "gemäss", "gemocht", "genommen", "genug", "gern", "gesagt", "gesehen", "gestern", "gestrige", "getan", "geteilt", "geteilte", "getragen", "gewesen", "gewissermaßen", "gewollt", "geworden", "ggf", "gib", "gibt", "gleich", "gleichwohl", "gleichzeitig", "glücklicherweise", "gmbh", "gratulieren", "gratuliert", "gratulierte", "gut", "gute", "guten", "hab", "habe", "haben", "haette", "halb", "hallo", "hast", "hat", "hätt", "hatte", "hätte", "hatten", "hätten", "hattest", "hattet", "hen", "heraus", "herein", "heute", "heutige", "hier", "hiermit", "hiesige", "hin", "hinein", "hinten", "hinter", "hinterher", "hoch", "höchstens", "hundert", "ich", "igitt", "ihm", "ihn", "ihnen", "ihr", "ihre", "ihrem", "ihren", "ihrer", "ihres", "im", "immer", "immerhin", "important", "in", "indem", "indessen", "info", "infolge", "innen", "innerhalb", "ins", "insofern", "inzwischen", "irgend", "irgendeine", "irgendwas", "irgendwen", "irgendwer", "irgendwie", "irgendwo", "ist", "ja", "jährig", "jährige", "jährigen", "jähriges", "je", "jede", "jedem", "jeden", "jedenfalls", "jeder", "jederlei", "jedes", "jedoch", "jemand", "jene", "jenem", "jenen", "jener", "jenes", "jenseits", "jetzt", "kam", "kann", "kannst", "kaum", "kein", "keine", "keinem", "keinen", "keiner", "keinerlei", "keines", "keineswegs", "klar", "klare", "klaren", "klares", "klein", "kleinen", "kleiner", "kleines", "koennen", "koennt", "koennte", "koennten", "komme", "kommen", "kommt", "konkret", "konkrete", "konkreten", "konkreter", "konkretes", "könn", "können", "könnt", "konnte", "könnte", "konnten", "könnten", "künftig", "lag", "lagen", "langsam", "längst", "längstens", "lassen", "laut", "lediglich", "leer", "legen", "legte", "legten", "leicht", "leider", "lesen", "letze", "letzten", "letztendlich", "letztens", "letztes", "letztlich", "lichten", "liegt", "liest", "links", "mache", "machen", "machst", "macht", "machte", "machten", "mag", "magst", "mal", "man", "manche", "manchem", "manchen", "mancher", "mancherorts", "manches", "manchmal", "mann", "margin", "mehr", "mehrere", "mein", "meine", "meinem", "meinen", "meiner", "meines", "meist", "meiste", "meisten", "meta", "mich", "mindestens", "mir", "mit", "mithin", "mochte", "möchte", "möchten", "möchtest", "mögen", "möglich", "mögliche", "möglichen", "möglicher", "möglicherweise", "morgen", "morgige", "muessen", "muesst", "muesste", "muss", "muß", "müssen", "musst", "mußt", "müßt", "musste", "müsste", "müßte", "mussten", "müssten", "nach", "nachdem", "nacher", "nachhinein", "nächste", "nacht", "nahm", "nämlich", "natürlich", "neben", "nebenan", "nehmen", "nein", "neu", "neue", "neuem", "neuen", "neuer", "neues", "neun", "nicht", "nichts", "nie", "niemals", "niemand", "nimm", "nimmer", "nimmt", "nirgends", "nirgendwo", "noch", "nötigenfalls", "nun", "nur", "nutzen", "nutzt", "nützt", "nutzung", "ob", "oben", "oberhalb", "obgleich", "obschon", "obwohl", "oder", "oft", "ohne", "per", "pfui", "plötzlich", "pro", "reagiere", "reagieren", "reagiert", "reagierte", "rechts", "regelmäßig", "rief", "rund", "sage", "sagen", "sagt", "sagte", "sagten", "sagtest", "sämtliche", "sang", "sangen", "schätzen", "schätzt", "schätzte", "schätzten", "schlechter", "schließlich", "schnell", "schon", "schreibe", "schreiben", "schreibens", "schreiber", "schwierig", "sechs", "sect", "sehe", "sehen", "sehr", "sehrwohl", "seht", "sei", "seid", "sein", "seine", "seinem", "seinen", "seiner", "seines", "seit", "seitdem", "seite", "seiten", "seither", "selber", "selbst", "senke", "senken", "senkt", "senkte", "senkten", "setzen", "setzt", "setzte", "setzten", "sich", "sicher", "sicherlich", "sie", "sieben", "siebte", "siehe", "sieht", "sind", "singen", "singt", "so", "sobald", "sodaß", "soeben", "sofern", "sofort", "sog", "sogar", "solange", "solc", "solch", "solche", "solchem", "solchen", "solcher",
"solches", "soll", "sollen", "sollst", "sollt", "sollte", "sollten", "solltest", "somit", "sondern", "sonst", "sonstwo", "sooft", "soviel", "soweit", "sowie", "sowohl", "später", "spielen", "startet", "startete", "starteten", "statt", "stattdessen", "steht", "steige", "steigen", "steigt", "stets", "stieg", "stiegen", "such", "suchen", "tages", "tat", "tät", "tatsächlich", "tatsächlichen", "tatsächlicher", "tatsächliches", "tausend", "teile", "teilen", "teilte", "teilten", "titel", "toll", "total", "trage", "tragen", "trägt", "trotzdem", "trug", "tun", "tust", "tut", "txt", "übel", "über", "überall", "überallhin", "überdies", "übermorgen", "übrig", "übrigens", "ueber", "um", "ums", "umso", "unbedingt", "und", "ungefähr", "unmöglich", "unmögliche", "unmöglichen", "unmöglicher", "unnötig", "uns", "unse", "unsem", "unsen", "unser", "unsere", "unserem", "unseren", "unserer", "unseres", "unserm", "unses", "unten", "unter", "unterbrach", "unterbrechen", "unterhalb", "unwichtig", "usw", "vergangen", "vergangene", "vergangener", "vergangenes", "vermag", "vermögen", "vermutlich", "veröffentlichen", "veröffentlicher", "veröffentlicht", "veröffentlichte", "veröffentlichten", "veröffentlichtes", "verrate", "verraten", "verriet", "verrieten", "version", "versorge", "versorgen", "versorgt", "versorgte", "versorgten", "versorgtes", "viel", "viele", "vielen", "vieler", "vieles", "vielleicht", "vielmals", "vier", "völlig", "vollständig", "vom", "von", "vor", "voran", "vorbei", "vorgestern", "vorher", "vorne", "vorüber", "wachen", "waere", "während", "währenddessen", "wann", "war", "wär", "wäre", "waren", "wären", "warst", "warum", "was", "weder", "weg", "wegen", "weil", "weiß", "weiter", "weitere", "weiterem", "weiteren", "weiterer", "weiteres", "weiterhin", "welche", "welchem", "welchen", "welcher", "welches", "wem", "wen", "wenig", "wenige", "weniger", "wenigstens", "wenn", "wenngleich", "wer", "werde", "werden", "werdet", "weshalb", "wessen", "weswegen", "wichtig", "wie", "wieder", "wieso", "wieviel", "wiewohl", "will", "willst", "wir", "wird", "wirklich", "wirst", "wo", "wodurch", "wogegen", "woher", "wohin", "wohingegen", "wohl", "wohlweislich", "wolle", "wollen", "wollt", "wollte", "wollten", "wolltest", "wolltet", "womit", "woraufhin", "woraus", "worin", "wurde", "würde", "wurden", "würden", "z.B.", "zahlreich", "zehn", "zeitweise", "ziehen", "zieht", "zog", "zogen", "zu", "zudem", "zuerst", "zufolge", "zugleich", "zuletzt", "zum", "zumal", "zur", "zurück", "zusammen", "zuviel", "zwanzig", "zwar", "zwei", "zwischen", "zwölf");
$searchfield = array();
foreach ($search as $s) {
// Hinzufügen wenn es nicht in der Stoppwortliste ist
if (
mb_strlen($s) >= 1 &&
!in_array(mb_strtolower($s), $stoppwortliste)
) {
$searchfield[] = $s;
}
}
// Platzhalter
$total_words = count($searchfield);
$placeholder = [":p1", ":p2", ":p3", ":p4", ":p5", ":p6", ":p7", ":p8", ":p9", ":p10", ":p11", ":p12"];
if (
$total_words > 0 &&
$total_words <= count($placeholder)
) {
// SQL zusammensetzen ...
$SQL = "SELECT `start`, `ende`, `volltag`, `name`, `event`, `beschreibung`, `adresse`, `prioritaet`, `wiederholung`, `benachrichtigung`, `privat`, `aufgabe`, `kategorie`, `gruppe`, `id` FROM `" . $TABLE_PREFIX . "_kalender` WHERE (";
foreach ($searchfield as $key => $searchword) {
$SQL .= "`event` LIKE " . $placeholder[$key] . " OR ";
$SQL .= "`beschreibung` LIKE " . $placeholder[$key];
if ($key != ($total_words - 1)) {
$SQL .= " OR ";
}
}
// ... und ausführen
$select = $db->prepare($SQL . ") " . SQL_AND_INDIVIDUAL . SQL_AND_PRIVATE . $sqlAndYear . $sqlOrderByLimit);
foreach ($searchfield as $key => $wort) {
$like = "%" . $wort . "%";
$select->bindValue($placeholder[$key], $like);
}
if ($asterisk == false) {
$select->bindValue(":jahr", $_POST["jahr"]);
}
$select->execute();
$events = $select->fetchAll();
}
}
// Nach einem Wort suchen
else {
if (isset($_POST["aktuell"])) {
$select = $db->prepare("SELECT `start`, `ende`, `volltag`, `name`, `event`, `beschreibung`, `adresse`, `prioritaet`, `wiederholung`, `benachrichtigung`, `privat`, `aufgabe`, `kategorie`, `gruppe`, `id`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE ((TO_DAYS(`start`) - TO_DAYS(NOW())) >= 0
AND (
`name` " . $sqlAlike . " :suchbegriff OR
`event` " . $sqlAlike . " :suchbegriff OR
`beschreibung` " . $sqlAlike . " :suchbegriff OR
`adresse` " . $sqlAlike . " :suchbegriff OR
`kategorie` " . $sqlAlike . " :suchbegriff)
" . SQL_AND_INDIVIDUAL . SQL_AND_PRIVATE . " " . $sqlAndYear . ")
" . $sqlOrderByLimit);
} else {
$select = $db->prepare("SELECT `start`, `ende`, `volltag`, `name`, `event`, `beschreibung`, `adresse`, `prioritaet`, `wiederholung`, `benachrichtigung`, `privat`, `aufgabe`, `kategorie`, `gruppe`, `id`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE (
`start` " . $sqlAlike . " :suchbegriff OR
`ende` " . $sqlAlike . " :suchbegriff OR
`name` " . $sqlAlike . " :suchbegriff OR
`event` " . $sqlAlike . " :suchbegriff OR
`beschreibung` " . $sqlAlike . " :suchbegriff OR
`adresse` " . $sqlAlike . " :suchbegriff OR
`gruppe` " . $sqlAlike . " :suchbegriff OR
`kategorie` " . $sqlAlike . " :suchbegriff)
" . SQL_AND_INDIVIDUAL . SQL_AND_PRIVATE . " " . $sqlAndYear . "
" . $sqlOrderByLimit);
}
// Abfrage ausführen
$select->execute($arrays);
$events = $select->fetchAll();
}
// Anzahl der gefundenen Events
$gefunden = $select->rowCount();
// Navigation
echo sprintf(NAVIGATION, '', '', '', KOPIEREN, AUSGABEX) .
'<div id="aktevents"><mark class="mark">Suche:</mark> <q><em style="' . ($gefunden == 0 ? 'text-decoration: Underline Wavy Red;' : '') . ' letter-spacing: 1px;">' .
htmlspecialchars($suchbegriff, ENT_HTML5, 'UTF-8') . '</em></q>';
// Wurde etwas gefunden
if ($gefunden > 0) {
$begrenzung = ($gefunden >= 15) ? '<br>' . auswahlBegrenzung($gefunden) : '';
$gruppenoptionen = (BENUTZER == true) ? '<br><span class="optionLink print" onPointerDown="gruppenOptionEinAus()" title="Gruppenoptionen anzeigen Taste: G">Gruppenoptionen</span>' : '';
echo '<br><mark class="mark">' . $gefunden . ($gefunden == 1 ? ' Ergebnis' : ' Ergebnisse') . ($asterisk == false ? ' für das Jahr ' . $_POST["jahr"] : ' im Kalender') . '</mark>' . $begrenzung . $gruppenoptionen;
echo '<form id="eKmarkierung" method="post" class="counter"><div class="flex">';
foreach ($events as $nr => $event) {
if (in_array($nr, range(25, 5000, 25))) {
echo '</div><hr><div class="flex">';
}
echo anzeigen(
false,
$event["start"],
$event["ende"],
$event["volltag"],
$event["name"],
$event["event"],
$event["beschreibung"],
$event["adresse"],
$event["prioritaet"],
$event["wiederholung"],
$event["benachrichtigung"],
$event["privat"],
$event["aufgabe"],
$event["kategorie"],
$event["gruppe"],
$event["id"],
$PRIORITAET,
$BENUTZER,
$KALENDERBLATT,
$_POST["jahr"],
ADMIN
);
}
echo '</div></form>' . OPTIONEN . $tippsZurSuche . '</div>';
} else {
echo '<p><mark class="mark">➥</mark> Keine Events' . ($asterisk == false ? ' im Jahr ' . $_POST["jahr"] : ' im Kalender') . ' gefunden die dem Suchbegriff entsprechen.</p>';
// Meinten Sie ...
$select = $db->query("SELECT `name`, `event`, `beschreibung`, `kategorie`, `adresse`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE " . (BENUTZER == true ? '`privat` >= 0' : '`privat` = 0'));
$events = $select->fetchAll();
if ($select->rowCount() > 0) {
// Das Ergebnis einer Zeichenkette hinzufügen
$text = "";
foreach ($events as $event) {
$text .= " " . $event["name"] . " " . $event["event"] . " " . $event["beschreibung"] . " " . $event["kategorie"] . " " . $event["adresse"];
}
// Zeichen entfernen
$text = str_replace(['"', "'", '?', '!', '%', '.', ':', ',', ';', '+', '#', '@', '*', '^', '°', '(', ')', '[', ']', '<', '>', '/', '\\'], " ", $text);
$brain = [];
$woerter = explode(" ", $text);
$woerter = array_map('strip_tags', $woerter);
$woerter = array_map('entferneBBcodes', $woerter);
$woerter = array_map('trim', $woerter);
$woerter = array_unique($woerter);
// Wörter vergleichen
foreach ($woerter as $wort) {
// Mit metaphone() und soundex()
if (
metaphone($suchbegriff) == metaphone($wort) ||
soundex($suchbegriff) == soundex($wort)
) {
if (mb_strlen($wort) > 1) {
if (
!is_numeric($wort) &&
$wort != "*1."
) {
$brain[] = $wort;
}
}
}
}
// Suchbegriff entfernen
$index = array_search($suchbegriff, $brain);
if ($index !== false) {
array_splice($brain, $index, 1);
}
// Wörter anzeigen
$anzahl = count($brain);
if ($anzahl > 0) {
$zaehler = 0;
echo '<p>Meinten Sie ';
foreach ($brain as $think) {
echo '<span class="suchenLink" onPointerDown="sucheStarten(`' . $think .
($asterisk == true ? '*' : '') . '`)" title="Events mit dem Begriff ' . $think . ' anzeigen">' . $think . '</span>';
if (($zaehler + 2) == $anzahl) {
echo ' oder ';
} elseif (($zaehler + 1) < $anzahl) {
echo ', ';
}
$zaehler++;
}
echo '?</p>';
}
}
echo $tippsZurSuche . '</div>';
}
}
}
/*
* Formulare zeigen
*/
if (isset($_GET["form"])) {
$lokalesDatum = '<span title="Lokales Datum und Uhrzeit Wecker anzeigen Taste: V" id="datumLokal" class="mobile" onPointerDown="wecker()"><span id="eKdatum"></span><span id="eKzeit"></span></span>';
switch ($_GET["form"]) {
// Eintragen
case 'eintragen':
if (!BENUTZER) return false;
// Navigation
echo sprintf(NAVIGATION, $lokalesDatum, '', '', '', AUSGABEX) .
'<form id="eKform" method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8" lang="de-DE">';
$datalist = datenliste($_GET["jahr"], $db, $TABLE_PREFIX);
$volltag = $_GET["stunde"] > 0 ? false : true;
$pflichtfeldBeschreibung = (in_array('beschreibung', $PLICHTFELDER)) ? ' required="required"' : '';
$pflichtfeldTitel = (in_array('beschreibung', $PLICHTFELDER)) ? '(Erforderlich)' : '(Optional)';
echo '<div><mark class="mark">Event eintragen</mark></div>
<p>' .
auswahlTag($_GET["tag"], true) . auswahlMonat($_GET["monat"]) . auswahlJahr($_GET["jahr"]) . '
</p>
<p class="formLineHeight">
<label title="Event eintragen oder auswählen (Erforderlich) Zugriffstaste: E"><span class="mobile">Event: </span><input type="text" name="event" id="event" list="datenliste" size="28" maxlength="100" required="required" placeholder="Event eintragen oder auswählen" spellcheck="true" accesskey="e"></label>
' . $datalist .
'<span class="volltag ausblenden_volltag">' . auswahlUhrzeit($volltag, zZ($_GET["stunde"]), zZ($_GET["minute"])) . auswahlUhrzeit2() . ' <span id="eKdifferenz"></span></span></span>
</p>
<details class="formLineHeight">
<summary accesskey="o"><u>O</u>ptionen</summary>
<span class="ausblenden_dauer"><label title="Dauer des Events (Optional) Anzahl in Tagen (Maximal ' . $SERIENEVENTS . ' Tage). Zugriffstaste: T"><u>T</u>age: <input type="number" name="dauer" id="dauer" value="1" min="1" max="' . $SERIENEVENTS . '" required="required" placeholder="Zahl!" onInput="mehrTage(this.value)" onwheel="eingabefeldMrAendern(event, `dauer`, 1);mehrTage(this.value)" accesskey="t"></label></span>
<span id="eKmehrtage"></span>
<span class="ausblenden_wiederholung"><input type="checkbox" name="wiederholung" id="wiederholung" accesskey="j"> <label for="wiederholung" title="Jährlicher Event (Optional) Für Geburtstage, Feiertage etc. Zugriffstaste: J"><u>J</u>ährlicher Event</label></span>
<span class="ausblenden_adresse">' . adresseEintragen("", $db, $TABLE_PREFIX, $ADRESSDATENBANK) . '</span>
<span class="ausblenden_prioritaet">' . auswahlPrioritaet($PRIORITAET, $_GET["jahr"], false, true, 0) . '</span>
<span class="ausblenden_aufgabe">' . auswahlAufgabe("0", false) . '</span><br>
<span class="ausblenden_kategorie">' . auswahlKategorien('') . '</span> 
<span class="ausblenden_privat"><input type="checkbox" name="privat" id="privat"' . ($EINZELPERSON_ANZEIGE == "ja" ? ' checked="checked"' : '') . ' accesskey="p"> <label for="privat" title="Privater Event (Optional). Diesen Event nicht öffentlich anzeigen. Zugriffstaste: P"><u>P</u>rivat</label></span>
' . checkboxBenachrichtigung($ABSENDER, 0) . '
' . benutzerEintragen($BENUTZER_EDIT, $_SESSION["name"], $NAME, $db, $TABLE_PREFIX) . '
' . auswahlWiederholung() . '
</details>
<span id="formVorschau"></span>
<p class="formLineHeight"><label><u>B</u>eschreibung:<br>
<textarea name="beschreibung" id="textarea" class="textarea ausblenden_beschreibung"' . $pflichtfeldBeschreibung . ' placeholder="Eine Beschreibung des Events ' . $pflichtfeldTitel . '" accesskey="b" onInput="beschreibungAlsEvent();textCounter();"></textarea></label>
</p>
<input type="hidden" name="eintragen">';
break;
// Bearbeiten
case 'bearbeiten':
if (!BENUTZER) return false;
// Navigation
echo sprintf(NAVIGATION, $lokalesDatum, '', '', '', AUSGABEX) .
'<form id="eKform" method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">';
$select = $db->prepare("SELECT `start`, `ende`, `volltag`, `name`, `event`, `beschreibung`, `adresse`, `prioritaet`, `wiederholung`, `benachrichtigung`, `privat`, `aufgabe`, `kategorie`, `id`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE `id` = :id
LIMIT 1");
$select->execute([':id' => $_GET["id"]]);
$event = $select->fetch();
sscanf($event["start"], "%4s-%2s-%2s %2s:%2s", $dbJahr, $dbMonat, $dbTag, $dbStunde, $dbMinute);
sscanf($event["ende"], "%4s-%2s-%2s %2s:%2s", $a, $b, $c, $dbStunde2, $dbMinute2);
$differenz = stundenDifferenz(substr($event["start"], 11, 5), substr($event["ende"], 11, 5));
$wiederholung = $event["wiederholung"] == 1 ? ' checked="checked"' : '';
$privat = $event["privat"] == 1 ? ' checked="checked"' : '';
$volltag = $event["volltag"] == 1 ? true : false;
$datalist = datenliste($dbJahr, $db, $TABLE_PREFIX);
$berechtigung = ($_SESSION["name"] === $event["name"] || $_SESSION["name"] === $NAME) ? '' : '<p id="berechtigung">Sie haben keine Berechtigung diesen Event zu bearbeiten!</p>';
$pflichtfeldBeschreibung = (in_array('beschreibung', $PLICHTFELDER)) ? ' required="required"' : '';
$pflichtfeldTitel = (in_array('beschreibung', $PLICHTFELDER)) ? '(Erforderlich)' : '(Optional)';
echo '<div><mark class="mark">Event bearbeiten</mark>
<span class="navLink ig_loeschen" onPointerDown="zeigeFormular(`loeschen`,' . abs($dbTag) . ',' . abs($dbMonat) . ',' . $dbJahr . ',' . $event["id"] . ')" title="Event löschen"></span>
<span class="navLink ig_neu" onPointerDown="zeigeFormular(`eintragen`,' . abs($dbTag) . ',' . abs($dbMonat) . ',' . $dbJahr . ',null)" title="Event für diesen Tag eintragen"></span></div>
' . $berechtigung . '
<p>' .
auswahlTag($dbTag, false) . auswahlMonat($dbMonat) . auswahlJahr($dbJahr) . '
</p>
<p class="formLineHeight">
<label title="Event eintragen oder auswählen (Erforderlich) Zugriffstaste: E"><span class="mobile">Event: </span><input type="text" name="event" id="event" list="datenliste" value="' . htmlspecialchars($event["event"], ENT_HTML5, 'UTF-8') . '" size="28" maxlength="100" required="required" placeholder="Event eintragen oder auswählen" spellcheck="true" accesskey="e"></label>
' . $datalist . '
<span class="volltag ausblenden_volltag">' . auswahlUhrzeit($volltag, $dbStunde, $dbMinute) . auswahlUhrzeit2($dbStunde2, $dbMinute2) . ' <span id="eKdifferenz">' . $differenz . '</span></span></span>
</p>
<details class="formLineHeight">
<summary accesskey="o"><u>O</u>ptionen</summary>
<span class="ausblenden_kopieren"><input type="checkbox" name="kopieren" id="kopieren" accesskey="k" onClick="mehrAnzeigen(`neueGruppeOption`);kopierenAnzeigen()"> <label for="kopieren" title="Event zum ausgewählten Datum kopieren (Optional, die Gruppe wird beibehalten). Zugriffstaste: K"><u>K</u>opieren</label>  </span>
<span class="nowrap ausblenden_wiederholung"><input type="checkbox" name="wiederholung" id="wiederholung"' . $wiederholung . ' accesskey="j"> <label for="wiederholung" title="Jährlicher Event (Optional) Für Geburtstage, Feiertage etc. Zugriffstaste: J"><u>J</u>ährlicher Event</label></span>
<span id="neueGruppeOption" style="display:none"><input type="checkbox" name="neuegruppe" id="neuegruppe" accesskey="g"> <label for="neuegruppe" title="Eine neue Gruppe für diesen Event erstellen (Optional). Zugriffstaste: G">Neue <u>G</u>ruppe erstellen</label></span>
<span class="ausblenden_adresse">' . adresseEintragen($event["adresse"], $db, $TABLE_PREFIX, $ADRESSDATENBANK) . '</span>
<span class="ausblenden_prioritaet">' . auswahlPrioritaet($PRIORITAET, $dbJahr, false, true, $event["prioritaet"]) . '</span>
<span class="ausblenden_aufgabe">' . auswahlAufgabe($event["aufgabe"], true) . '</span><br>
<span class="ausblenden_kategorie">' . auswahlKategorien($event["kategorie"]) . '</span> 
<span class="ausblenden_privat"><input type="checkbox" name="privat" id="privat"' . $privat . ' accesskey="p"> <label for="privat" title="Privater Event (Optional). Diesen Event nicht öffentlich anzeigen. Zugriffstaste: P"><u>P</u>rivat</label></span>
' . checkboxBenachrichtigung($ABSENDER, $event["benachrichtigung"]) . '
' . benutzerEintragen($BENUTZER_EDIT, $_SESSION["name"], $NAME, $db, $TABLE_PREFIX) . '
</details>
<span id="formVorschau"></span>
<p class="formLineHeight"><label><u>B</u>eschreibung:<br>
<textarea name="beschreibung" id="textarea" class="textarea ausblenden_beschreibung"' . $pflichtfeldBeschreibung . ' placeholder="Eine Beschreibung des Events ' . $pflichtfeldTitel . '" accesskey="b" onInput="beschreibungAlsEvent();textCounter();" onFocus="textCounter();">' . htmlspecialchars($event["beschreibung"], ENT_HTML5, 'UTF-8') . '</textarea></label>
</p>
<input type="hidden" name="id" value="' . $event["id"] . '">
<input type="hidden" name="bearbeiten">';
break;
// Löschen
case 'loeschen':
if (!BENUTZER) return false;
// Navigation
echo sprintf(NAVIGATION, $lokalesDatum, '', '', '', AUSGABEX) .
'<form id="eKform" method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">';
$select = $db->prepare("SELECT `start`, `ende`, `volltag`, `name` , `event`, `beschreibung`, `prioritaet`, `wiederholung`, `benachrichtigung`, `gruppe`, `id`
FROM `" . $TABLE_PREFIX . "_kalender`
WHERE `id` = :id");
$select->execute([':id' => $_GET["id"]]);
$event = $select->fetch();
// Gruppe (Anzahl)
$select = $db->query("SELECT COUNT(`gruppe`) AS anzahl FROM `" . $TABLE_PREFIX . "_kalender` WHERE `gruppe` = " . $event["gruppe"]);
$gruppe = $select->fetch();
sscanf($event["start"], "%4s-%2s-%2s %2s:%2s", $dbJahr, $dbMonat, $dbTag, $dbStunde, $dbMinute);
$start = substr($event["start"], 11, 8) != "00:00:01" ? substr($event["start"], 11, 5) : '';
$ende = substr($event["ende"], 11, 8) != "00:00:00" ? ' bis ' . substr($event["ende"], 11, 5) : '';
$uhr = !empty($start) || !empty($ende) ? ' <span class="nowrap ig_uhrzeit" title="' . date("T - e") . '"> ' . $start . $ende . ' Uhr' : '';
$abgelaufen = eventAktuell($dbTag, $dbMonat, $dbJahr, $dbStunde, $dbMinute, $event["ende"], $event["volltag"]);
$benachrichtigung = $event["benachrichtigung"] == 1 ? ' <span title="E-Mail Benachrichtigung" style="cursor:help" class="ig_benachrichtigung"></span>' : '';
$kw = kalenderwoche($dbTag, $dbMonat, $dbJahr);
$woche = ' <span class="navLink selLink" onPointerDown="zeigeKW(' . $dbJahr . ',' . $kw . ')" title="Woche ' . $kw . ' anzeigen">W ' . $kw . '</span>';
$wiederholung = $event["wiederholung"] == 1 ? ' <span title="Jährliche Wiederholung" style="cursor:help" class="ig_wiederhohlung"></span>' : '';
$name = $BENUTZER == "ja" ? ' [<em title="Erstellt von: ' . $event["name"] . '">' . $event["name"] . '</em>]' : '';
$prioritaet1 = $event["prioritaet"] > 0 ? '<span style="' . stickyFarbverlauf($PRIORITAET[$event["prioritaet"]]) . 'color:#FFFFFF;"> ' : '';
$prioritaet2 = strlen($prioritaet1) > 10 ? '<span title="Priorität ' . $event["prioritaet"] . '" class="prioritaet">| ' . $event["prioritaet"] . '</span> </span>' : '';
$gruppeCheckbox = $gruppe["anzahl"] > 1 ? '<br><input type="checkbox" name="gruppe_del" id="lbl_gdel" accesskey="g"> <label for="lbl_gdel" class="achtung" title="Das Löschen aller Events kann nicht rückgängig gemacht werden und bedarf einer Bestätigung.">Alle ' . $gruppe["anzahl"] . ' Events dieser <u>G</u>ruppe löschen</label><br><span class="optionLink" onClick="zeigeGruppe(`' . $event["gruppe"] . '`,`false`)">Gruppe anzeigen</span>' : '';
$berechtigung = ($_SESSION["name"] === $event["name"] || $_SESSION["name"] === $NAME) ? '' : '<p id="berechtigung">Sie haben keine Berechtigung diesen Event zu löschen!</p>';
echo '<div><mark class="mark">Event löschen</mark>
<span class="navLink ig_bearbeiten" onPointerDown="zeigeFormular(`bearbeiten`,' . abs($dbTag) . ',' . abs($dbMonat) . ',' . $dbJahr . ',' . $event["id"] . ')" title="Event bearbeiten"></span>
<span class="navLink ig_neu" onPointerDown="zeigeFormular(`eintragen`,' . abs($dbTag) . ',' . abs($dbMonat) . ',' . $dbJahr . ',null,null,null,true)" title="Event für diesen Tag eintragen"></span></div>
' . $berechtigung . '
<p><span class="ig_kalender"></span>
<span class="navLink selLink" onPointerDown="zeigeTagesansicht(' . abs($dbTag) . ',' . abs($dbMonat) . ',' . $dbJahr . ',event)" title="Tag anzeigen">' . datum($dbTag, $dbMonat, $dbJahr) . '</span>' . $woche . ' ' . $wiederholung . $uhr . $abgelaufen . $benachrichtigung . '</span>
</p>
<div>
' . $prioritaet1 . '<span class="eventText">' . $event["event"] . '</span>' . $prioritaet2 . $name . '
' . (strlen($event["beschreibung"]) > 0 ? '<details class="event_loeschen"><summary>Beschreibung anzeigen</summary><div>' . formatierung($event["beschreibung"]) . '</div></details>' : '') . '
</div>
<p>
<span title="Das Löschen des Events kann nicht rückgängig gemacht werden und bedarf einer Bestätigung.">
<mark class="mark">➥</mark> Bestätigung: <input type="checkbox" name="bestaetigung" id="lbl_del" accesskey="e">
<label for="lbl_del" class="achtung">Diesen <u>E</u>vent löschen</label></span>
' . $gruppeCheckbox . '
</p>
<input type="hidden" name="gruppe" value="' . $event["gruppe"] . '">
<input type="hidden" name="id" value="' . $event["id"] . '">
<input type="hidden" name="loeschen">';
break;
// Anmeldung und Abmeldung
case 'anmelden':
// Navigation
echo sprintf(NAVIGATION, $lokalesDatum, '', '', '', AUSGABEX) .
'<form id="eKform" method="post" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">';
if (!BENUTZER == true) :
echo '<div><mark class="mark" title="Anmeldedaten für den Event-Kalender eingeben">Anmeldung</mark></div>
<p class="formLineHeight">
<label for="benutzername" title="Benutzername Bitte füllen Sie dieses Feld aus.">Benutzername:
<input type="text" name="name" id="benutzername" required="required" autocomplete="username" tabindex="1" spellcheck="false" tabindex="1"></label><br>
<label for="passwort" title="Passwort (Kennwort) Bitte füllen Sie dieses Feld aus.">Passwort:  
<input type="password" name="passwort" id="passwort" required="required" autocomplete="current-password" tabindex="2"></label>
<input type="hidden" name="anmelden">
</p>';
else :
echo '<div id="buttons"><mark class="mark"><em>' . $_SESSION["name"] . '</em> abmelden?</mark></div>
<input type="hidden" name="abmelden">';
endif;
break;
}
// Abbrechen und Absenden
if (isset($_GET["form"])) {
switch ($_GET["form"]) {
case 'eintragen':
$absendenButton = ' title="Event eintragen. Zugriffstaste: E" accesskey="e"><u>E</u>intragen';
break;
case 'bearbeiten':
$absendenButton = ' title="Event aktualisieren. Zugriffstaste: A" accesskey="a"><u>A</u>ktualisieren';
break;
case 'loeschen':
$absendenButton = ' title="Event löschen ausführen. Zugriffstaste: A" accesskey="a"><u>A</u>usführen';
break;
case 'anmelden':
$absendenButton = (BENUTZER == true) ? ' title="Benutzer abmelden Zugriffstaste: A" accesskey="a" autofocus="autofocus"><u>A</u>bmelden' : ' title="Benutzer anmelden Zugriffstaste: A" accesskey="a"><u>A</u>nmelden';
break;
}
}
echo '<div id="buttons">' .
(($_GET["form"] == "eintragen" || $_GET["form"] == "bearbeiten") && $VORSCHAU_BUTTON == "ja" ? bbCode() : '') .
'<button type="reset" title="Vorgang abbrechen. Bitte doppelt klicken! Taste: ESC" onDblClick="anzeigeBeenden(`anzeige`);scrollToDo(`kalender`)">Abbrechen</button>  
<button type="button" id="okbutton" class="senden" onClick="sendeFormular()"' . $absendenButton . '</button>
</div>
</form>';
}
Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen
<?php
// Keine Ausführung via URL
if (strpos($_SERVER["SCRIPT_FILENAME"], "kalendersende-event-mail") > 0 ) { echo "NO"; exit; }
/*
* SENDE-EVENT-MAIL für Eventkalender - E-Mail Benachrichtigung - kalendersende-event-mail.php
* © RaHa
Dieses Script wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne irgendeine Garantie;
ohne auch nur die implizierte Gewährleistung der Marktgängigkeit oder Eignung für einen bestimmten Zweck.
Weitere Informationen finden Sie in der GNU General Public License.
Siehe Datei: license.txt - http://www.gnu.org/licenses/gpl.html
Diese Datei ist urheberrechtlich geschützt, alle Rechte vorbehalten.
Sie können diese Datei unter den Bedingungen der GNU General Public License frei verwenden und weiter verbreiten.
* Hier können Sie beliebig den Inhalt der E-Mail ändern
* Achtung: Fehlerhafte Angaben können Probleme verursachen!
* Testen Sie einzelne Änderungen immer gleich bevor weitere vorgenommen werden.
*/
$beschreibung = preg_replace('/\[.*?\](.*)\[\/.*?\]/isU', '$1', $_POST["beschreibung"]); // BB-Codes
$beschreibung = str_replace(["\r", "\n", " "], " ", $beschreibung); // Zeilenumbrüche
$sendfile = 'ev-header.pdf';
$sendfile_size = filesize($sendfile);
$filehandle = fopen($sendfile, "r");
$sendcontent = fread($filehandle, $sendfile_size);
fclose($filehandle);
$sendcontent = chunk_split(base64_encode($sendcontent));
$sendfilename = basename($sendfile);
$Subject = strip_tags($_POST["event"]);
$SendTo = $MAIL_EMPFAENGER;
$From = 'automail@checkip.net';
$ReplayTo = $ABSENDER;
$eol = PHP_EOL;
$eolbody = "<br>";
$boundary = strtoupper(md5(uniqid(time())));
$mail_header = "From:".$From.$eol;
$mail_header .= "Reply-To: ".$ReplayTo.$eol;
$mail_header .= "X-Sender: checkip.net".$eol;
$mail_header .= "X-Mailer: PHP/".phpversion().$eol;
$mail_header .= "MIME-Version: 1.0".$eol;
$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
$mail_body = 'Event: ' . strip_tags($_POST["event"]) . $eolbody . '';
$mail_body .= $eolbody;
$mail_body .= 'Beginn: ' . $start . $eolbody . '';
$mail_body .= 'Ende: '. $ende . $eolbody . '';
$mail_body .= $eolbody;
$mail_body .= !empty($beschreibung) ? wordwrap($beschreibung, 75, $eol) . $eolbody : '';
if (isset($_POST["adresse"])) {
$mail_body .= !empty($_POST["adresse"]) ? 'Adresse: ' . $_POST["adresse"] . $eolbody : '';
}
if (isset($_POST["prioritaet"])) {
$mail_body .= $_POST["prioritaet"] > 0 ? 'Priorität: ' . $_POST["prioritaet"] . $eolbody : '';
}
if (isset($_POST["privat"])) {
$mail_body .= $_POST["privat"] == 1 ? 'Privater Event' . $eolbody : '';
}
if (isset($_POST["aufgabe"])) {
$mail_body .= $_POST["aufgabe"] == 1 ? 'Dieses Event ist eine Aufgabe' . $eolbody : '';
}
if (isset($_POST["kategorie"])) {
$mail_body .= !empty($_POST["kategorie"]) ? 'Kategorie: ' . $_POST["kategorie"] . $eolbody : '';
}
$mail_body .= $eolbody . $eolbody;
$mail_body .= 'Gesendet vom Event-Kalender unter '.$_SERVER['SERVER_NAME']. $eolbody;
$mail_body .= $From.$eolbody.$eolbody.$eol;
$mail_message = "--".$boundary.$eol;
$mail_message .= "Content-Type: text/html; charset=UTF-8".$eol;
$mail_message .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$mail_message .= $mail_body.$eol;
$mail_message .= "--".$boundary.$eol;
$mail_message .= "Content-Type: application/pdf; name=\"".$sendfilename."\"".$eol;
$mail_message .= "Content-Transfer-Encoding: base64".$eol;
$mail_message .= "Content-Disposition: attachment; filename=\"".$sendfilename."\"".$eol.$eol;
$mail_message .= $sendcontent.$eol;
$mail_message .= "--".$boundary."--";
if (mail($SendTo,$Subject,$mail_message,$mail_header)) {
// LOG, ausdokumentieren wenn keine Log-Datei gewünscht
file_put_contents("event-kalender_mail.log", $eol . $eol . "GESENDET" . $eol . date("Y-m-d H:i:s", time()) . $eol . $SendTo . $eol . str_replace($eolbody, $eol, $mail_body) . $eol, FILE_APPEND);
} else {
// LOG, ausdokumentieren wenn keine Log-Datei gewünscht
file_put_contents("event-kalender_mail.log", $eol . $eol . "FEHLER" . $eol . $eol . date("Y-m-d H:i:s", time()) . $eol . $SendTo . $eol . str_replace($eolbody, $eol, $mail_body) . $eol, FILE_APPEND);
}
unset($beschreibung,$sendfile,$sendfile_size,$filehandle,$sendcontent,$sendfilename,$Subject,$SendTo,$From,$ReplayTo,$eol,$eolbody,$boundary,$mail_header,$mail_body,$mail_message);
?>