@@ -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