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


<?php
/*
 * Event-Kalender - kalender.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.
 */


session_start();
//ini_set("session.use_strict_mode", 1);
header("Content-type: text/html; charset=utf-8");
header("Cache-control: no-cache");


/*
 * Includes
 */
require_once "verbindung.php";
require_once "include/kalenderfunktionen.php";
require_once "include/kalenderfunktionen2.php";
require_once "include/kalenderfunktionen3.php";


/*
 * Cookies - Vorhandene Einstellungen überschreiben
 */
if (isset($_COOKIE["menue"])) {
   list(
      $FEIERTAGE, $KALENDERBLATT, $VORSCHAU_BUTTON, $PERMALINK, $BENUTZER, 
      $FARBVERLAUF, $FARBIGE_EVENTS, $KATEGORIE_FARBE, $KALENDER_BESCHRIFTUNG
   ) = explode("-", $_COOKIE["menue"]);
}


/*
 * Definitionen
 */

// Den Admin und den Benutzer festlegen
define("ADMIN", (isset($_SESSION["name"]) && $_SESSION["name"] == $NAME) ? true : false);
define("BENUTZER", isset($_SESSION["name"]) ? true : false);

// Monate
define("MONATE", [1 => 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']);
define("MONATE_INT", [1 => 'Januar, January, Janvier, Enero, Gennaio, Januari, Ianuarius',  'Februar, February, Février, Febrero, Febbraio, Februari, Februarius',
  'März, March, Mars, Marzo, Marzo, Mars, Martius',  'April, Avril , Abril, Aprile, Aprilis',  'Mai, May, Mayo, Maggio, Maj, Maius',
  'Juni, June, Juin, Junio, Giugno, Iunius',  'Juli, July, Juillet, Julio, Luglio, Iulius',  'August, Août, Agosto, Agosto, Augusti, Augustus',
  'September, Septembre, Septiembre, Settembre',  'Oktober, October, Octobre, Octubre, Ottobre',
  'November, Novembre, Noviembre',  'Dezember, December, Décembre, Diciembre, Dicembre']);

// Wochentage (von Sonntag bis Sonntag!)
define("WOCHENTAGE", [0 => 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']);
define("WOCHENTAGE_INT", [1 => 'Montag, Monday, Lundi, Lunes, Lunedì, Måndag, Lunae',  'Dienstag, Tuesday, Mardi, Martes, Martedì, Tisdag, Martis',
  'Mittwoch, Wednesday, Mercredi, Miércoles, Mercoledì, Onsdag, Mercurii',  'Donnerstag, Thursday, Jeudi, Jueves, Giovedì, Torsdag, Iovis',
  'Freitag, Friday, Vendredi, Viernes, Venerdì, Fredag, Veneris',  'Samstag, Saturday, Samedi, Sábado, Sabato, Lördag, Saturni',
  'Sonntag, Sunday, Dimanche, Domingo, Domenica, Söndag, Solis']);

// modify RaHa ->
// SQL - Private Events
//define('SQL_AND_PRIVATE', (BENUTZER == true) ? ' AND `privat` >= 0 ' : ' AND `privat` = 0 ');

// SQL - Einzelperson-Anzeige
//define('SQL_AND_INDIVIDUAL', (BENUTZER == true && $EINZELPERSON_ANZEIGE == "ja") ? ' AND `name` = "' . $_SESSION["name"] . '" ' : '');


if (isset($_SESSION["name"])) {
   if ($_SESSION["name"] == $NAME ) {
   // Admin darf immer alles sehen
     define('SQL_AND_PRIVATE', '');
     define('SQL_AND_INDIVIDUAL', ''); 
   } else {
     define('SQL_AND_PRIVATE', ' AND `privat` >= 0 ');
     if($EINZELPERSON_ANZEIGE == "ja") { define('SQL_AND_INDIVIDUAL', ' AND `name` = "' . $_SESSION["name"] . '" ');
       } else { define('SQL_AND_INDIVIDUAL', '');
     }
  }
} else {
  define('SQL_AND_PRIVATE', ' `privat` = 0 ');
  define('SQL_AND_INDIVIDUAL', ''); 
}  
// <- modify RaHa

// Kontextmenü
$kontextmenue = kontextmenue("menu2");

// modify RaHa ->
// Anmeldung und Abmeldung
$tastaturbelegungen = '&#10;Taste: L&#10;&#10;&#9;Tastaturbelegungen&#10;F1 - Hilfe&#10;F2 - Alle Tastaturbelegungen&#10;A - Aktuelle Events&#10;B - Kalenderblatt&#10;C - In die Zwischenablage kopieren&#10;D - Drucken&#10;F - Feiertage&#10;G - Gruppenoptionen&#10;H - Heute&#10;I - Info&#10;J - Jahr&#10;K - Kategorie&#10;L - Anmelden / Abmelden&#10;M - Monat&#10;N - Neuen Event eintragen&#10;P - Priorität&#10;Q - Quartal&#10;R - Journal&#10;S / F3 - Suche&#10;T - Wochentag&#10;U - Uhrzeit&#10;V - Wecker&#10;W - Woche&#10;X - Aktueller Kalender&#10;Y - Monat / Jahr eingeben&#10;Z - Schlüsselwörter&#10;ESC - Schließen';
/*
define("ANABMELDUNG", (BENUTZER == true && isset($_SESSION["name"]) && !isset($_GET["abmelden"])) ?
   '<th width="90%%">' . $kontextmenue . '<span class="anmeldungOK" onPointerDown="abmelden()" title="' . $_SESSION["name"] . ', klicke hier um dich abzumelden' . $tastaturbelegungen . '">Event-Kalender</span></th>' :
   '<th width="90%%">' . $kontextmenue . '<span class="anmeldungKO" onPointerDown="anmelden()" title="Klicke hier um dich anzumelden&#10;Taste: L">Event-Kalender</span></th>');
*/
define("ANABMELDUNG", '<th width="90%%"><span class="anmeldungOK">Event-Kalender - '.$_SESSION["name"].'</span></th>') ;
// <- modify RaHa

// Neuen Event eintragen
define("DIREKTEINGABE", (BENUTZER == true) ?
   '<th width="2%%"><span class="navLink ig_neu" onPointerDown="zeigeFormular(`eintragen`,' . date("j") . ',' . date("n") . ',' . date("Y") . ',null)" title="Neuen Event eintragen&#10;Taste: N"></span>&nbsp;</th> ' :
   '');


// Kalender-Navigation
define("NAVIGATION", '<table id="tableNavigation" class="print">
<tr onDblClick="scrollToDo(`kalender`)">
  <td width="3%%">%s&nbsp;%s</td>
  <td width="1%%"><span id="nachOben" onPointerDown="scrollToDo(`kalender`)" title="Nach oben zum Kalender springen&#10;Taste: O oder ALT + Pfeil-Taste Auf"></span></td>
  %s
  ' . ANABMELDUNG . '
  ' . DIREKTEINGABE . '
  %s
  %s
 </tr>
</table>');

// Kopieren
define("KOPIEREN", '<th width="2%"><span class="navLink print ig_kopieren" id="TasteC" onPointerDown="selectCode()" title="In die Zwischenablage kopieren&#10;Taste: C"></span>&nbsp;</th>');

// Anzeige (Ausgabe) beenden
define("AUSGABEX", '<th width="2%"><span class="navLink ig_schliessen" onPointerDown="anzeigeBeenden(`anzeige`)" title="Schließen&#10;Taste: ESC"></span></th>');

// Anzeige (Auswahl) beenden
define("AUSWAHLX", '<div id="anzeigeOptionenBeenden"><span class="navLink ig_schliessen" onPointerDown="anzeigeBeenden(`auswahl`)" title="Schließen&#10;Taste: ESC"></span></div>');

// Icons
define("ICONS", '<span class="navLink print ig_minus mobilePlus" id="TasteMinus" onClick="setzeFlex(`Zeilen`)" title="Events in Zeilen anzeigen&#10;Taste: - (Minus, Ziffernblock)"></span>
<span class="navLink print ig_plus mobilePlus" id="TastePlus" onClick="setzeFlex(`Spalten`)" title="Events in Spalten anzeigen&#10;Taste: + (Plus, Ziffernblock)"></span>
<span class="navLink print ig_aufgabe2" onPointerDown="zeigeAufgaben(`1`,`false`);scrollToDo(`kalender`)" title="Aufgaben anzeigen&#10;Taste: * (Stern)"></span>
<span class="navLink print ig_volltag" onPointerDown="zeigeSortierung(`uhrzeitangabe2`,`false`)"  title="Ganztägige Events anzeigen"></span>
' . (BENUTZER == true ? '<span class="navLink print ig_privat" onPointerDown="zeigeSortierung(`privat`,`false`)" title="Private Events anzeigen"></span>' : '') . '
' . (BENUTZER == true && !empty($ABSENDER) ? '<span class="navLink print ig_benachrichtigung" onPointerDown="zeigeSortierung(`benachrichtigung`,`false`)" title="Benachrichtigungen anzeigen"></span>' : '') . '
<span class="navLink print ig_schluessel" onPointerDown="zeigeAlleSchluesselwoerter();scrollToDo(`kalender`)" title="Alle Schlüsselwörter anzeigen&#10;Taste: Z"></span>
<span class="navLink print ig_drucken" onPointerDown="javascript:self.print()" title="Drucken&#10;Taste: D"></span>');

// Optionen
define("OPTIONEN", BENUTZER == true ?
   '<div id="eventgruppe">
' . ICONS . '&emsp;
<span id="TasteG" class="navLink print ig_gruppe" onPointerDown="gruppenOptionEinAus()" title="Gruppenoptionen anzeigen&#10;Taste: G"></span>
<span id="gruppenOptionAnzeige" style="display:none"> | 
<span title="Alle Events auswählen oder abwählen">
<input type="checkbox" id="cAll" onclick="gruppenOptionAlleCheckboxen()"><label for="cAll">&nbsp;Alle</label></span> 
<label><span id="checkboxAnzahl">0</span> gewählte: 
<select name="gruppenAuswahlliste" id="gruppenAuswahlliste" onwheel="auswahllisteMrAendern(event, this.id)">
 ' . (ADMIN == true ? '<option value="gruppe_bearbeiten">Bearbeiten</option>' : '') . '
 ' . (BENUTZER == true ? '<option value="benutzerDetails">Details</option>' : '') . '
 <option value="gruppe_drucken">Drucken</option>
 <option value="gruppe_exportieren">Export (ICS)</option>
 ' . (ADMIN == true ? '<option value="gruppe_loeschen">Löschen</option>' : '') . '
</select>&nbsp; 
<input type="button" value="OK" onPointerDown="gruppenOption()"></span></label></div>' :
   '<div id="eventgruppe">' . ICONS . '</div>');


/*
 * Automatische Löschung nicht mehr aktueller Events nach x-Tagen (Optional)
 */
if ($DEL_EVENTS == "ja") {
   if (
      is_numeric($DEL_TAGE) &&
      $DEL_TAGE > 0 && $DEL_TAGE <= 1000
   ) {
      $db->exec("DELETE FROM `" . $TABLE_PREFIX . "_kalender`
                         WHERE (TO_DAYS(NOW()) - TO_DAYS(`start`)) > " . $DEL_TAGE);
   }
}


/*
 * Includes - "Verteilerkasten" ;)
 */
if (isset($_GET["kalender"])) {
   require_once "include/kalenderanzeige.php";
}

if (isset($_POST) && !isset($_GET["vorschau"])) {

   // Formular-Versand
   if (
      isset($_POST["eintragen"]) || isset($_POST["bearbeiten"]) || isset($_POST["loeschen"]) ||
      isset($_POST["anmelden"]) || isset($_POST["abmelden"]) || isset($_POST["suchbegriff"])
   ) {
      require_once "include/kalenderform.php";
   }
}

if (
   isset($_GET) &&
   !isset($_GET["kalender"])
) {
   $aktion = array_keys($_GET);

   if (isset($aktion[0])) {

      switch ($aktion[0]) {
         case "aktuelleevents";
         case "event";
         case "jahresliste";
         case "kalenderwoche";
         case "monatsliste";
         case "monatstag";
         case "quartal";
         case "tagesansicht";
         case "uhrzeit";
         case "vergangeneevents";
         case "wochentage";
            require_once "include/kalenderdetails1.php";
            break;

         case "alleschluessel";
         case "aufgaben";
         case "benutzer";
         case "feiertage";
         case "gruppe";
         case "kategorie";
         case "prioritaet";
         case "schluessel";
         case "sortieren";
         case "stunde";
         case "zeitraum";
         case "zeitraums";
            require_once "include/kalenderdetails2.php";
            break;

         case "aktualisierung";
         case "berechnung";
         case "gruppe_bearbeiten";
         case "gruppe_bearbeitenOk";
         case "gruppe_drucken";
         case "gruppe_exportieren";
         case "gruppe_loeschen";
         case "benutzerDetails_form";
         case "benutzerDetails_send";
         case "benutzerDetails";
         case "alleBenutzerDetails";
         case "ics_form";
         case "ics_import";
         case "kalender_export";
         case "kalender_import";
         case "menue";
         case "menue_speichern";
            require_once "include/kalenderdetails3.php";
            break;

         case "bewegen";
         case "calendar";
         case "kopieren";
         case "loeschen";
         case "tagbewegen";
         case "tageauswahl";
         case "weltzeit";
            require_once "include/kalenderdetails4.php";
            break;

         case "abmelden";
         case "anmeldung_ok";
         case "audio";
         case "datumsCheck";
         case "jahre";
         case "mehrTage";
         case "monate";
         case "optionen";
         case "stundenDifferenz";
         case "vorschau";
         case "zeigefarbe";
            require_once "include/kalenderdetails5.php";
            break;

         case "adress_form";
         case "adress_action";
            require_once "include/kalenderadressen.php";
            break;

         case "hilfe";
         case "tastaturbelegung";
            require_once "include/kalenderdetails6.php";
            break;

         case "form";
            require_once "include/kalenderform.php";
            break;

         case "kalenderblatt";
            require_once "include/kalenderblatt.php";
            break;

         case "journal";
            require_once "include/kalenderjournal.php";
            break;

         case "info";
            require_once "include/kalenderinfo.php";
            break;

         default;
            echo $aktion[0]; // Den Schlüssel bei einem Fehler ausgeben
      }
   }
}