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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>timerec</title>
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="shortcut icon" href="favicon.ico">
<script>
function scrolltoview(element){
for(option of element.childNodes){
if(option.selected){
option.scrollIntoView();
break;
}
}
}
</script>
</head>
<body onload='scrolltoview(document.getElementById("agauswahl"));'>
<?php
include('dbconnect.php');
//Feiertag-Funktion
function feiertag($tag, $monat, $jahr){
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[] = "2512"; // Erster Weihnachtstag
$feiertage[] = "2612"; // Zweiter Weihnachtstag
// 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){
$feiertage[] = $free['daymon'];
}
}
// Prüfen, ob Feiertag
$code = $tag.$monat;
return in_array($code, $feiertage);
}
//unbedingt deutsche Sprache auf Server nachrüsten mit:
//sudo locale-gen de_DE.UTF-8
//sudo update-locale LANG=de_DE.UTF-8
//sudo service apache2 restart
//wortlaut im setlocale() befehl MUSS korrekt sein! (s.u.)
setlocale(LC_TIME, 'de_DE.UTF8');
session_start();
if(!$_SESSION['userid']){
session_destroy();
include('login.php');
exit;
}
$infoarray = $_SESSION['infoarray'];
$userarray = $_SESSION['userarray'];
$maID = $infoarray['maID'];
if(isset($_GET['y'], $_GET['m'])){
$jahr = $_GET['y'];
$monat = $_GET['m'];
$datum = new DateTime("$jahr-$monat-01");
}else{
$datum = new DateTime();
$jahr = $datum->format('Y');
$monat = $datum->format('m');
}
if(isset($_GET['ag'])){
//AGs laden, die ausgewählt wurden
//gegen unerwünschtes Laden anderer AGs sichern per prüfung,
//ob GET wert in userarray->ag_array vorhanden ist
foreach($_GET['ag'] as $ag){
if($userarray['admin'] || in_array($ag, $userarray['ag_array'])){
$agtoload[] = $ag;
}
}
}else{
//AG aus infoarray laden (-> AG des vorher gewählten MA wird geöffnet)
if($userarray['admin'] || in_array($infoarray['agID'], $userarray['ag_array'])){
$agtoload[] = $infoarray['agID'];
}
}
if(!$_SESSION['userarray']['admin'] && empty($agtoload)){
$agtoload[] = current($userarray['ag_array']);
}
$getkalenderstr = "select k.maID, datum, typ, zt_bez, status from kalender k
join mitarbeiter m on k.maID = m.maID
join zeittyp zt on k.typ = zt.zt_ID
where agID in (";
$getagpplstr = "select maID, concat(nachname, ', ', vorname) as name from mitarbeiter where agID in (";
foreach($agtoload as $ag){
$getkalenderstr .= "$ag, ";
$getagpplstr .= "$ag, ";
$agidstr .= "&ag[]=$ag";
}
$getagpplstr = substr($getagpplstr, 0, -2);
$getagpplstr .= ") order by nachname;";
$getagppl = $dbc->query($getagpplstr);
$getkalenderstr = substr($getkalenderstr, 0, -2);
$getkalenderstr .= ") and year(datum) = $jahr and month(datum) = $monat order by nachname, datum, k_id asc;";
$reskalender = $dbc->query($getkalenderstr);
foreach($reskalender as $kalendereintrag){
//nur aktuellste einträge pro MA und datum nehmen
$kalender[$kalendereintrag['maID']][$kalendereintrag['datum']] = $kalendereintrag;
}
if($userarray['admin'] || !empty($userarray['ag_array'])){
$agname = "<form id='agwahl' action='ag-kalender.php' method='get'>
<select id='agauswahl' class='auswahl inline' multiple name='ag[]' size=1 onmousedown='this.size=10' onblur='this.size=1; for(option of this.childNodes){if(option.selected){option.scrollIntoView(); break;}}'>";
if(!$userarray['admin']){
$notadmin = "where ag_ID in (";
foreach($userarray['ag_array'] as $ag){
$notadmin .= "$ag, ";
}
$notadmin = substr($notadmin, 0, -2);
$notadmin .= ")";
}else{
$notadmin = "";
}
$getag = $dbc->query("select * from ag $notadmin order by name;");
foreach($getag as $ag){
$id = $ag['ag_ID'];
$agbez = $ag['name'];
if(in_array($id, $agtoload)){
$selected = "selected";
}else{
$selected = "";
}
$agname .= "<option $selected value='$id'>$agbez</option>";
}
$agname .= "</select>
<input type='hidden' name='y' value='$jahr'>
<input type='hidden' name='m' value='$monat'>
<button type='submit'>ansehen</button>
</form>";
}else{
$getag = $dbc->query("select name from ag where ag_ID = $infoarray[agID];");
$agname = $getag->fetch_array()[0];
}
$datum->modify('+1 month');
$nextdate = $datum->format('\y\=Y\&\m\=m');
$datum->modify('-2 month');
$prevdate = $datum->format('\y\=Y\&\m\=m');
$datum->modify('+1 month'); //zurücksetzen
echo "<div id='headline'>
<a href='index.php?ma=".$_SESSION['infoarray']['maID']."'><button id='home'><< Menü</button></a>
<div id='back'><a href='ag-kalender.php?$prevdate$agidstr'><button><<<</button></a></div>
AG-Kalender für <b>".strftime('%B %Y', $datum->getTimestamp())."</b> für $agname
<div id='forward'><a href='ag-kalender.php?$nextdate$agidstr'><button>>>></button></a></div>
</div>";
echo "<div id='kalender'>
<table>";
echo "<tr>
<th>Mitarbeiter</th>";
for($i = 1; $i <= 31; $i++){
echo "<th>$i</th>";
}
echo "</tr>";
foreach($getagppl as $ma){
$id = $ma['maID'];
echo "<tr>";
echo "<th class='maname'>".$ma['name']."</th>";
for($i = 1; $i <= 31; $i++){
$thisdate = new DateTime("$jahr-$monat-$i");
$thisdatestr = $thisdate->format('Y-m-d');
$wochentag = $thisdate->format('N');
if(!checkdate($monat, $i, $jahr)){ //Nicht vorhandene Tage werden blau
$dark = "dark";
}else{
$dark = "";
}
$azm = $dbc->query("select * from az_data_copy
where maID = '$id' order by azdID desc, datum_ab desc;");
foreach($azm as $az){
$getazt = $dbc->query("select * from az_time where azdID = $az[azdID];");
foreach($getazt as $aztime){
$azt[$aztime['azdID']][$aztime['tag']] = $aztime;
}
}
foreach($azm as $az){ //AZ-Modelle des MA durchlaufen und für dieses Datum geltendes verwenden
$az_ab = new DateTime($az['datum_ab']);
if($az_ab <= $thisdate){
break;
}else{
$az = NULL;
}
}
if(!isset($azt[$az['azdID']][$wochentag]) || feiertag($i, $monat, $jahr)){ //arbeitsfreie Tage werden grau
$disabled = 'disabled';
}else{
$disabled = "";
}
if(in_array($thisdatestr, array_keys($kalender[$id]))){ //Eintrag zu aktuellem Tag vorhanden? //erweiterbar
$data = mb_substr($kalender[$id][$thisdatestr]["zt_bez"], 0,1, "UTF-8");
switch($kalender[$id][$thisdatestr]["status"]){
case "genehmigt":
$farbe = "green";
break;
case "geprüft":
$farbe = "light-green";
break;
case "abgelehnt":
$farbe = "red";
break;
case "beantragt":
$farbe = "yellow";
break;
default:
$farbe = "";
}
}else{
$data = "";
$farbe = "";
}
//eigentliche Zelle wird hier erst geschrieben
echo "<td class='cell $farbe $dark $disabled'><a class='hiddenlink' href='index.php?ma=$id&toyearcal=".$thisdate->format('Y')."'>&nbsp&nbsp$data&nbsp&nbsp</a></td>";
}
echo "</tr>";
}
echo "</table>
<div id='legende'>
<h3>Legende</h3>
<span class='green'>&nbsp</span> ---> genehmigt
<span class='light-green'>&nbsp</span> ---> geprüft
<span class='yellow'>&nbsp</span> ---> beantragt
<span class='red'>&nbsp</span> ---> abgelehnt
<span class='disabled'>&nbsp</span> ---> arbeitsfreier Tag
<span class='dark'>&nbsp</span> ---> Tag existiert nicht
</div>
</div>";
?>
</body>
</html>