Index: trunk/core/kernel/utility/formatters/date_formatter.php =================================================================== diff -u -N -r8567 -r8842 --- trunk/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 8567) +++ trunk/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 8842) @@ -257,7 +257,14 @@ return $res; } -//function Parse($value, $options, &$errors) + /** + * Converts formatted date+time to timestamp and validates format + * + * @param mixed $value + * @param string $field_name + * @param kDBItem $object + * @return string + */ function Parse($value, $field_name, &$object) { $options = $object->GetFieldOptions($field_name); @@ -268,10 +275,11 @@ //return strtotime($value); $format = $options['input_format']; - if($dt_separator) $format = trim($format, $dt_separator); + if ($dt_separator) $format = trim($format, $dt_separator); - $object->FieldErrors[$field_name]['params'] = Array( $this->HumanFormat($format), adodb_date($format) ); - $object->FieldErrors[$field_name]['value'] = $value; + $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; $hour = 0; $minute = 0; @@ -297,7 +305,7 @@ $holders_mask = eregi_replace('[a-zA-Z]{1}', '([a-zA-Z]{1})', $format); if (!ereg($holders_mask, $format, $holders)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; } @@ -308,7 +316,7 @@ // echo " values_mask : $values_mask
"; if (!preg_match($values_mask, $value, $values)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; } @@ -362,35 +370,35 @@ //echo "day: $day, month: $month, year: $year, hour: $hour, minute: $minute
"; /*if (!($year >= 1970 && $year <= 2037)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; }*/ if (!($month >= 1 && $month <= 12)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); 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->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; } if (!($hour >=0 && $hour <= 23)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; } if (!($minute >=0 && $minute <= 59)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; } if (!($second >=0 && $second <= 59)) { - $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; + $object->SetError($field_name, 'bad_date_format'); return $value; }