From 375d5af97441f7a8946cb06b3ab686c383166481 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Wed, 27 Sep 2023 16:01:44 -0400 Subject: [PATCH] Fix issue with roundToNearest15 Function would break php if the time worked was empty --- functions.php | 18 ++++++++++-------- ticket.php | 6 +++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/functions.php b/functions.php index 9a375f70..11276006 100644 --- a/functions.php +++ b/functions.php @@ -746,8 +746,13 @@ function shortenClient($client) { } function roundToNearest15($time) { - // Extract hours, minutes, and seconds from the time string - list($hours, $minutes, $seconds) = explode(':', $time); + // Validate the input time format + if (!preg_match('/^(\d{2}):(\d{2}):(\d{2})$/', $time, $matches)) { + return false; // or throw an exception + } + + // Extract hours, minutes, and seconds from the matched time string + list(, $hours, $minutes, $seconds) = $matches; // Convert everything to seconds for easier calculation $totalSeconds = ($hours * 3600) + ($minutes * 60) + $seconds; @@ -755,18 +760,15 @@ function roundToNearest15($time) { // Calculate the remainder when divided by 900 seconds (15 minutes) $remainder = $totalSeconds % 900; - // If the total seconds is less than 15 minutes, round up to 15 minutes - if ($totalSeconds < 900) { - $totalSeconds = 900; - } else if ($remainder > 450) { // If remainder is more than 7.5 minutes (450 seconds), round up + if ($remainder > 450) { // If remainder is more than 7.5 minutes (450 seconds), round up $totalSeconds += (900 - $remainder); } else { // Else round down $totalSeconds -= $remainder; } - // Convert total seconds to the decimal format + // Convert total seconds to decimal hours $decimalHours = $totalSeconds / 3600; - // Return the formatted string + // Return the decimal hours return number_format($decimalHours, 2); } \ No newline at end of file diff --git a/ticket.php b/ticket.php index 41434e3e..8228e9fd 100644 --- a/ticket.php +++ b/ticket.php @@ -525,8 +525,8 @@ if (isset($_GET['ticket_id'])) { $row = mysqli_fetch_assoc(mysqli_query($mysqli, $sql_prev_ticket)); $prev_ticket_id = intval($row['ticket_id']); - $prev_ticket_subject = htmlentities($row['ticket_subject']); - $prev_ticket_status = htmlentities($row['ticket_status']); + $prev_ticket_subject = nullable_htmlentities($row['ticket_subject']); + $prev_ticket_status = nullable_htmlentities($row['ticket_status']); ?>
@@ -564,7 +564,7 @@ if (isset($_GET['ticket_id'])) { // Get Watchers $sql_ticket_watchers = mysqli_query($mysqli, "SELECT * FROM ticket_watchers WHERE watcher_ticket_id = $ticket_id ORDER BY watcher_email DESC"); while ($ticket_watcher_row = mysqli_fetch_array($sql_ticket_watchers)) { - $ticket_watcher_email = $ticket_watcher_row['watcher_email']; + $ticket_watcher_email = nullable_htmlentities($ticket_watcher_row['watcher_email']); ?>