reverting to vendor branch rt 3.0.4, hopefully
[freeside.git] / rt / lib / RT / Action / Notify.pm
index 6dca4fd..1e4e4c0 100755 (executable)
@@ -1,7 +1,31 @@
-#$Header: /home/cvs/cvsroot/freeside/rt/lib/RT/Action/Notify.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $
-
+# BEGIN LICENSE BLOCK
+# 
+# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
+# 
+# (Except where explictly superceded by other copyright notices)
+# 
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+# 
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+# 
+# Unless otherwise specified, all modifications, corrections or
+# extensions to this work which alter its source code become the
+# property of Best Practical Solutions, LLC when submitted for
+# inclusion in the work.
+# 
+# 
+# END LICENSE BLOCK
 package RT::Action::Notify;
 require RT::Action::SendEmail;
+
+use strict;
+use vars qw/@ISA/;
 @ISA = qw(RT::Action::SendEmail);
 
 # {{{ sub SetRecipients
@@ -9,14 +33,14 @@ require RT::Action::SendEmail;
 =head2 SetRecipients
 
 Sets the recipients of this meesage to Owner, Requestor, AdminCc, Cc or All. 
-Explicitly B<does not> notify the creator of the transaction.
+Explicitly B<does not> notify the creator of the transaction by default
 
 =cut
 
 sub SetRecipients {
     my $self = shift;
 
-    $arg = $self->Argument;
+    my $arg = $self->Argument;
 
     $arg =~ s/\bAll\b/Owner,Requestor,AdminCc,Cc/;
 
@@ -24,14 +48,14 @@ sub SetRecipients {
 
 
     if ($arg =~ /\bOtherRecipients\b/) {
-        if ($self->TransactionObj->Message->First) {
-            push (@Cc, $self->TransactionObj->Message->First->GetHeader('RT-Send-Cc'));
-            push (@Bcc, $self->TransactionObj->Message->First->GetHeader('RT-Send-Bcc'));
+        if ($self->TransactionObj->Attachments->First) {
+            push (@Cc, $self->TransactionObj->Attachments->First->GetHeader('RT-Send-Cc'));
+            push (@Bcc, $self->TransactionObj->Attachments->First->GetHeader('RT-Send-Bcc'));
         }
     }
 
     if ( $arg =~ /\bRequestor\b/ ) {
-        push ( @To, @{ $self->TicketObj->Requestors->Emails } );
+        push ( @To, $self->TicketObj->Requestors->MemberEmailAddresses  );
     }
 
     
@@ -40,12 +64,12 @@ sub SetRecipients {
 
         #If we have a To, make the Ccs, Ccs, otherwise, promote them to To
         if (@To) {
-            push ( @Cc, @{ $self->TicketObj->Cc->Emails } );
-            push ( @Cc, @{ $self->TicketObj->QueueObj->Cc->Emails } );
+            push ( @Cc, $self->TicketObj->Cc->MemberEmailAddresses );
+            push ( @Cc, $self->TicketObj->QueueObj->Cc->MemberEmailAddresses  );
         }
         else {
-            push ( @Cc, @{ $self->TicketObj->Cc->Emails } );
-            push ( @To, @{ $self->TicketObj->QueueObj->Cc->Emails } );
+            push ( @Cc, $self->TicketObj->Cc->MemberEmailAddresses  );
+            push ( @To, $self->TicketObj->QueueObj->Cc->MemberEmailAddresses  );
         }
     }
 
@@ -65,15 +89,16 @@ sub SetRecipients {
     }
 
     if ( $arg =~ /\bAdminCc\b/ ) {
-        push ( @Bcc, @{ $self->TicketObj->AdminCc->Emails } );
-        push ( @Bcc, @{ $self->TicketObj->QueueObj->AdminCc->Emails } );
+        push ( @Bcc, $self->TicketObj->AdminCc->MemberEmailAddresses  );
+        push ( @Bcc, $self->TicketObj->QueueObj->AdminCc->MemberEmailAddresses  );
     }
 
     if ($RT::UseFriendlyToLine) {
         unless (@To) {
-            push ( @PseudoTo,
-                "\"$arg of $RT::rtname Ticket #"
-                  . $self->TicketObj->id . "\":;" );
+            push (
+               @PseudoTo,
+               sprintf($RT::FriendlyToLineFormat, $arg, $self->TicketObj->id),
+           );
         }
     }
 
@@ -81,14 +106,17 @@ sub SetRecipients {
 
     #Strip the sender out of the To, Cc and AdminCc and set the 
     # recipients fields used to build the message by the superclass.
-
-    $RT::Logger->debug("$self: To is ".join(",",@To));
-    $RT::Logger->debug("$self: Cc is ".join(",",@Cc));
-    $RT::Logger->debug("$self: Bcc is ".join(",",@Bcc));
-
-    @{ $self->{'To'} }  = grep ( !/^$creator$/, @To );
-    @{ $self->{'Cc'} }  = grep ( !/^$creator$/, @Cc );
-    @{ $self->{'Bcc'} } = grep ( !/^$creator$/, @Bcc );
+    # unless a flag is set 
+    if ($RT::NotifyActor) {
+        @{ $self->{'To'} }  = @To;
+        @{ $self->{'Cc'} }  = @Cc;
+        @{ $self->{'Bcc'} } = @Bcc;
+    }
+    else {
+        @{ $self->{'To'} }  = grep ( !/^$creator$/, @To );
+        @{ $self->{'Cc'} }  = grep ( !/^$creator$/, @Cc );
+        @{ $self->{'Bcc'} } = grep ( !/^$creator$/, @Bcc );
+    }
     @{ $self->{'PseudoTo'} } = @PseudoTo;
     return (1);
 
@@ -96,4 +124,9 @@ sub SetRecipients {
 
 # }}}
 
+eval "require RT::Action::Notify_Vendor";
+die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Vendor.pm});
+eval "require RT::Action::Notify_Local";
+die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Local.pm});
+
 1;