Hallo,
ich habe mir mal ein paar Gedanken gemacht, wie ich in meiner Rollladensteuerung die o. erwähnten Tage einbeziehen kann und das ist dabei rausgekommen:
<?
/*
***********************************************************
Berechnet den Wochentag, freie Tage, Schulferien, Feiertage
und setzt die Variablen
***********************************************************
File : Wochentag_u_freie_Tage.ips.php
Trigger : Variable "AKT_STUNDE" (Timers & Triggers)
Interval : onchange
*/
//Datumsformat "JJJJMMTT"
$today = date ("md"); // aktueller Tag
$todayy = date ("Ymd"); // aktuelles Datum
$year = date ("Y"); // aktuelles Jahr
$wochentag = GetValueString("WOCHENTAGNR"); // aktuelle Wochentagnummer
$herbstferienbeginn = "20081013"; // Herbstferienbeginn
$herbstferienende = "20081024"; // Herbstferienende
$weihnachtsferienbeginn = "20081220"; // Weihnachtsferienbeginn
$weihnachtsferienende = "20090103"; // Weihnachtsferienende
$winterferienbeginn = "20090202"; // Winterferienbeginn
$winterferienende = "20090207"; // Winterferienende
$osterferienbeginn = "20090406"; // Osterferienbeginn
$osterferienende = "20090417"; // Osterferienende
$pfingstferienbeginn = "20080513"; // Pfingstferienbeginn
$pfingstferienende = "20080516"; // Pfingstferienende
$sommerferienbeginn = "20080710"; // Sommerferienbeginn
$sommerferienende = "20080820"; // Sommerferienende
$schulfrei1 = "20080502"; // schulfreier Tag #1
$schulfrei2 = "20080502"; // schulfreier Tag #2
$schulfrei3 = "20080502"; // schulfreier Tag #3
$urlaubbeginn1 = "20080000"; // Urlaubsbeginn Urlaub #1
$urlaubende1 = "20080000"; // Urlaubsende Urlaub #1
$urlaubbeginn2 = "20080000"; // Urlaubsbeginn Urlaub #2
$urlaubende2 = "20080000"; // Urlaubsende Urlaub #2
sleep(1);
// *** Wochentag setzen (Sonntag = 7, Montag = 1) ***
$wday = date("w");
$wday1 = array("7","1","2","3","4","5","6");
$wday2 = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
//echo "Heute ist Wochentag ", $wday1[$wday], " ($wday2[$wday])","
";
SetValueString("WOCHENTAGNR", $wday1[$wday]);
SetValueString("WOCHENTAGNAME", $wday2[$wday]);
// *** Tag des Jahres setzen ***
SetValueString("JAHRTAGNR", date("z"));
// *** Kalenderwoche setzen ***
SetValueString("KALENDERWOCHE", date("W"));
sleep(1);
// *** bewegliche Feiertage ***
if ( ($today == strftime("%m%d",(easter_date() - 2 * 86400))) // Karfreitag
//or ($today == "0512") // Test-Tag (aktuellen Tag eintragen zum Funktionstest)
or ($today == strftime("%m%d",(easter_date() ))) // Ostersonntag
or ($today == strftime("%m%d",(easter_date() + 1 * 86400))) // Ostermontag
or ($today == strftime("%m%d",(easter_date() + 39 * 86400))) // Christi Himmelfahrt
or ($today == strftime("%m%d",(easter_date() + 49 * 86400))) // Pfingstsonntag
or ($today == strftime("%m%d",(easter_date() + 50 * 86400))) // Pfingstmontag
//or ($today == strftime("%m%d",(easter_date() + 60 * 86400))) // Fronleichnam
//or (($wochentag == 3) and ($today >= "1116") and ($today <= "1122")) // Buß u. Bettag
// *** feste Feiertage ***
or ($today == "0101") // Neujahr
or ($today == "0106") // Heilige Drei Könige
or ($today == "0501") // 1. Mai
or ($today == "1003") // Tag der dt. Einheit
or ($today == "1031") // Reformationstag
//or ($today == "1101") // Allerheiligen
or ($today == "1225") // 1. Weihnachtsfeiertag
or ($today == "1226") // 2. Weihnachtsfeiertag
// *** freie Tage ***
or ($today == "1224") // Heiliger Abend
or ($today == "1231") // Silvester
// *** Schulferien und schulfreie Tage***
or (($todayy >= $herbstferienbeginn) and ($todayy <= $herbstferienende)) // Herbstferien
or (($todayy >= $weihnachtsferienbeginn) and ($todayy <= $weihnachtsferienende))// Weihnachtsferien
or (($todayy >= $winterferienbeginn) and ($todayy <= $winterferienende)) // Winterferien
or (($todayy >= $osterferienbeginn) and ($todayy <= $osterferienende)) // Frühjahrsferien
or (($todayy >= $pfingstferienbeginn) and ($todayy <= $pfingstferienende)) // Pfingstferien
or (($todayy >= $sommerferienbeginn) and ($todayy <= $sommerferienende)) // Sommerferien
or ($todayy == $schulfrei1) // schulfreier Tag #1
or ($todayy == $schulfrei2) // schulfreier Tag #2
or ($todayy == $schulfrei3) // schulfreier Tag #3
// *** Urlaub ***
or (($todayy >= $urlaubbeginn1) and ($todayy <= $urlaubende1)) // 1. Urlaubszeitraum
//or (($todayy >= $urlaubbeginn2) and ($todayy <= $urlaubende2)) // 2. Urlaubszeitraum
)
// *** "Freier Tag"-Variable setzen ***
{
SetValueBoolean("FREIER_TAG", true); // Es ist ein freier Tag
// echo "Heute sind Schulferien, ein schulfreier Tag oder Urlaub, ein freier Tag oder ein Feiertag. ","
";
}
else
{
SetValueBoolean("FREIER_TAG", false); // Es ist kein freier Tag
// echo "Heute sind keine Schulferien, kein schulfreier Tag, kein Urlaub, kein freier Tag und kein Feiertag. ","
";
}
?>
Man kann die Feiertage je nach Bedarf aktivieren u. deaktivieren, indem man die Doppel-Slashes entfernt, oder setzt.
Im Script sieht man die Konfiguration, die für mich zutreffend ist.
Für die Rheinländer sind die Karnevalssachen sicher auch interessant.
Getriggert wird das Script einmal täglich um Mitternacht, wenn die „AKT_TAG“-Variable sich ändert.
Somit kann ich den Wochentag (als String) und die „freien Tage“ (als Boolean) in beliebige Scripte mit einbauen.
Sicher lässt sich das ganze noch irgendwie einfache aufbauen, aber wichtig ist für mich, dass es erstmal funktioniert.
Bin aber für Verbesserungsvorschläge von den Profis sehr offen!