#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
# <sales@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
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.
$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 );
}
# 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 );
$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
TimeEstimated => $args{'TimeEstimated'},
TimeLeft => $args{'TimeLeft'},
Type => $args{'Type'},
+ Created => $Now->ISO,
Starts => $Starts->ISO,
Started => $Started->ISO,
Resolved => $Resolved->ISO,
-=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<RT::Attribute> objects for this ticket's
+'SquelchMailTo' attributes.
=cut
sub _SquelchMailTo {
my $self = shift;
- if (@_) {
+ while (@_) {
my $attr = shift;
$self->AddAttribute( Name => 'SquelchMailTo', Content => $attr )
unless grep { $_->Content eq $attr }
$attachments->LimitByTicket( $self->id );
$attachments->Columns( qw( id Headers TransactionId));
+ $attachments->Limit(
+ FIELD => 'Parent',
+ VALUE => 0,
+ );
+
$attachments->Limit(
ALIAS => $attachments->TransactionAlias,
FIELD => 'Type',
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;