Index: branches/5.1.x/core/kernel/utility/formatters/date_formatter.php =================================================================== diff -u -N -r13086 -r13545 --- branches/5.1.x/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 13086) +++ branches/5.1.x/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 13545) @@ -1,6 +1,6 @@ GetDBField($sub_fields['date']) != '' && $object->GetDBField($sub_fields['time']) == '' ) { + if ($object->GetDBField($sub_fields['date']) != '' && $object->GetDBField($sub_fields['time']) == '') { $empty_time = getArrayValue($options,'empty_time'); - if($empty_time === false) $empty_time = adodb_mktime(0,0,0); + if ($empty_time === false) { + $empty_time = adodb_mktime(0, 0, 0); + } $object->SetDBField($sub_fields['time'], $empty_time); } + elseif ($object->GetDBField($sub_fields['time']) != '' && $object->GetDBField($sub_fields['date']) == '') { + $empty_date = getArrayValue($options,'empty_date'); + if ($empty_date === false) { + $empty_date = adodb_mktime(0, 0, 0, 1, 1, 1970); + } + $object->SetDBField($sub_fields['date'], $empty_date); + } $input_format['date'] = $object->Fields[ $sub_fields['date'] ]['input_format']; $input_format['time'] = $object->Fields[ $sub_fields['time'] ]['input_format']; @@ -307,9 +316,7 @@ $format = $options['input_format']; if ($dt_separator) $format = trim($format, $dt_separator); - $error_field = isset($this->Fields[$field_name]['error_field']) ? $this->Fields[$field_name]['error_field'] : $field_name; - $object->FieldErrors[$error_field]['params'] = Array( $this->HumanFormat($format), adodb_date($format) ); - $object->FieldErrors[$error_field]['value'] = $value; + $error_params = Array( $this->HumanFormat($format), adodb_date($format), 'value' => $value ); $hour = 0; $minute = 0; @@ -335,7 +342,7 @@ $holders_mask = '/' . preg_replace('/[a-zA-Z]{1}/i', '([a-zA-Z]{1})', preg_quote($format, '/')) . '/'; if (!preg_match($holders_mask, $format, $holders)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; } @@ -345,7 +352,7 @@ } if (!preg_match($values_mask, $value, $values)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; } @@ -399,35 +406,35 @@ //echo "day: $day, month: $month, year: $year, hour: $hour, minute: $minute
"; /*if (!($year >= 1970 && $year <= 2037)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; }*/ if (!($month >= 1 && $month <= 12)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; } $months_days = Array ( 1 => 31,2 => 28, 3 => 31, 4 => 30,5 => 31,6 => 30, 7 => 31, 8 => 31,9 => 30,10 => 31,11 => 30,12 => 31); if ($year % 4 == 0) $months_days[2] = 29; if (!($day >=1 && $day <= $months_days[$month])) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; } if (!($hour >=0 && $hour <= 23)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; } if (!($minute >=0 && $minute <= 59)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; } if (!($second >=0 && $second <= 59)) { - $object->SetError($field_name, 'bad_date_format'); + $object->SetError($field_name, 'bad_date_format', null, $error_params); return $value; }