Abfallkalender für Lübeck auslesen

Eigentlich könnte man daraus ein einfaches Modul für die V4 machen.

Hier mein aktueller Stand, gibt nur Probleme, wenn mehr als ein Feiertag in der Woche ist, also zwischen Weihnachten und Neujahr ;).

Die ganzen Variablen müssen (leider) manuell angelegt und angepasst werden.

<?php

// Hilfsfunktionen

function boolString($bValue = false) {                      // returns string
  return ($bValue ? ', Feiertag diese Woche' : '');
}

function getGermanPublicHolidays($year = null) {
	if(!$easter = easter_date($year)) return false;
	else {
		$holidays['Neujahr']             = mktime(0,0,0,1,1,$year);
//		$holidays['Rosenmontag']         = strtotime("-48 days", $easter);
		$holidays['Tag der Arbeit']      = mktime(0,0,0,5,1,$year);
		$holidays['Karfreitag']          = strtotime("-2 days", $easter);
		$holidays['Ostern']              = $easter;
		$holidays['Ostersonntag']        = $easter;
		$holidays['Ostermontag']         = strtotime("+1 day", $easter);
		$holidays['Himmelfahrt']         = strtotime("+39 days", $easter);
		$holidays['Pfingsten']           = strtotime("+49 days", $easter);
		$holidays['Pfingstsonntag']      = strtotime("+49 days", $easter);
		$holidays['Pfingstmontag']       = strtotime("+50 days", $easter);
//		$holidays['Fronleichnam']        = strtotime("+60 days", $easter);
		$holidays['Tag der Einheit']     = mktime(0,0,0,10,3,$year);
		$holidays['Heiligabend']         = mktime(0,0,0,12,24,$year);
		$holidays['1. Weihnachtsfeiertag'] = mktime(0,0,0,12,25,$year);
		$holidays['2. Weihnachtsfeiertag'] = mktime(0,0,0,12,26,$year);
		$holidays['Silvester']           = mktime(0,0,0,12,31,$year);
		$holidays['1. Advent']           = strtotime("1 sunday", mktime(0,0,0,11,26,$year));
		$holidays['2. Advent']           = strtotime("2 sunday", mktime(0,0,0,11,26,$year));
		$holidays['3. Advent']           = strtotime("3 sunday", mktime(0,0,0,11,26,$year));
		$holidays['4. Advent']           = strtotime("4 sunday", mktime(0,0,0,11,26,$year));
		return $holidays;
	}
}

// Hier die gewünschten Tage und Meldungen in der benötigten Woche eintragen
// An welchem Tag (0-6) in der geraden oder ungeraden Woche wird was abgeholt
$abfuhrtermine = array ( 'u' => array ( '2' => 'Restmüll rausstellen',
                                			 '3' => 'Altpapier/Verpackung rausstellen'),
                 			 'g' => array ( '3' => 'Altpapier rausstellen',
                              			 '5' => 'Bioabfälle rausstellen'));

$tag[0] = "So";
$tag[1] = "Mo";
$tag[2] = "Di";
$tag[3] = "Mi";
$tag[4] = "Do";
$tag[5] = "Fr";
$tag[6] = "Sa";

$feiertag_diese_woche = GetValueBoolean(42624 /*[Visualisierung\Mülltermine\Abfuhrdatum errechnen\Feiertag in der Woche]*/);
$feiertag_name = GetValueString( 12400 /*[Visualisierung\Mülltermine\Abfuhrdatum errechnen\Feiertag Name]*/);

$heuteD = date("d");
$heuteM = date("m");
$heuteY = date("Y");
/*** TEST Tag   
$heuteD = 19;
$heuteM = 02;
$heuteY = 2012; ***/

// Feiertag heute? setzen für andere Scripte
$heute = mktime( 0, 0, 0, $heuteM, $heuteD, $heuteY );
SetValueBoolean(41473 /*[Visualisierung\Allgemeine Tagesdaten\feiertag]*/ , array_search($heute, getGermanPublicHolidays(date("Y",$heute))));

$morgen = mktime( 0, 0, 0, $heuteM, $heuteD+1, $heuteY );
if($_IPS['SENDER'] == "Execute")
	echo "Aktueller Tag   :    ".date("d.m.Y", mktime( 0, 0, 0, $heuteM, $heuteD, $heuteY ))."
Betrachteter Tag: ";

$datum = date("d.m.Y", $morgen);
$woche = date("W", $morgen);     // W - Wochennummer des Jahres (z.B.: 28)
$wochentag = date("w", $morgen); // w - Wochentag (0(Sonntag) bis 6(Samstag))

$feiertag = array_search($morgen, getGermanPublicHolidays(date("Y",$morgen)));
if ( $feiertag <> "" AND !($wochentag == 0) ) {
   if ( $_IPS['SENDER'] == "Execute" )
		echo $feiertag.", KEINE Abholung, dadurch 1 Tag Verschiebung";
	SetValueBoolean(42624 /*[Visualisierung\Mülltermine\Abfuhrdatum errechnen\Feiertag in der Woche]*/, true);
	SetValueString(12400 /*[Visualisierung\Mülltermine\Abfuhrdatum errechnen\Feiertag Name]*/, $feiertag);
	return;
}

// Feiertagsmerker am Sonntag zurücksetzen
If ($wochentag == 0 ) {
	SetValueBoolean(42624 /*[Visualisierung\Mülltermine\Abfuhrdatum errechnen\Feiertag in der Woche]*/, false);
	SetValueString(12400 /*[Visualisierung\Mülltermine\Abfuhrdatum errechnen\Feiertag Name]*/, "");
}

if($_IPS['SENDER'] == "Execute")
	echo $tag[$wochentag]." ".$datum.", Tag ".$wochentag.boolString($feiertag_diese_woche);

// Prüfung auf Gerade oder Ungerade Woche
if($woche % 2 == 0) {
	if($_IPS['SENDER'] == "Execute")
  		echo ", gerade Woche

";
	$gu = 'g';
} else {
	if($_IPS['SENDER'] == "Execute")
		echo ", ungerade Woche

";
	$gu = 'u';
}

$ausgabe = "";
SetValueBoolean(18009 /*[Visualisierung\Mülltermine\Meldung anzeigen]*/, false);

if  ( !$feiertag_diese_woche ) {
	if ( isset($abfuhrtermine[$gu][$wochentag])) {
		$ausgabe = $abfuhrtermine[$gu][$wochentag].", Abholung am ".$tag[$wochentag]." ".$datum;
		SetValueBoolean(18009 /*[Visualisierung\Mülltermine\Meldung anzeigen]*/, true);
	}
} elseif ( isset($abfuhrtermine[$gu][$wochentag-1])) {
	$ausgabe = $abfuhrtermine[$gu][$wochentag-1].", Abholung am ".$tag[$wochentag]." ".$datum . "
(Feiertagsverschiebung wegen: ".$feiertag_name.")";
	SetValueBoolean(18009 /*[Visualisierung\Mülltermine\Meldung anzeigen]*/, true);
}

if($_IPS['SENDER'] == "Execute")
	echo $ausgabe;

SetValueString(47956 /*[Visualisierung\Mülltermine\Meldung]*/, $ausgabe);

?>


Hallo Paresy,

ich habe mal eine Frage zu dem Abfallkalender Modul. Wäre es möglich mit deinem Modul auch meinen Kalender auszulesen?

Was genau müsste ich dafür anpassen und ist das generell überhaupt möglich?

Abfuhrkalender

Als Ort wäre Oberding für mich interessant und die Goldacher Straße.

Wäre dankbar für Hilfe und Auskunft.

Danke und Grüße

Stephan

Das geht leider nicht so einfach. Du müsstest dir genau ansehen, wie die ihre „Daten“ laden und diese dann Auswerten. Da gibt es leider keine „simple“ Anleitung :frowning:

paresy

Hallo Paresy,

vielen Dank für die schnelle Antwort.

Du müsstest dir genau ansehen, wie die ihre „Daten“ laden und diese dann Auswerten. Da gibt es leider keine „simple“ Anleitung

Oh ok, das hatte ich irgendwie befürchtet. Schade, ich dachte das ginge einfacher :(:(.

Trotzdem danke und Grüße

Stephan