From 3ec0b60f03b4627ee6844ce2bf1f61e17d5bd98e Mon Sep 17 00:00:00 2001 From: Uma <uma.s@vtiger.com> Date: Mon, 16 Mar 2020 21:10:39 +0530 Subject: [PATCH] Fixes #1253 German and UK date formats cannot be saved --- data/CRMEntity.php | 2 +- include/fields/DateTimeField.php | 6 ++++-- include/utils/utils.php | 37 +++----------------------------- 3 files changed, 8 insertions(+), 37 deletions(-) diff --git a/data/CRMEntity.php b/data/CRMEntity.php index b0c7008f4..041febdb4 100644 --- a/data/CRMEntity.php +++ b/data/CRMEntity.php @@ -945,7 +945,7 @@ class CRMEntity { $em->triggerEvent("vtiger.entity.beforesave.modifiable", $entityData); $em->triggerEvent("vtiger.entity.beforesave", $entityData); $em->triggerEvent("vtiger.entity.beforesave.final", $entityData); - } + } //Event triggering code ends //GS Save entity being called with the modulename as parameter diff --git a/include/fields/DateTimeField.php b/include/fields/DateTimeField.php index 56cdfb0e7..4425c3a36 100644 --- a/include/fields/DateTimeField.php +++ b/include/fields/DateTimeField.php @@ -83,8 +83,10 @@ class DateTimeField { if (empty($user)) { $user = $current_user; } - - $format = $current_user->date_format; + if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}$/", $date) == 1) { + return $date; + } + $format = $user->date_format; if (empty($format)) { if (false !== strpos($date, '.')) { $format = 'dd.mm.yyyy'; diff --git a/include/utils/utils.php b/include/utils/utils.php index 7dd268dcd..fd46ecd56 100755 --- a/include/utils/utils.php +++ b/include/utils/utils.php @@ -1786,40 +1786,9 @@ function isRecordExists($recordId) { function getValidDBInsertDateValue($value) { global $log; $log->debug("Entering getValidDBInsertDateValue(".$value.") method ..."); - $value = trim($value); - $delim = array('/','.'); - foreach ($delim as $delimiter){ - $x = strpos($value, $delimiter); - if($x === false) continue; - else{ - if (false !== strpos($value, '-')) { - $value = str_replace($delimiter, '-', $value); - } - break; - } - } - if (false !== strpos($value, '.')) { - list($y, $m, $d) = explode('.', $value); - } else if (false !== strpos($value, '/')) { - list($y, $m, $d) = explode('/', $value); - } else { - list($y, $m, $d) = explode('-', $value); - } - if(strlen($y) == 1) $y = '0'.$y; - if(strlen($m) == 1) $m = '0'.$m; - if(strlen($d) == 1) $d = '0'.$d; - $value = implode('-', array($y,$m,$d)); - - if(strlen($y)<4){ - $insert_date = DateTimeField::convertToDBFormat($value); - } else { - $insert_date = $value; - } - - if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}$/", $insert_date) == 0) { - return ''; - } - + + $insert_date = DateTimeField::convertToDBFormat($value); + $log->debug("Exiting getValidDBInsertDateValue method ..."); return $insert_date; } -- GitLab