<?php
function ostern($id) {
$y = date("Y", $id);
$a = $y % 19;
$b = $y % 4;
$c = $y % 7;
$d = (19 * $a + 24) % 30;
$e = (2 * $b + 4 * $c + 6 * $d + 5) % 7;
$oD = 22 + $d + $e;
$oM = 3;
if ($oD > 31) {
$oD = $d + $e - 9;
$oM = 4;
}
if ($oD == 26 && $oM == 4) $oD = 19;
if ($oD == 25 && $oM == 4 && $d == 28 && $e == 6 && $a > 10) $oD = 18;
return mktime(0, 0, 0, $oM, $oD, $y);
}
function feiertag($id) {
if (date("d.m", $id) == "01.01") return "Neujahr";
if (date("d.m", $id) == "06.01") return "Dreikönig";
if (date("d.m", $id) == "01.05") return "Tag der Arbeit";
if (date("d.m", $id) == "03.10") return "Tag der deutschen Einheit";
if (date("d.m", $id) == "01.11") return "Allerheiligen";
if (date("d.m", $id) == "24.12") return "(Heilig Abend)";
if (date("d.m", $id) == "25.12") return "1. Weihnachtstag";
if (date("d.m", $id) == "26.12") return "2. Weihnachtstag";
if (date("d.m", $id) == "31.12") return "(Sylvester)";
$oS = ostern($id);
if (mktime(0, 0, 0, date("n", $id), date("j", $id) + 2, date("Y", $id)) == $oS) return "Karfreitag";
if (mktime(0, 0, 0, date("n", $id), date("j", $id) , date("Y", $id)) == $oS) return "Ostersonntag";
if (mktime(0, 0, 0, date("n", $id), date("j", $id) - 1, date("Y", $id)) == $oS) return "Ostermontag";
if (mktime(0, 0, 0, date("n", $id), date("j", $id) - 39, date("Y", $id)) == $oS) return "Christi Himmelfahrt";
if (mktime(0, 0, 0, date("n", $id), date("j", $id) - 49, date("Y", $id)) == $oS) return "Pfingstsonntag";
if (mktime(0, 0, 0, date("n", $id), date("j", $id) - 50, date("Y", $id)) == $oS) return "Pfingstmontag";
if (mktime(0, 0, 0, date("n", $id), date("j", $id) - 60, date("Y", $id)) == $oS) return "Fronleichnam";
return "";
}
// DB-Verbindung:
$con = bls_dbConnect("intranet");
// Tabelle ggf. löschen:
mysql_query("DROP TABLE IF EXISTS kalender", $con) or die("<p>Böses SQL-Statement:</p><p>$sql</p><p>".mysql_error($con)."</p>");
// Tabelle anlegen:
$sql = "
CREATE TABLE kalender (
id int(11) unsigned NOT NULL default '0',
datum date NOT NULL default '0000-00-00',
tag int(2) unsigned NOT NULL default '0',
wtag int(1) unsigned NOT NULL default '0',
wtag17 int(1) unsigned NOT NULL default '0',
wtagname char(10) NOT NULL default '',
wtagkurz char(2) NOT NULL default '',
kw int(2) unsigned NOT NULL default '0',
kwjahr int(4) unsigned NOT NULL default '0',
monat int(2) unsigned NOT NULL default '0',
monatname char(9) NOT NULL default '',
monatkurz char(3) NOT NULL default '',
jahr int(4) unsigned NOT NULL default '0',
jahrkurz int(2) unsigned NOT NULL default '0',
datumganzlang varchar(32) NOT NULL default '',
arbeitstag char(1) NOT NULL default '',
feiertag char(32) NOT NULL default '',
arbh_n int(2) unsigned NOT NULL default '0',
arbh_2 int(2) unsigned NOT NULL default '0',
arbh_3 int(2) unsigned NOT NULL default '0',
arbh_v int(2) unsigned NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE KEY datum (datum)
) TYPE=MyISAM
";
mysql_query($sql, $con) or die("<p>Böses SQL-Statement:</p><p>$sql</p><p>".mysql_error($con)."</p>");
$kwjahr = 1970;
// Tage von 1971 bis 2036:
for($i = mktime(0,0,0,1,1,1971); $i <= mktime(0,0,0,12,31,2036); $i += 86400) {
$id = $i - (date("I", $i) * 3600); // Sommerzeit: 1 Std. abziehen
$datum = date("Y-m-d", $id);
$tag = date("j", $id);
$wtag = date("w", $id);
$wtag17 = ($wtag == 0) ? 7 : $wtag;
$wtagname = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$wtagname = $wtagname[$wtag];
$wtagkurz = array("So","Mo","Di","Mi","Do","Fr","Sa");
$wtagkurz = $wtagkurz[$wtag];
$kw = strftime("%V", $id);
$kwjahr = date("Y", $id);
if ($kw == "01" && date("n", $id) == 12) $kwjahr += 1;
if ($kw >= "25" && date("n", $id) == 1) $kwjahr -= 1;
if ($kw == "01") $kwjahr = (date("n", $id) == 1) ? date("Y", $id) : date("Y", $id)+1;
$monat = date("n", $id);
$monatname = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
$monatname = $monatname[$monat-1];
$monatkurz = array("Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
$monatkurz = $monatkurz[$monat-1];
$jahr = date("Y", $id);
$jahrkurz = date("y", $id);
$datumganzlang = $wtagname . ", " . $tag . ". " . $monatname . " " . $jahr;
$feiertag = feiertag($id);
$arbeitstag = "A";
if ($wtag == 5) $arbeitstag = "a";
//letzter Sa. vor Hl. Abend:
$xtag = mktime(0, 0, 0, 12, 24, $jahr);
while (date("w", $xtag) != 6) $xtag -= 86400;
if ($id >= $xtag) $arbeitstag = "=";
// 3-König:
$xtag = mktime(0, 0, 0, 1, 6, $jahr);
if ($id < $xtag) $arbeitstag = "=";
if ($wtag == 0 || $wtag == 6) $arbeitstag = "-";
if ( !(($feiertag == "") || (substr($feiertag, 0, 1) == "(")) ) $arbeitstag = "*";
$arbh_n = ($arbeitstag == "A") ? 8 : (($arbeitstag == "a") ? 5 : 0);
$arbh_2 = ($arbeitstag == "A") ? 15 : (($arbeitstag == "a") ? 9 : 0);
$arbh_3 = ($arbeitstag == "A") ? 23 : (($arbeitstag == "a") ? 15 : 0);
$arbh_v = ($arbeitstag == "A") ? 24 : (($arbeitstag == "a") ? 24 : 0);
$sql = "
INSERT INTO kalender SET
id='$id',
datum='$datum',
tag='$tag',
wtag='$wtag',
wtag17='$wtag17',
wtagname='$wtagname',
wtagkurz='$wtagkurz',
kw='$kw',
kwjahr='$kwjahr',
monat='$monat',
monatname='$monatname',
monatkurz='$monatkurz',
jahr='$jahr',
jahrkurz='$jahrkurz',
datumganzlang='$datumganzlang',
arbeitstag='$arbeitstag',
feiertag='$feiertag',
arbh_n='$arbh_n',
arbh_2='$arbh_2',
arbh_3='$arbh_3',
arbh_v='$arbh_v'
";
echo $id.": ".date("d.m.Y", $id)." - KW$kw/$kwjahr $arbeitstag $wtagname, $tag. $monatname $jahr".(($arbeitstag == "*") ? ", $feiertag" : "");
mysql_query($sql, $con) or die("<p>Böses SQL-Statement:</p><p>$sql</p><p>".mysql_error($con)."</p>");
echo "<br>";
}
// Änderung 12.1.2006: Ab 1. August 2005 neue Tageskapazitäten (40h-Woche):
echo " <br> <br>Anpassung der Tageskapazitäten auf 40h-Woche...";
// Mo bis Do:
$sql = "
UPDATE
`kalender`
SET
`arbh_n` = '8.75',
`arbh_2` = '16.25',
`arbh_3` = '23.25'
WHERE
BINARY `arbeitstag` = BINARY 'A'
AND `datum` >= '2005-08-01'
";
mysql_query($sql, $con) or die("<p>Böses SQL-Statement:</p><p>$sql</p><p>".mysql_error($con)."</p>");
// Freitag:
$sql = "
UPDATE
`kalender`
SET
`arbh_n` = '5',
`arbh_2` = '11.25',
`arbh_3` = '15.5'
WHERE
BINARY `arbeitstag` = BINARY 'a'
AND `datum` >= '2005-08-01'
";
mysql_query($sql, $con) or die("<p>Böses SQL-Statement:</p><p>$sql</p><p>".mysql_error($con)."</p>");
// Sonntag:
$sql = "
UPDATE
`kalender`
SET
`arbh_3` = '4.25'
WHERE
`arbeitstag` = '-'
AND `wtag` = '0'
AND `datum` >= '2005-08-01'
";
mysql_query($sql, $con) or die("<p>Böses SQL-Statement:</p><p>$sql</p><p>".mysql_error($con)."</p>");
echo " <br> <br>FERTIG !";
?>