rt 4.2.16
[freeside.git] / rt / lib / RT / Ticket.pm
index ff75f45..4151f2b 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # COPYRIGHT:
 #
-# This software is Copyright (c) 1996-2016 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)
@@ -762,13 +762,14 @@ sub DeleteWatcher {
 
 
 
-=head2 SquelchMailTo [EMAIL]
+=head2 SquelchMailTo ADDRESSES
 
-Takes an optional email address to never email about updates to this ticket.
-
-
-Returns an array of the RT::Attribute objects for this ticket's 'SquelchMailTo' attributes.
+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 L<RT::Attribute> objects for this ticket's
+'SquelchMailTo' attributes.
 
 =cut
 
@@ -789,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 }
@@ -1103,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',
@@ -1221,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;