From 46511c46c9918d9441019f53b62b1de92a7dac20 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Thu, 21 Nov 2013 10:52:19 -0600 Subject: [PATCH] forms: Don't assume client date time is parseable --- include/class.forms.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/include/class.forms.php b/include/class.forms.php index 0063c1d38..4dc69b993 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -1019,14 +1019,15 @@ class DatetimePickerWidget extends Widget { $config = $this->field->getConfiguration(); if ($datetime = parent::getValue()) { $datetime = (is_int($datetime) ? $datetime : - (int)DateTime::createFromFormat($cfg->getDateFormat() . ' G:i', - $datetime . ' 00:00') - ->format('U')); - if (isset($data[$this->name . ':time'])) { + (($dt = DateTime::createFromFormat($cfg->getDateFormat() . ' G:i', + $datetime . ' 00:00')) + ? (int) $dt->format('U') : false) + ); + if ($datetime && isset($data[$this->name . ':time'])) { list($hr, $min) = explode(':', $data[$this->name . ':time']); $datetime += $hr * 3600 + $min * 60; } - if ($config['gmt']) + if ($datetime && $config['gmt']) $datetime -= (int) (3600 * $_SESSION['TZ_OFFSET'] + ($_SESSION['TZ_DST'] ? date('I',$datetime) : 0)); } -- GitLab