diff --git a/feiertage.php b/feiertage.php index 10a56d1..e21f582 100644 --- a/feiertage.php +++ b/feiertage.php @@ -29,7 +29,10 @@ abstract class Bundesland { } public function GetName(int $land, bool $code = false) { - return ($code) ? self::$Namen[$land][1] : self::$Namen[$land][0]; + if ($land >= 0 && $land < self::Count()) + return ($code) ? self::$Namen[$land][1] : self::$Namen[$land][0]; + else + return ''; } } @@ -214,10 +217,11 @@ class FeiertagKalender { return "END:VCALENDAR\r\n"; } - public function GetVCalendar() { + public function GetVCalendar(int $land = -1) { $s = $this->GetHeader(); for ($i = 0; $i < count($this->feiertage); $i++) - $s .= $this->feiertage[$i]->GetVEvent(); + if ($land == - 1 || !$this->feiertage[$i]->IsGesetzlich() || $this->feiertage[$i]->IsInBundesland($land)) + $s .= $this->feiertage[$i]->GetVEvent(); $s .= $this->GetFooter(); return $s; } @@ -238,92 +242,114 @@ if (isset($_GET['jahr']) && is_numeric($_GET['jahr'])) $tage = new FeiertagKalender($jahr); if (isset($_GET['jahr'])) { if (!isset($_GET['raw'])) { + $land = -1; + if (isset($_GET['land']) && is_numeric($_GET['land'])) + $land = max(0, min(Bundesland::Count(), intval($_GET['land']))) - 1; + $name = Bundesland::GetName($land, true); header('Content-Type: text/calendar; charset=utf-8'); - header("Content-Disposition: inline; filename=\"Feiertage{$jahr}.ics\""); - echo $tage->GetVCalendar(); + header("Content-Disposition: inline; filename=\"Feiertage{$name}{$jahr}.ics\""); + echo $tage->GetVCalendar($land); } else { header('Content-Type: text/plain; charset=utf-8'); echo $tage; } + exit(0); } -else { - echo ' +?> + -
- - - - - - - - - - - - - - - - - - - - - -- iCal-Kalenderdatei mit bundes- und landesweiten Feiertagen für ausgewähltes Jahr zum Import in alle gängigen Kalenderprogramme herunterladen. - iCal bzw. iCalendar ist ein standardisiertes Datenformat zum Austausch von Kalenderinhalten. Das Format wird von der Mehrzahl der Kalenderprogramme unterstützt, die webbasierte Kalenderdaten einbinden können, - u.a. Google Kalender, Microsoft Outlook, Mozilla Thunderbird, iPhone Kalender und macOS Kalender. -
-