Deutsches Sprachfile für das Add-on Calendar (AndyB)

XF2.x Deutsches Sprachfile für das Add-on Calendar (AndyB) 5.5

Keine Rechte zum Download
Falls jemand eine angepasste Holiday.php für den Kalender (5.5) von AndyB mit deutschen Feiertagen braucht:

Code:
<?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);
}

Ich habe die bestehende Holiday.php kopiert, als HolidayD.php gespeichert, abgeändert und die neue Datei in den Einstellungen des Kalenders im Admin-CP konfiguriert.
 
Zuletzt bearbeitet:
Die Funktion easter_date erzeugt eine Warnung, wenn das Jahr außerhalb des Bereichs für Unix-Zeitstempel liegt (d.h. typischerweise vor 1970 oder nach 2037 auf 32-bit-Systemen). Das ist mir bewusst. Der Kalender zeigt aber immer nur das aktuelle Jahr, das Jahr danach und das Vorjahr an (momentan 2021, 2022, 2023). Damit dürfte das Limit des Unix-Zeitstempels keine Rolle spielen. Für im Laufe des Jahres 2036 rechne ich damit, dass keine 32 Bit-Server mehr eingesetzt werden. Daher habe ich momentan darauf verzichtet, Jahre kleiner 1970 und größer 2037 auszuschließen. Wer das möchte, kann ein if then von oberhalb der Funktion bis unten zur Bestimmung von Fronleichnam einfügen.
 
Durch die Bestimmung verschiedener Feiertage über den Abstand zum Ostersonntag (Ostersonntag wird durch easter_date ermittelt) braucht man die Holiday.php nicht regelmäßig an den aktuellen Dreijahreszeitraum anzupassen.
 
Zurück
Oben