X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FTicket.pm;h=4151f2b6a2852eb87f7d40289b1deaa5db287c07;hp=e7478ada42e889fc5659db240c786ce8bfdb8bf2;hb=44dd00a3ff974a17999e86e64488e996edc71e3c;hpb=9aee669886202be7035e6c6049fc71bc99dd3013 diff --git a/rt/lib/RT/Ticket.pm b/rt/lib/RT/Ticket.pm index e7478ada4..4151f2b6a 100755 --- a/rt/lib/RT/Ticket.pm +++ b/rt/lib/RT/Ticket.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -316,6 +316,10 @@ sub Create { unless defined $args{'Priority'}; # Dates + + my $Now = RT::Date->new( $self->CurrentUser ); + $Now->SetToNow(); + #TODO we should see what sort of due date we're getting, rather + # than assuming it's in ISO format. @@ -325,7 +329,7 @@ sub Create { $Due->Set( Format => 'ISO', Value => $args{'Due'} ); } elsif ( my $due_in = $QueueObj->DefaultDueIn ) { - $Due->SetToNow; + $Due->Set( Format => 'ISO', Value => $Now->ISO ); $Due->AddDays( $due_in ); } @@ -346,7 +350,7 @@ sub Create { # If the status is not an initial status, set the started date elsif ( !$cycle->IsInitial($args{'Status'}) ) { - $Started->SetToNow; + $Started->Set( Format => 'ISO', Value => $Now->ISO ); } my $Resolved = RT::Date->new( $self->CurrentUser ); @@ -360,7 +364,7 @@ sub Create { $RT::Logger->debug( "Got a ". $args{'Status'} ."(inactive) ticket with undefined resolved date. Setting to now." ); - $Resolved->SetToNow; + $Resolved->Set( Format => 'ISO', Value => $Now->ISO ); } # Dealing with time fields @@ -390,6 +394,7 @@ sub Create { TimeEstimated => $args{'TimeEstimated'}, TimeLeft => $args{'TimeLeft'}, Type => $args{'Type'}, + Created => $Now->ISO, Starts => $Starts->ISO, Started => $Started->ISO, Resolved => $Resolved->ISO, @@ -757,13 +762,14 @@ sub DeleteWatcher { -=head2 SquelchMailTo [EMAIL] - -Takes an optional email address to never email about updates to this ticket. +=head2 SquelchMailTo ADDRESSES +Takes a list of email addresses to never email about updates to this ticket. +Subsequent calls to this method add, rather than replace, the list of +squelched addresses. -Returns an array of the RT::Attribute objects for this ticket's 'SquelchMailTo' attributes. - +Returns an array of the L objects for this ticket's +'SquelchMailTo' attributes. =cut @@ -784,7 +790,7 @@ sub SquelchMailTo { sub _SquelchMailTo { my $self = shift; - if (@_) { + while (@_) { my $attr = shift; $self->AddAttribute( Name => 'SquelchMailTo', Content => $attr ) unless grep { $_->Content eq $attr } @@ -1098,6 +1104,11 @@ sub TransactionAddresses { $attachments->Columns( qw( id Headers TransactionId)); $attachments->Limit( + FIELD => 'Parent', + VALUE => 0, + ); + + $attachments->Limit( ALIAS => $attachments->TransactionAlias, FIELD => 'Type', OPERATOR => 'IN', @@ -1216,6 +1227,23 @@ sub QueueObj { return ($self->{_queue_obj}); } +sub Subject { + my $self = shift; + + my $subject = $self->_Value( 'Subject' ); + return $subject if defined $subject; + + if ( RT->Config->Get( 'DatabaseType' ) eq 'Oracle' && $self->CurrentUserHasRight( 'ShowTicket' ) ) { + + # Oracle treats empty strings as NULL, so it returns undef for empty subjects. + # Since '' is the default Subject value, returning '' is more correct. + return ''; + } + else { + return undef; + } +} + sub SetSubject { my $self = shift; my $value = shift;