Skip to content

Commit 7adc6ce

Browse files
author
Till Brehm
committed
Added ISDATETIME validator in tform_base.inc.php.
1 parent 4b17d9e commit 7adc6ce

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

interface/lib/classes/tform_base.inc.php

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class tform_base {
9898
var $errorMessage = '';
9999

100100
var $dateformat = "d.m.Y";
101-
var $datetimeformat = 'd.m.Y H:i';
101+
var $datetimeformat = 'd.m.Y H:i'; // is set to the correct value in loadFormDef
102102
var $formDef = array();
103103
var $wordbook;
104104
var $module;
@@ -803,8 +803,16 @@ protected function _encode($record, $tab, $dbencode = true, $api = false) {
803803
}
804804
} else {*/
805805
if($record[$key] != '' && $record[$key] != '0000-00-00 00:00:00') {
806-
$tmp = strtotime($record[$key]);
807-
$new_record[$key] = date($this->datetimeformat, $tmp);
806+
//$tmp = strtotime($record[$key]);
807+
//$new_record[$key] = date($this->datetimeformat, $tmp);
808+
$parsed_date = date_parse_from_format($this->datetimeformat,$record[$key]);
809+
if($parsed_date['error_count'] > 0 || ($parsed_date['year'] == 1899 && $parsed_date['month'] == 12 && $parsed_date['day'] == 31)) {
810+
// There was an error, set the date to 0
811+
$new_record[$key] = '0000-00-00 00:00:00';
812+
} else {
813+
// Date parsed successfully. Convert it to database format
814+
$new_record[$key] = date( 'Y-m-d H:i:s', mktime($parsed_date['hour'], $parsed_date['minute'], $parsed_date['second'], $parsed_date['month'], $parsed_date['day'], $parsed_date['year']) );
815+
}
808816
} else {
809817
$new_record[$key] = '0000-00-00 00:00:00';
810818
}
@@ -1099,6 +1107,25 @@ function validateField($field_name, $field_value, $validators) {
10991107
}
11001108
}
11011109
break;
1110+
1111+
case 'ISDATETIME':
1112+
/* Checks a datetime value against the date format of the current language */
1113+
if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
1114+
if($validator['allowempty'] == 'y' && $field_value == '') {
1115+
//* Do nothing
1116+
} else {
1117+
$parsed_date = date_parse_from_format($this->datetimeformat,$field_value);
1118+
if($parsed_date['error_count'] > 0 || ($parsed_date['year'] == 1899 && $parsed_date['month'] == 12 && $parsed_date['day'] == 31)) {
1119+
$errmsg = $validator['errmsg'];
1120+
if(isset($this->wordbook[$errmsg])) {
1121+
$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
1122+
} else {
1123+
$this->errorMessage .= $errmsg."<br />\r\n";
1124+
}
1125+
}
1126+
}
1127+
break;
1128+
11021129
case 'RANGE':
11031130
//* Checks if the value is within the given range or above / below a value
11041131
//* Range examples: < 10 = ":10", between 2 and 10 = "2:10", above 5 = "5:".

0 commit comments

Comments
 (0)