From eef688d41b809f5a2f4c6b185e8ec66837f7470e Mon Sep 17 00:00:00 2001 From: Patrick Schwarz Date: Fri, 12 Jan 2024 01:00:15 +0100 Subject: [PATCH] Change dateformat to ISO 8601 and remove server side rendered date strings --- README.md | 4 ++-- index.php | 23 +++++++++-------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index da580ac..f9c01f3 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ document.addEventListener("DOMContentLoaded", function () { Object.keys(data).forEach(function (date) { var day = new Date(date); items.push("
" + day.toLocaleDateString(true, {weekday:'short', day:'numeric', month:'long', year: 'numeric'}) + "
"); - Object.keys(data[date].events).forEach(function (uid) { - var event = data[date].events[uid]; + Object.keys(data[date]).forEach(function (uid) { + var event = data[date][uid]; if(event.location) event.location = event.location.replace(/\n/g,"
").replace(uri_regex, "$1"); if(event.description) event.description = event.description.replace(/\n/g,"
").replace(uri_regex, (url) => {event.summary = `${event.summary}`; return "";}); items.push("
" + event.datestr + "" + event.summary + " | " + ((event.location)?event.location:'') + "
" + ((event.description)?event.description:'') + "
"); diff --git a/index.php b/index.php index 20decbc..5d34985 100644 --- a/index.php +++ b/index.php @@ -23,8 +23,8 @@ if(@filemtime($cachefile) + $cachetime < time()) { //$iCal->initURL($ical); # Load calendar entries -$period = max(filter_input(INPUT_GET, 'period', FILTER_VALIDATE_INT, array('options' => array('min_range' => 1, 'max_range' => 12))), 1); -$events = $iCal->sortEventsWithOrder($iCal->eventsFromInterval($period.' month')); +$months = max(filter_input(INPUT_GET, 'period', FILTER_VALIDATE_INT, array('options' => array('min_range' => 1, 'max_range' => 12))), 1); +$events = $iCal->sortEventsWithOrder($iCal->eventsFromInterval($months.' month')); $filter = filter_input(INPUT_GET, 'filter', FILTER_SANITIZE_SPECIAL_CHARS); @@ -49,18 +49,13 @@ foreach ($events as $event) { foreach ($period as $dt) { $date = $dt->format("Y-m-d"); - $dateFormatter = new IntlDateFormatter('de_DE', IntlDateFormatter::LONG, IntlDateFormatter::NONE, 'Europe/Berlin', IntlDateFormatter::GREGORIAN); - $weekdayFormatter = new IntlDateFormatter('de_DE', IntlDateFormatter::NONE, IntlDateFormatter::NONE, 'Europe/Berlin', IntlDateFormatter::GREGORIAN, 'EEEE'); - - $result[$date]["name"] = $dateFormatter->format($dt->getTimestamp()); - $result[$date]["weekday"] = $weekdayFormatter->format($dt->getTimestamp()); - $result[$date]["events"][$uid]["dtstart"] = $event->dtstart; #TODO: Zeitzone aus lib auslesen - $result[$date]["events"][$uid]["dtend"] = $event->dtend; #TODO: Zeitzone aus lib auslesen - $result[$date]["events"][$uid]["datestr"] = (isset($event->dtstart_array[0]["VALUE"]) && $event->dtstart_array[0]["VALUE"] == 'DATE')?'Ganztägig':$start->format('H:i'); - $result[$date]["events"][$uid]["summary"] = $event->summary; - $result[$date]["events"][$uid]["location"] = $event->location; - $result[$date]["events"][$uid]["description"] = $event->description; - if(isset($event->categories)) $result[$date]["events"][$uid]["categories"] = $event->categories; + $result[$date][$uid]["dtstart"] = $iCal->iCalDateToDateTime($event->dtstart_array[3])->format(DateTime::ATOM); + $result[$date][$uid]["dtend"] = $iCal->iCalDateToDateTime($event->dtend_array[3])->format(DateTime::ATOM); + $result[$date][$uid]["datestr"] = (isset($event->dtstart_array[0]["VALUE"]) && $event->dtstart_array[0]["VALUE"] == 'DATE')?'Ganztägig':$start->format('H:i'); + $result[$date][$uid]["summary"] = $event->summary; + $result[$date][$uid]["location"] = $event->location; + $result[$date][$uid]["description"] = $event->description; + if(isset($event->categories)) $result[$date][$uid]["categories"] = $event->categories; } }