From 0840ec5a631e647a16034fc50bff2e9ce72448b4 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 12 Mar 2014 17:32:27 +0100 Subject: [PATCH] Removed old code, added missing exceptions Using boolean return values would be better, but I don't want to break the API. --- .../install/files/lib/util/DateUtil.class.php | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/wcfsetup/install/files/lib/util/DateUtil.class.php b/wcfsetup/install/files/lib/util/DateUtil.class.php index ce6acfd2e7..e9613c5c62 100644 --- a/wcfsetup/install/files/lib/util/DateUtil.class.php +++ b/wcfsetup/install/files/lib/util/DateUtil.class.php @@ -358,25 +358,12 @@ final class DateUtil { */ public static function validateDate($date) { if (preg_match('~^(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})~', $date, $matches)) { - return checkdate($matches['month'], $matches['day'], $matches['year']); - } - - return false; - - // matches almost any valid date between year 2000 and 2038 - if (!preg_match('~^(20[0-2][0-9]|203[0-8])\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$~', $date)) { - throw new SystemException("date '".$date."' is invalid, violating ISO-8601 date format."); - } - - // try to convert $date into a UNIX timestamp - $time = @strtotime($date." GMT"); - if ($time === false) { - throw new SystemException("date '".$date."' is invalid"); + if (!checkdate($matches['month'], $matches['day'], $matches['year'])) { + throw new SystemException("Date '".$date."' is invalid"); + } } - - // convert back to ISO-8601, if date was bogus (e.g. 2000-02-31) date() returns a different date than $date - if (gmdate('Y-m-d', $time) != $date) { - throw new SystemException("date '".$date."' is invalid"); + else { + throw new SystemException("Date '".$date."' is not a valid ISO-8601 date"); } } -- 2.20.1