Level: mittel

Vorbereitung

Lade die Datei kalendereintrag.zip herunter und speichere sie auf deinem Server / XAMPP. In der Datei sind mehrere Variablen schon vordefiniert, unter anderem auch ein Array mit den Informationen zum Event. Diese Informationen können sowohl zur Anzeige, also auch zum Generieren des ICS Files benutzt werden. In Punkten 1-3 wird der Kalendereintrag generiert, wenn du weitermachen möchtest, kannst du mit Punkten 6-10 auch eine Anzeige und einen Switch zwischen Anzeige und Download der Informationen machen.

Aufgabe

  1. Setze erst einmal die bestehenden Variablen im Kalender-Output ein. Du kannst dazu echo innerhalb des ICAL-Codes verwenden
    • UID ist hier ein einmaliger Zufalls-String, mit den Funktionen md5, uiniqid() und mt_rand() ermittelt. Setze sie vor dem @ auf der Zeile beginnend mit "UID" ein 
    • updated_date / updated_time sind Zeitstempelvariablen. gmdate() erstellt einen Zeitstempel in der GMT (Greenwich Zeitzone). Platziere diese beiden Variablen mit echo auf der Zeile beginnend mit "DTSTAMP", so, dass vor dem T das Datum, und vor dem Z die Zeit Platz finden statt den gleich formatierten Platzhalterwerten
  2. Daten aus dem Array: diese Daten kannst du beliebig anpassen, um deinen eigenen Event anzeigen zu lassen.
    1. name ist der Name / Titel des Events und soll auf die Zeile "SUMMARY"
    2. start_date und start_time kommen auf die "DTSTART"
    3. end_date und end_time kommen auf die "DTEND"
  3. Bisher wird die Datei, wenn du sie im Browser testest, immer noch direkt angezeigt, da sie text enthält, und der Standard Mime-Typ ist "text/html". Damit sie herunter geladen wird, müssen mittels der Funktion header() der Content-Type sowie die Download-Anweisung (Content-Disposition) mitgechickt werden. Der hier angegebene Dateiname kann, wenn du möchtest, auch die UID-Variable enthalten (dies wird oft so gemacht). Bspw: 'kalendertermin-8e99bc4d729a6d713902bc59eb8b2420.ics". Hast du diese oberhalb des Kalenderformats korrekt formuliert, sollte nun eine Datei mit der Endung .ics heruntergeladen werden, die du in deiner Kalender-App öffnen kannst

Noch nicht genug?

  1. Um die Daten aus dem Event-Array nun nicht direkt heunterzuladen, sondern dem User ein Interface und eine Web-Ansicht zu geben, baust du einen Switch ein. Erstelle einen Button oder Link mit einem URL-Parameter (GET) format=ics, also zum Beispiel "kalendereintrag.php?format=ics", und umschliesse den Code mit den header() Befehlen und das ICS output mit einer IF-Anweisung, in der Du prüfst, ob der GET-Parameter "format" existiert und den entsprechenden Wert hat.
  2. Gebe nun die Daten des Events in einer HTML-Struktur aus, zum Beispiel in eiem DIV, oder einer Kalenderdarstellung ähnlich wie bei der Übung Kalender 1. Diesen Code führst du aus, wenn der GET-Parameter "format" NICHT mitgeschickt wurde (z.B. in einer ELSE-Anweisung). Der Besucher sollte nun die Möglichkeit haben, den Event erst nur zu betrachten, und mit Klick auf den Button einen ICAL / Kalendereintrag davon herunter zu laden.

 

Tipps

Zum Testen kannst du jederzeit die Zeilen mit der Funktion header() wieder ausblenden, dann siehst du den Datei-Inhalt der ICS Datei