From c5a030b75553f74b892017dda79fe17e4da938e4 Mon Sep 17 00:00:00 2001 From: Steffen Lange Date: Sun, 28 Feb 2021 22:42:03 +0100 Subject: [PATCH] Add download filter for states --- feiertage.php | 201 ++++++++++++++++++++++++++++---------------------- 1 file changed, 112 insertions(+), 89 deletions(-) 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 ' +?> + - - - - - - - - - - - - - - - - - - - - - - - Feiertage | Kalender - - -
-

Kalender ' . $now . ' – Feiertage in Deutschland

-

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

-
-
-
- +' . strval($now + $i) . ''; - echo ' - - -
-
- -
-
-
- - - - - -'; + echo "\t\t\t\t\t\t\t' . PHP_EOL; +?> + + + + +
+
+
- - -'; + echo "\t\t\t\t\t\t\t" . '' . PHP_EOL; +?> + + + + +
+ +
+ + +
+
' . $now . 'Feiertag
+ + + + +' . Bundesland::GetName($i, true) . '' . PHP_EOL; +?> + + + +Count(); $i++) { $tag = $tage->GetFeiertag($i); - echo ' '; + echo "\t\t\t\t" . PHP_EOL; + echo "\t\t\t\t\t" . '' . PHP_EOL . "\t\t\t\t\t"; for ($j = 0; $j < Bundesland::Count(); $j++) { echo ''; } - echo ' -'; + echo PHP_EOL . "\t\t\t\t" . '' . PHP_EOL; } - echo ' -
Feiertag
' . $tag->GetDatum('d.m.') . '' . htmlentities($tag->GetName()) . '
' . $tag->GetDatum('d.m.') . '' . htmlentities($tag->GetName()) . ''; if ($tag->IsInBundesland($j)) @@ -332,17 +358,14 @@ else { echo '☆'; echo '
-
-

Mit PayPal spenden

-

© ' . $now . ' Steffen Lange | Alle Angaben ohne Gewähr. | Impressum | Datenschutz

-
- -'; -} - ?> + + +
+

Mit PayPal spenden

+

© Steffen Lange | Alle Angaben ohne Gewähr. | Impressum | Datenschutz

+ + +