<?php
//########################################
// holiday functions
// 0 = sunday
// 1 = monday
// 2 = tuesday
// 3 = wednesday
// 4 = thursday
// 5 = friday
// 6 = saturday
//########################################
function holiday_name($y, $m, $d)
{
if ($m == 1 && $d == 1) // 1. Jan
return "Neujahrstag";
if ($m == 1 && $d == 6) // 6. Jan
return "Heilige Drei Könige";
if ($m == 2 && $d == 14) // 14. Feb
return "Valentinstag";
if ($m == 5 && $d == 1) // 1. May
return "Tag der Arbeit";
if ($m == 10 && $d == 3) // 3. Okt
return "Tag der Einheit";
if ($m == 10 && $d == 31) // 31. Okt
return "Reformationstag, Halloween";
if ($m == 11 && $d == 1) // 1. Nov
return "Allerheiligen";
if ($m == 12 && $d == 6) // 6. Dez
return "Nikolaustag";
if ($m == 12 && $d == 24) // 24. Dez
return "Heiligabend";
if ($m == 12 && $d == 25) // 25. Dez
return "1. Weihnachtstag";
if ($m == 12 && $d == 26) // 26. Dez
return "2. Weihnachtstag";
if ($m == 12 && $d == 31) // 31. Dez
return "Silvester";
//########################
// Ostern bis Fronleichnam
//########################
$tage = 60 * 60 * 24;
$ostern = easter_date($y); // Ostersonntag ermitteln
$mkarfreitag = date("n", $ostern - 2 * $tage);
$dkarfreitag = date("j", $ostern - 2 * $tage);
if ($m == $mkarfreitag && $d == $dkarfreitag) // Karfreitag
return "Karfreitag";
$mosonntag = date("n", $ostern);
$dosonntag = date("j", $ostern);
if ($m == $mosonntag && $d == $dosonntag) // Ostersonntag
return "Ostersonntag";
$momontag = date("n", $ostern + 1 * $tage);
$domontag = date("j", $ostern + 1 * $tage);
if ($m == $momontag && $d == $domontag) // Ostermontag
return "Ostermontag";
$mhimmelfahrt = date("n", $ostern + 39 * $tage);
$dhimmelfahrt = date("j", $ostern + 39 * $tage);
if ($m == $mhimmelfahrt && $d == $dhimmelfahrt) // Christi Himmelfahrt
return "Christi Himmelfahrt";
$mpsonntag = date("n", $ostern + 49 * $tage);
$dpsonntag = date("j", $ostern + 49 * $tage);
if ($m == $mpsonntag && $d == $dpsonntag) // Pfingstsonntag
return "Pfingstsonntag";
$mpmontag = date("n", $ostern + 50 * $tage);
$dpmontag = date("j", $ostern + 50 * $tage);
if ($m == $mpmontag && $d == $dpmontag) // Pfingstmontag
return "Pfingstmontag";
$mfronleichnam = date("n", $ostern + 60 * $tage);
$dfronleichnam = date("j", $ostern + 60 * $tage);
if ($m == $mfronleichnam && $d == $dfronleichnam) // Fronleichnam
return "Fronleichnam";
// return empty if no match for holiday
return;
}
function match_day($year, $month, $day, $day_of_week, $week='')
{
if (!$week || ($week == ''))
{
$lastday = date('t', mktime(0, 0, 0, $month, 1, $year));
$temp = (date('w', mktime(0, 0, 0, $month, $lastday, $year)) - $day_of_week) % 7;
}
else
{
$temp = ($day_of_week - date('w', mktime(0, 0, 0, $month, 1, $year))) % 7;
}
if ($temp < 0)
{
$temp += 7;
}
if (!$week || ($week == ''))
{
$target_day = $lastday - $temp;
}
else
{
$target_day = (7 * $week) - 6 + $temp;
}
return ($day == $target_day);
}