From 60a9c15454453251b21f83377b4c41a5170aa718 Mon Sep 17 00:00:00 2001 From: jwacalex Date: Sat, 22 Dec 2018 02:07:17 +0100 Subject: first draft for #536 --- includes/pages/admin_shifts.php | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/includes/pages/admin_shifts.php b/includes/pages/admin_shifts.php index d697a496..817e9b9a 100644 --- a/includes/pages/admin_shifts.php +++ b/includes/pages/admin_shifts.php @@ -114,7 +114,7 @@ function admin_shifts() if ( $request->has('change_hours') && preg_match( - '/^(\d{2}(,|$))/', + '/^((\d{2}(:\d{2})?(,|$))*)/', trim(str_replace(' ', '', $request->input('change_hours'))) ) ) { @@ -216,10 +216,18 @@ function admin_shifts() $day = parse_date('Y-m-d H:i', date('Y-m-d', $start) . ' 00:00'); $change_index = 0; // Ersten/nächsten passenden Schichtwechsel suchen - foreach ($change_hours as $i => $change_hour) { - if ($start < $day + $change_hour * 60 * 60) { + foreach ($change_hours as $i => $change_time) { + if(!preg_match('/\d{2}:\d{2}/',$change_time)) { + $change_time = $change_time.":00"; + } + + $change_time = explode(':',$change_time); + $change_hour = $change_time[0]; + $change_minute = $change_time[1]; + + if ($start < $day + $change_hour * 60 * 60 + $change_minute * 60) { $change_index = $i; - } elseif ($start == $day + $change_hour * 60 * 60) { + } elseif ($start == $day + $change_hour * 60 * 60 + $change_minute * 60) { // Start trifft Schichtwechsel $change_index = ($i + count($change_hours) - 1) % count($change_hours); break; @@ -231,7 +239,19 @@ function admin_shifts() $shift_start = $start; do { $day = parse_date('Y-m-d H:i', date('Y-m-d', $shift_start) . ' 00:00'); - $shift_end = $day + $change_hours[$change_index] * 60 * 60; + + $change_time=$change_hours[$change_index]; + if(!preg_match('/\d{2}:\d{2}/',$change_time)) { + $change_time = $change_time.":00"; + } + + $change_time = explode(':',$change_time); + $change_hour = $change_time[0]; + $change_minute = $change_time[1]; + + + $shift_end = $day + $change_hour * 60 * 60 + $change_minute * 60; + if ($shift_end > $end) { $shift_end = $end; -- cgit v1.2.3-54-g00ecf