From 8470e90f56dd94e95481820bb32cba00564de994 Mon Sep 17 00:00:00 2001 From: Clemens Creutzburg Date: Sun, 29 Mar 2026 22:27:22 +0200 Subject: [PATCH 1/2] ftp Einstellungen --- .gitattributes | 5 +++++ .gitignore | 6 ++++++ .vscode/ftp-sync.example.json | 27 +++++++++++++++++++++++++++ .vscode/sftp.example.json | 13 +++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 .gitattributes create mode 100644 .vscode/ftp-sync.example.json create mode 100644 .vscode/sftp.example.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8577790 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +*.woff binary +*.woff2 binary +*.ttf binary +*.eot binary +*.otf binary diff --git a/.gitignore b/.gitignore index d1ae980..15efdab 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,9 @@ /app/Config/database.php /vendors/* +# Local editor/deploy configuration +/.vscode/ftp-sync.json +/.vscode/sftp.json + +.vscode/ftp-sync.json +.vscode/sftp.json diff --git a/.vscode/ftp-sync.example.json b/.vscode/ftp-sync.example.json new file mode 100644 index 0000000..396b90f --- /dev/null +++ b/.vscode/ftp-sync.example.json @@ -0,0 +1,27 @@ +{ + "remotePath": "./", + "host": "your-host", + "username": "your-username", + "password": "your-password", + "port": 21, + "secure": true, + "protocol": "ftp", + "uploadOnSave": false, + "passive": false, + "debug": false, + "privateKeyPath": null, + "passphrase": null, + "agent": null, + "allow": [], + "ignore": [ + "\\.vscode", + "\\.git", + "\\.DS_Store" + ], + "generatedFiles": { + "extensionsToInclude": [ + "" + ], + "path": "" + } +} diff --git a/.vscode/sftp.example.json b/.vscode/sftp.example.json new file mode 100644 index 0000000..829b5eb --- /dev/null +++ b/.vscode/sftp.example.json @@ -0,0 +1,13 @@ +{ + "name": "Project Deployment", + "host": "your-host", + "protocol": "ftp", + "port": 21, + "username": "your-username", + "password": "your-password", + "remotePath": "/", + "secure": true, + "uploadOnSave": false, + "useTempFile": false, + "openSsh": false +} From e22dbc980cd14c0a95878f7bc7838104679ca7a0 Mon Sep 17 00:00:00 2001 From: Clemens Creutzburg Date: Mon, 30 Mar 2026 08:44:45 +0200 Subject: [PATCH 2/2] Anpassung Ladezeit Impfen + Urlaubsplaner --- admin/anfragen.php | 99 ++++-- admin/impfworkflow.php | 224 ++++++------ inc/company_holiday_sync.inc.php | 373 ++++++++++++++++++++ inc/functions.impfen.inc.php | 94 +++++ zeiterfassung/api/vacations.php | 388 +++++++++++---------- zeiterfassung/company_holidays.php | 249 +++++++++----- zeiterfassung/deleteCompanyHoliday.php | 4 +- zeiterfassung/deleteVacation.php | 72 ++-- zeiterfassung/inc/functions.inc.php | 11 +- zeiterfassung/urlaubsantrag.php | 419 +++++++++++++---------- zeiterfassung/vacations_calendar.php | 21 +- zeiterfassung/vacations_calendar_all.php | 122 +++---- 12 files changed, 1368 insertions(+), 708 deletions(-) create mode 100644 inc/company_holiday_sync.inc.php diff --git a/admin/anfragen.php b/admin/anfragen.php index 238d5d5..ac8f9f7 100644 --- a/admin/anfragen.php +++ b/admin/anfragen.php @@ -4,6 +4,7 @@ session_start(); // WICHTIG: Pfade aus /admin heraus korrekt auflösen require_once __DIR__ . "/../inc/config.inc.php"; require_once __DIR__ . "/../inc/functions.inc.php"; +require_once __DIR__ . "/../inc/company_holiday_sync.inc.php"; // Login prüfen $user = check_admin_user(); @@ -624,12 +625,12 @@ if(!check_worker()){ echo "Start: Ende:
- Vertretung: "; + Vertretung: "; - echo "
Vertretung Telefon: -
Vertretung Adresse: "; + echo "
Vertretung Telefon: +
Vertretung Adresse: "; - echo "
Vertretung Webseite: "; + echo "
Vertretung Webseite: "; echo "
"; } @@ -656,40 +657,64 @@ if(!check_worker()){ }else if (($_POST["aktion"] ?? '') == "5") { // Termine in DB speichern. $i =0; - foreach ($_POST['Starttime'] as $Starttime) { - //echo $datum . "
"; - if($_POST["Starttime"][$i] != "0000-00-00"){ - //echo $_POST["urlaubid"][$i] . "
"; - $stmt = $pdo->prepare(" - INSERT INTO urlaub - (urlaubid, vertretung, start, ende, vertretertelefon, vertreteradresse, vertreterurl) - VALUES - (:urlaubid, :vertretung, :start, :ende, :telefon, :adresse, :url) - ON DUPLICATE KEY UPDATE - vertretung = VALUES(vertretung), - start = VALUES(start), - ende = VALUES(ende), - vertretertelefon = VALUES(vertretertelefon), - vertreteradresse = VALUES(vertreteradresse), - vertreterurl = VALUES(vertreterurl) - "); + $pdo->beginTransaction(); + try { + foreach ($_POST['Starttime'] as $Starttime) { + if($_POST["Starttime"][$i] != "0000-00-00"){ + $vertretung = trim((string)($_POST['vertretung'][$i] ?? '')); + $vertretertelefon = trim((string)($_POST['vertretertelefon'][$i] ?? '')); + $vertreteradresse = trim((string)($_POST['vertreteradresse'][$i] ?? '')); + $vertreterurl = trim((string)($_POST['vertreterurl'][$i] ?? '')); - $ok = $stmt->execute([ - ':urlaubid' => (int)$_POST['urlaubid'][$i], // 0 = INSERT, >0 = UPDATE - ':vertretung' => $_POST['vertretung'][$i], - ':start' => $_POST['Starttime'][$i], - ':ende' => $_POST['Endetime'][$i], - ':telefon' => $_POST['vertretertelefon'][$i], - ':adresse' => $_POST['vertreteradresse'][$i], - ':url' => $_POST['vertreterurl'][$i], - ]); + if ($vertretung === '' || $vertretertelefon === '' || $vertreteradresse === '' || $vertreterurl === '') { + throw new RuntimeException("Bitte alle Vertreterinformationen fuer jeden Urlaubseintrag vollstaendig ausfuellen."); + } - if (!$ok) { - throw new RuntimeException("Fehler beim Eintragen in der Datenbank."); + $stmt = $pdo->prepare(" + INSERT INTO urlaub + (urlaubid, vertretung, start, ende, vertretertelefon, vertreteradresse, vertreterurl) + VALUES + (:urlaubid, :vertretung, :start, :ende, :telefon, :adresse, :url) + ON DUPLICATE KEY UPDATE + vertretung = VALUES(vertretung), + start = VALUES(start), + ende = VALUES(ende), + vertretertelefon = VALUES(vertretertelefon), + vertreteradresse = VALUES(vertreteradresse), + vertreterurl = VALUES(vertreterurl) + "); + + $ok = $stmt->execute([ + ':urlaubid' => (int)$_POST['urlaubid'][$i], // 0 = INSERT, >0 = UPDATE + ':vertretung' => $vertretung, + ':start' => $_POST['Starttime'][$i], + ':ende' => $_POST['Endetime'][$i], + ':telefon' => $vertretertelefon, + ':adresse' => $vertreteradresse, + ':url' => $vertreterurl, + ]); + + if (!$ok) { + throw new RuntimeException("Fehler beim Eintragen in der Datenbank."); + } + + $urlaubId = (int)$_POST['urlaubid'][$i]; + if ($urlaubId <= 0) { + $urlaubId = (int)$pdo->lastInsertId(); + } + if ($urlaubId > 0) { + vacationSyncCompanyHolidayFromUrlaub($pdo, $urlaubId, $internUserId); + } } + $i++; } - $i++; - } + $pdo->commit(); + } catch (Throwable $e) { + if ($pdo->inTransaction()) { + $pdo->rollBack(); + } + throw $e; + } echo "Einträge wurden in der Datenbank gespeichert!

"; }else if (($_POST["aktion"] ?? '') == "6") { @@ -2023,10 +2048,10 @@ if(!check_worker()){ - - - + + +
+

Team Urlaubskalender

+
+
+
+ genehmigt + beantragt + Betriebsurlaub +
+
+ +
+ + + + + +