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) 2020 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 ->

// --- verlegt nach unten --->
/*
 * Verbindung zur Datenbank
 */
// <--- verlegt nach unten ---


function get_wpcookieuser($siteurl) {
     $hashurl=md5($siteurl);
     $usercookiename='wordpress_logged_in_'.$hashurl;
     $usercookiename=$_COOKIE[$usercookiename];
     $pos=strpos($usercookiename, '|');
     $usercookiename=substr($usercookiename, 0, $pos);
     return $usercookiename;
}

$WP_URL = 'https://diedomainwowordpressliegt.de';
$cookiewpuser=get_wpcookieuser($WP_URL);

// Gruppe Webmaster
if ($cookiewpuser=="WEBMASTER") {$cookiewpuser="WEBMASTER";}
if ($cookiewpuser=="WEBMASTERCO") {$cookiewpuser="WEBMASTER";}

// Gruppe Geschaeftsstelle
if ($cookiewpuser=="PC") {$cookiewpuser="GESCHAEFTSSTELLE";}
if ($cookiewpuser=="GES") {$cookiewpuser="GESCHAEFTSSTELLE";}

// WP-Benutzer direkt anmelden
unset($_SESSION["name"]);
$_SESSION["name"] = $cookiewpuser;
$_SESSION["wordpress"] = true;

// Name (Administrator)
$NAME = "WEBMASTER"; // user

// Passwort (Administrator) - Bitte das Standard-Passwort ändern! 
// Aus Sicherheitsgründen sollte das Passwort min. 8 Zeichen enthalten
$NAME_PASS[$NAME] = chr(9).chr(10).chr(13); // 0000 
// wird unten erweitert

// <- 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

/*
 * Kalender
 */

/* Kalender Beschriftung
   Eine Beschriftung, ein Bild eintragen oder leer lassen. */
$KALENDER_BESCHRIFTUNG = '<img src="ical-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) */
$WOCHENTAGSNANEN = "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
 */


/* Priorität - Zahlen und Hintergrundfarben (evtl. anpassen). */
$PRIORITAET = [
 0 => "Transparent", // Transparent (für Events ohne Priorität)
 1 => "#FF5B5B", // Rot
 2 => "#FBD600", // Gold
 3 => "#9DDF24", // Grün
 4 => "#FF9900", // ORANGE STIFTUNG
 5 => "#FFE600", // GELB STIFTUNG
 6 => "#FF97FF", // Violet
 7 => "#B4B46B", // Khaki
 8 => "#73B9B9", // Cyan
 9 => "#FF71AA", // Rosa
 10 => "#D9A36C", // Braun
 11 => "#ACACAC", // Grau
 12 => "#73AAD2", // Stahlblau
 13 => "#45C07C", // Seegrün
 14 => "#FB9B91", // Salomon
 15 => "#E083A2", // Violetrot
 16 => "#B089D8", // Purple
 17 => "#55EAFF", // Himmelblau
 18 => "#36B663", // Waldgrün
 19 => "#00C4C4", // Türkis
 20 => "#94B5DD", // Blaugrau
 21 => "#FFC28C", // Terracotta
 22 => "#488CEC", // Mittelblau
 23 => "#7DA628", // Olive
 24 => "#DDCF53", // Blassgold
 25 => "#C199C1", // Blassviolet
 26 => "#5EB3CE", // Lichtblau
];

/* Kategorien im Kalender farbig markieren (ja/nein) */
$KATEGORIE_FARBE = "ja"; // ja

/* Kategorien und Farben für die Events festlegen
   Jede Kategorie muss eine andere Farbe haben!
   Nicht verwendete Kategorien sollten kommentiert (#) werden, z.B.:
  # "#5BADFF" => "Abteilung",
 */
 
$KATEGORIEN[$PRIORITAET[4]] = "STIFTUNG"; // 4
$KATEGORIEN[$PRIORITAET[5]] = "SITZUNG"; // 5
$KATEGORIEN[$PRIORITAET[6]] = "GESCHAEFTSSTELLE"; // 6
$KATEGORIEN[$PRIORITAET[7]] = "ABSCHLUSSFAHRT"; // 7
$KATEGORIEN[$PRIORITAET[8]] = "BALL"; // 8
$KATEGORIEN[$PRIORITAET[9]] = "FINANZ"; // 9
$KATEGORIEN[$PRIORITAET[10]]= "KALENDER"; // 10
$KATEGORIEN[$PRIORITAET[11]]= "LESEPATEN"; // 11
$KATEGORIEN[$PRIORITAET[12]]= "THALER"; //12
$KATEGORIEN[$PRIORITAET[13]]= "WOHNBRUECKE"; // 13
$KATEGORIEN[$PRIORITAET[14]]= "SPONSOREN"; // 12
$KATEGORIEN[$PRIORITAET[15]]= "STIFTER"; // 13
$KATEGORIEN[$PRIORITAET[16]]= "WEB"; // 16
$KATEGORIEN[$PRIORITAET[17]]= "PROJEKTE"; //12
$KATEGORIEN[$PRIORITAET[18]]= "SCHULFERIEN"; // 18
$KATEGORIEN[$PRIORITAET[19]]= "URLAUB"; // 19
$KATEGORIEN[$PRIORITAET[20]]= "GEBURTSTAG"; // 20
$KATEGORIEN[$PRIORITAET[21]]= "LERNLESEN"; // 20


// modify RaHa ->
// Modifikation SENDE-EVENT-MAIL
$KATEGORIE_EMAIL[$PRIORITAET[6]] = "geschaeftsstelle@meinedomain.de";
$KATEGORIE_EMAIL[$PRIORITAET[5]] = "stiftungsorga@meinedomain.de";
$KATEGORIE_EMAIL[$PRIORITAET[4]] = "stiftungsorga@meinedomain.de";
$KATEGORIE_EMAIL[$PRIORITAET[16]]= "webmaster@meinedomain.de";
$KATEGORIE_EMAIL[$PRIORITAET[19]]= "geschaeftsstelle@meinedomain.de";
$KATEGORIE_EMAIL[$PRIORITAET[21]]= "geschaeftsstelle@meinedomain.de";
// <- modify RaHa


// modify RaHa ->
/*
$i=0;
$PRIORITAET[$i]="Transparent"; $i++;
foreach ($KATEGORIEN AS $key => $value) { $PRIORITAET[$i]=$key; $i++; }
*/
// <- modify RaHa

/* Die Kategorie-Farbe anstatt der Priorität-Farbe anzeigen (ja/nein)
   Sollte $PRIORITAET_KATEGORIE_FARBE = ja gesetzt werden,
   muss die Anzahl der Elemente von $PRIORITAET mindestens der von $KATEGORIEN entsprechen
   und $PRIORITAET die Keys von $KATEGORIEN als Farbe enthalten! */
$PRIORITAET_KATEGORIE_FARBE = "ja"; // nein

// modify RaHa ->
// Nach Prüfungsdurchlauf kann diese Modifikation ggf. ausdokumentiert oder gelöscht werden
// Test auf doppele Farben/Keys
// Zeilen mit Zuweisung von $KATEGORIEN zählen und $zahl ändern!
// wer zu faul zum Zählen ist! Nach Durchlauf steht die Zahl dort, diese dann eintragen ;-)
$zahl = 18;
if (count($KATEGORIEN) !== $zahl) {
     echo count($KATEGORIEN)."<br><br>";
     foreach ($KATEGORIEN AS $key => $value) { echo $key . " " . $value."<br>";}
     echo "<h1>Anzahl KATEGORIEN stimmt nicht, vermutlich doppelte Keys!</h1>";
     exit;
}
// Prüfen ob Key von $KATEGORIEN in $PRIORITAET vorhanden
if ($PRIORITAET_KATEGORIE_FARBE == "ja") {
     foreach ($KATEGORIEN AS $key => $value) {
          $farbe = array_keys($PRIORITAET, $key);
          if (!isset($farbe[0])) { echo "<br>".$key." von ".$value." ist nicht in PRIORITAET vorhanden<br><br>"; exit; }
     }
}     
// Prüfen ob Key von $KATEGORIE_EMAIL in $KATEGORIE vorhanden
if (isset($KATEGORIE_EMAIL)) {
     foreach ($KATEGORIE_EMAIL AS $key => $value) {
          if (!isset($KATEGORIEN[$key])) { echo "<br>".$key." von ".$value." ist nicht in KATEGORIEN vorhanden<br><br>"; exit; }
     }
}
// <- modify RaHa


/* Einen farbigen Hintergrund  je nach Priorität  anzeigen (ja/nein) */
$FARBVERLAUF = "nein"; // ja

// Einen farbigen Hintergrund  je nach Priorität  anzeigen (ja/nein)
$FARBIGE_EVENTS = "ja"; // ja



/* 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 = 100;

/* Datumsformat
   1 = "20 Dezember 2020 (So.)"
   2 = "20 Dezember 2020 Sonntag"
   3 = "Sonntag, 20 Dezember 2020"
   4 = "20.12.2020 So."
   5 = "20.12.2020" */
$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@meinedomain.de"; // user@example.com

// Empfänger der Nachricht
$EMPFAENGER = "mail@meinedomain.de"; // 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

/* Pflichtfelder im Formular
   Die Kommentarzeichen (#) bei Pflichtfeldern entfernen. */
$PLICHTFELDER = [
# 'beschreibung',
# 'ort',
# '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!) */
// modify RaHa ->
// $TABLE_PREFIX = "jan20"; // jan20
// $TABLE_PREFIX kommt aus dbinfo.inc.php
// <- modify RaHa

/* 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>&#10008; Aktuelle PHP-Version: ' . PHP_VERSION . '<br>&#10004; Voraussetzung mind.: &nbsp; 7.3</p>');
}

/* Zeichenkodierung der aktuellen Datei überprüfen */
if (bin2hex('ä') !== 'c3a4') {
 die('<p><strong>Event-Kalender</strong><br>&#10008; 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>');
}

require_once "dbinfo.inc.php";

// modify RaHa ->
// wir müssen noch wegen ACCESSLINK das Array NAME_PASS erweitern
// dazu nehmen wir die eingetragenen Namen aus der Datenbank
$select = $db->query("SELECT `name` FROM `" . $TABLE_PREFIX . "_kalender` GROUP BY `name` ASC");
$names = $select->fetchAll(PDO::FETCH_COLUMN);
foreach ($names as $benutzer) { $NAME_PASS[$benutzer] = chr(9).chr(10).chr(13); }
// <- modify RaHa

// modify RaHa ->
// Versionsüberprüfung wenn der User Admin ist
// Voraussetzung ist, dass lies_micht.txt nicht verändert wurde
if (!isset($_COOKIE["auto-installer"])) {
     if (isset($_SESSION["name"])) {
          if ($_SESSION["name"] == $NAME) {
               $webinput = file_get_contents("https://werner-zenk.de/archiv/event-kalender.php");
               $webinput=html_entity_decode($webinput);
               $version_pos = strpos($webinput, "Version vom:") + 13;
               $_SESSION["version"] = trim(substr($webinput, $version_pos, 10));
               $version_nr_pos = $version_pos + 10;
               $_SESSION["version_nr"] = intval(trim(str_replace([chr(10), "Da", "#"], ["", "", ""], substr($webinput, $version_nr_pos, 3))));

                 $fileinput = file_get_contents("lies_mich.txt", FALSE, NULL, 0, 100);
                 $version_inst_pos = strpos($fileinput, "Version vom:") + 13;
                 $_SESSION["version_inst"] = trim(substr($fileinput, $version_inst_pos, 10));

               if ($_SESSION["version_nr"] > 0) { $_SESSION["version"] = $_SESSION["version"]."-".$_SESSION["version_nr"]; }

                 unset($webinput, $version_pos, $version_nr_pos, $fileinput, $version_inst_pos);
      
                 if (isset($_SESSION["version"]) AND isset($_SESSION["version_inst"])) {
                    if ($_SESSION["version"] !== $_SESSION["version_inst"]) { echo '<br />Neue Version vom '.$_SESSION["version"].' vorhanden! <br />Installierte Version ist vom '.$_SESSION["version_inst"].'.<br /><br />'; 
                         // hier startet der automatische Update-Prozess mit Backup und Import.
                         $_SESSION["dir"] = getcwd();
                         if (is_file($_SESSION["dir"]."/tools/auto-installer.php")) {
                    echo '[&#160;<a href="'.$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/tools/auto-installer.php" target="_self">Neue Version installieren</a>&#160;]&#160;&#160;&#160;&#160;[&#160;<a href="'.$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/tools/auto-installer.php?NO" target="_self">Jetzt nicht!</a>&#160;]<br /><br />';
                         }
                    } else {
                         $options = ["expires" => strtotime(date("Y-m-d", (time()+(3600*24)))." 00:00:00"),"path" => '/',"secure" => true,"httponly" => false,"samesite" => "Strict"];   
                         setcookie("auto-installer","true",$options);
                         unset($options);
                    }
               }
          }
     }
}
// <- modify RaHa

?>


Im Format UTF-8 speichern! Ggf. im Browser - Darstellung Textcodierung auf Unicode (UTF-8) stellen


<?php

// dbinfo.inc.php

// Keine Ausführung via URL
if (strpos($_SERVER["SCRIPT_FILENAME"], "dbinfo.inc") > 0 ) { echo "NO"; exit; }

// Verbindungsdaten zur Datenbank
$DB_HOST = "localhost:3306"; // Host-Adresse
$DB_NAME = "event-kalender_"; // Datenbankname
$DB_BENUTZER = "benutzer"; // Benutzername
$DB_PASSWORT = "xyxyxyxyxy"; // Passwort

$TABLE_PREFIX = "mai20"; // mai20 - Letzte Änderung an der DB-Tabelle: Mai 2020

// Attribute für das Datenbankhandle festlegen (UTF-8 (utf8mb4) setzen)
$OPTION = [
 PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode='TRADITIONAL'",
 PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci",
// PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];

// Verbindung zur Datenbank aufbauen
try {
 $db = new PDO("mysql:host=" . $DB_HOST . ";dbname=" . $DB_NAME,
  $DB_BENUTZER, $DB_PASSWORT, $OPTION);
}
// Bei einer fehlerhaften Verbindung
catch (PDOException $e) {

 if ($FEHLER_VERBINDUNG  == "ja") {

  echo '<h3>Event-Kalender</h3>' .
   '<p>Die Verbindung zur Datenbank ist fehlgeschlagen!';
  $fehler = ["2002" => 'Die Host-Adresse ist',
                 "1049" => 'Der Datenbankname ist',
                 "1045" => 'Der Benutzername oder das Passwort sind'];
  $code = $e->getCode();

  if (in_array($code, array_keys($fehler))) {
   echo '<br>' . $fehler[$code] . ' unbekannt!</p>';
  }
 }
 exit;
}

?>