}
$values{'estimated_time'} = format_time_decimal($values{'estimated_time'});
- $values{'deadline'} = time2str("%Y-%m-%d", str2time($values{'deadline'}));
+ if ($values{'deadline'}) {
+ $values{'deadline'} = time2str("%Y-%m-%d", str2time($values{'deadline'}));
+ }
my @dependslist;
SendSQL("SELECT dependson FROM dependencies WHERE
WHERE attach_id = $attachid");
$diffpart->{'isprivate'} = FetchOneColumn();
}
- if( $fieldname eq 'deadline' ) {
- $old = time2str("%Y-%m-%d", str2time($old));
- $new = time2str("%Y-%m-%d", str2time($new));
- }
$difftext = FormatTriple($what, $old, $new);
$diffpart->{'header'} = $diffheader;
$diffpart->{'fieldname'} = $fieldname;
sub ValidateDate {
my ($date, $format) = @_;
+ my $date2;
- my $ts = str2time($date);
- my $date2 = time2str("%Y-%m-%d", $ts);
+ # $ts is undefined if the parser fails.
+ my $ts = str2time($date);
+ if ($ts) {
+ $date2 = time2str("%Y-%m-%d", $ts);
- $date =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/;
- $date2 =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/;
-
- if ($date ne $date2) {
+ $date =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/;
+ $date2 =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/;
+ }
+ if (!$ts || $date ne $date2) {
ThrowUserError('illegal_date', {date => $date, format => $format});
}
}
$changes = [];
}
- if ($fieldname eq 'deadline') {
- $removed = time2str("%Y-%m-%d", str2time($removed));
- $added = time2str("%Y-%m-%d", str2time($added));
- }
-
$operation->{'who'} = $who;
$operation->{'when'} = $when;
{
$check_dep_bugs = 1;
}
-
+
+ # Convert deadlines to the YYYY-MM-DD format. We use an
+ # intermediate $xxxtime to prevent errors in the web
+ # server log file when str2time($xxx) is undefined.
+ if ($col eq 'deadline') {
+ my $oldtime = str2time($old);
+ $old = ($oldtime) ? time2str("%Y-%m-%d", $oldtime) : '';
+ my $newtime = str2time($new);
+ $new = ($newtime) ? time2str("%Y-%m-%d", $newtime) : '';
+ }
+
LogActivityEntry($id,$col,$old,$new,$whoid,$timestamp);
$bug_changed = 1;
}