Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
<?php
session_start();
if(!$_SESSION['userid']){
session_destroy();
header('Location: index.php');
exit;
}
?>
<table class="tabelle">
<tr class='topline'>
<th>Name</th><th>Zeittyp</th><th>Datum ab</th><th>Datum bis</th><th>Status</th><th>&nbsp</th>
</tr>
<?php
error_reporting(E_ALL & ~E_NOTICE);
include('dbconnect.php');
$userarray = $_SESSION['userarray'];
$infoarray = $_SESSION['infoarray'];
session_write_close(); //damit man während des ladevorgangs schon mal andere knöpfe bedienen kann (ohne ist session gelockt bis php script zuende ist -> alle anderen sind geblockt)
/* if($userarray['userid'] != 'kirstaedter' && $userarray['userid'] != 'ziebarth'){
echo "derzeit in wartung";
exit;
} */
function phplog($msg) {
global $userarray;
$ip=$_SERVER['REMOTE_ADDR'];
error_log(date('Y-m-d H:i:s|') .
"$ip|" . $userarray['userid'] . "|$msg\n", 3, "/var/log/timerec3/timerec3-debug.log");
}
//Feiertag-Funktion, anonym gemacht damit spätere includierte files eine gleichnamige funktion nochmal erstellen können.
$feiertagfunktion = function($date){
$tag = substr($date, -2);
$monat = substr($date, 5, 2);
$jahr = substr($date, 0, 4);
global $dbc;
//empty um wiederholte DB abfrage zu verhindern
if(empty($feiertage)){
// Feste Feiertage werden nach dem Schema ddmm eingetragen
$feiertage[] = "0101"; // Neujahrstag
$feiertage[] = "0105"; // Tag der Arbeit
$feiertage[] = "0310"; // Tag der Deutschen Einheit
$feiertage[] = "2412"; // Weihnachten
$feiertage[] = "2512"; // Erster Weihnachtstag
$feiertage[] = "2612"; // Zweiter Weihnachtstag
$feiertage[] = "3112"; // Neujahr
// Bewegliche Feiertage berechnen
$tage = 60 * 60 * 24;
$ostersonntag = easter_date($jahr);
$feiertage[] = date("dm", $ostersonntag - 2 * $tage); // Karfreitag
$feiertage[] = date("dm", $ostersonntag + 1 * $tage); // Ostermontag
$feiertage[] = date("dm", $ostersonntag + 39 * $tage); // Himmelfahrt
$feiertage[] = date("dm", $ostersonntag + 50 * $tage); // Pfingstmontag
//freie Tage FHI aus Datenbank nehmen
$getfree = $dbc->query("select daymon from feiertag where year = $jahr;");
foreach($getfree as $free){
$bruecke[] = $free['daymon'];
}
}
// Prüfen, ob Feiertag
$code = $tag.$monat;
if(in_array($code, $bruecke)){
return 2;
}elseif(in_array($code, $feiertage)){
return 1;
}else{
return 0;
}
};
$thisyear = date('Y');
$getag = $dbc->query("select distinct leiter, gn, gnv, pr, prv from ag join mitarbeiter m on m.agID = ag.ag_ID where '$infoarray[maID]' in (leiter, gn, gnv, pr, prv);");
$ag = $getag->fetch_assoc();
$rolle = array_search($infoarray['maID'], $ag);
if($rolle){
$aglist = "or m.agID in (";
foreach($infoarray['ag_array'] as $agnr){
$aglist .= "$agnr, ";
}
$aglist = substr($aglist, 0, -2);
$aglist .= ")";
}else{
$aglist = "";
}
if($userarray['admin'] && $infoarray['maID'] == $userarray['maID']){
//echo "Administratoren sehen nun nur noch bei sich selbst alle offenen Anträge aller Mitarbeiter. Bei Auswahl eines beliebigen anderen Mitarbeiters wird exakt dessen Ansicht geladen, damit besser nachvollziebar ist, was der User sieht";
$aglist .= "or k.maID is not NULL";
$rolle = "admin";
}
switch($rolle){
case "admin":
case "leiter":
case "gn":
case "gnv":
$bedingungen = [
"geprüft",
"beantragt"
];
break;
case "pr":
case "prv":
$bedingungen = [
"beantragt"
];
break;
default:
$bedingungen = [];
}
$getkalender = $dbc->query("select k.maID, concat(nachname, ', ', vorname) as name, datum, typ, status, zt_bez from kalender k
join mitarbeiter m on k.maID = m.maID
join zeittyp zt on k.typ = zt.zt_ID
where (k.maID = '$infoarray[maID]'
$aglist)
and year(datum) = $thisyear
order by nachname, datum, k_id;");
foreach($getkalender as $eintrag){
$filterkal[$eintrag['maID']][$eintrag['datum']] = $eintrag;
}
/* echo "<pre>";
var_dump($filterkal);
echo "</pre>"; */
//phplog(print_r($filterkal, true));
foreach($filterkal as $ma=>$kal){
$getazm = "select * from az_data_copy data where maID = '$ma' order by azdID desc, datum_ab desc;";
$azm = $dbc->query($getazm);
foreach($azm as $az){
$getazt = $dbc->query("select * from az_time where azdID = $az[azdID];");
foreach($getazt as $aztline){
$azt[$aztline['azdID']][$aztline['tag']] = $aztline;
}
}
$datepointer = new DateTime('00:00:00');
$datepointer->modify("-30 days");
$lastdate = new DateTime(end($kal)['datum']);
while($datepointer <= $lastdate){
$datestr = $datepointer->format('Y-m-d');
foreach($azm as $az){ //AZ-Modelle des MA durchlaufen und für dieses Datum geltendes verwenden
$az_ab = $az['datum_ab'];
if($az_ab <= $datestr){
break;
}else{
$az = NULL;
}
}
$wochentag = $datepointer->format('N');
$prevdate = clone $datepointer;
$prevdate->modify('-1 day');
$prevwochentag = $prevdate->format('N');
while($feiertagfunktion($prevdate->format('Y-m-d')) || !checkdate($prevdate->format('m'), $prevdate->format('d'), $prevdate->format('Y')) || !isset($azt[$az['azdID']][$prevwochentag])){
//Lücken überspringen (freie Tage, Wochenende, Brückentag, 29, 30, 31. Feb. ... )
$prevdate->modify('-1 day');
$prevwochentag = $prevdate->format('N');
}
if(!$feiertagfunktion($datestr) && checkdate($datepointer->format('m'), $datepointer->format('d'), $datepointer->format('Y')) && isset($azt[$az['azdID']][$wochentag])){
if($ma == $infoarray['maID']){
$checked_bedingungen = true;
}else{
in_array($kal[$datestr]['status'], $bedingungen) ? $checked_bedingungen = true : $checked_bedingungen = false;
}
if(isset($kal[$datestr])){
if(in_array($kal[$datestr]['typ'], array(10,20)) && $checked_bedingungen && ($olddate != $prevdate->format('Y-m-d') || $oldtype != $kal[$datestr]['typ'])){
if(count($ausgabe)){
end($ausgabe);
if($ausgabe[key($ausgabe)]['maID'] == $ma){
$ausgabe[key($ausgabe)]['lastdate'] = $olddate;
}
}
$ausgabe[] = [ "name" => $kal[$datestr]['name'],
"typ" => $kal[$datestr]['typ'],
"zt_bez" => $kal[$datestr]['zt_bez'],
"datum" => $kal[$datestr]['datum'],
"status" => $kal[$datestr]['status'],
"maID" => $kal[$datestr]['maID']
];
}
if(in_array($kal[$datestr]['typ'], array(10,20))){
$olddate = $kal[$datestr]['datum'];
$oldtype = $kal[$datestr]['typ'];
}
}
}
$datepointer->modify('+1 day');
}
if(count($ausgabe)){
end($ausgabe);
if($ausgabe[key($ausgabe)]['typ'] == $oldtype && $ausgabe[key($ausgabe)]['maID'] == $ma){
$ausgabe[key($ausgabe)]['lastdate'] = $olddate;
}elseif($ausgabe[key($ausgabe)]['maID'] == $ma){
$ausgabe[key($ausgabe)]['lastdate'] = $ausgabe[key($ausgabe)]['datum'];
}
}
}
foreach($ausgabe as $zeile){
switch($zeile['status']){
case "beantragt":
$farbe = "yellow";
break;
case "geprüft":
$farbe = "light-green";
break;
case "genehmigt":
$farbe = "green";
break;
case "abgelehnt":
$farbe = "red";
break;
default:
$farbe = '';
}
echo "<tr class='$farbe'>";
$datestr = new DateTime($zeile['datum']);
$datestr = $datestr->format('d.m.Y');
$lastdatestr = new DateTime($zeile['lastdate']);
$lastdatestr = $lastdatestr->format('d.m.Y');
echo "<td>$zeile[name]</td><td>$zeile[zt_bez]</td><td>$datestr</td><td>$lastdatestr</td><td>$zeile[status]</td><td><a href='index.php?ma=$zeile[maID]&tocal=$zeile[datum]'><button>öffnen</button></a></td>";
echo "</tr>";
}
//anonyme funktion wieder löschen
unset($feiertagfunktion);
?>
</table>