X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FAction%2FNotify.pm;h=1e4e4c07354488989920f0d56e2c6e260b67c7e8;hb=fb4ab1073f0d15d660c6cdc4e07afebf68ef3924;hp=3f58bf52f64a1f6593fdc1cc6c403b1dddb81810;hpb=75162bb14b3e38d66617077843f4dfdcaf09d5c4;p=freeside.git diff --git a/rt/lib/RT/Action/Notify.pm b/rt/lib/RT/Action/Notify.pm index 3f58bf52f..1e4e4c073 100755 --- a/rt/lib/RT/Action/Notify.pm +++ b/rt/lib/RT/Action/Notify.pm @@ -1,73 +1,34 @@ -# BEGIN BPS TAGGED BLOCK {{{ -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC -# -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: -# +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2003 Jesse Vincent +# +# (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. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - -# +# +# 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 warnings; +use vars qw/@ISA/; +@ISA = qw(RT::Action::SendEmail); -use base qw(RT::Action::SendEmail); - -use Email::Address; - -=head2 Prepare - -Set up the relevant recipients, then call our parent. - -=cut - - -sub Prepare { - my $self = shift; - $self->SetRecipients(); - $self->SUPER::Prepare(); -} +# {{{ sub SetRecipients =head2 SetRecipients @@ -79,89 +40,93 @@ Explicitly B notify the creator of the transaction by default sub SetRecipients { my $self = shift; - my $ticket = $self->TicketObj; - my $arg = $self->Argument; + $arg =~ s/\bAll\b/Owner,Requestor,AdminCc,Cc/; my ( @To, @PseudoTo, @Cc, @Bcc ); - if ( $arg =~ /\bOtherRecipients\b/ ) { - if ( my $attachment = $self->TransactionObj->Attachments->First ) { - push @Cc, map { $_->address } Email::Address->parse( - $attachment->GetHeader('RT-Send-Cc') - ); - push @Bcc, map { $_->address } Email::Address->parse( - $attachment->GetHeader('RT-Send-Bcc') - ); + if ($arg =~ /\bOtherRecipients\b/) { + 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, $ticket->Requestors->MemberEmailAddresses; + push ( @To, $self->TicketObj->Requestors->MemberEmailAddresses ); } + + if ( $arg =~ /\bCc\b/ ) { #If we have a To, make the Ccs, Ccs, otherwise, promote them to To if (@To) { - push ( @Cc, $ticket->Cc->MemberEmailAddresses ); - push ( @Cc, $ticket->QueueObj->Cc->MemberEmailAddresses ); + push ( @Cc, $self->TicketObj->Cc->MemberEmailAddresses ); + push ( @Cc, $self->TicketObj->QueueObj->Cc->MemberEmailAddresses ); } else { - push ( @Cc, $ticket->Cc->MemberEmailAddresses ); - push ( @To, $ticket->QueueObj->Cc->MemberEmailAddresses ); + push ( @Cc, $self->TicketObj->Cc->MemberEmailAddresses ); + push ( @To, $self->TicketObj->QueueObj->Cc->MemberEmailAddresses ); } } - if ( $arg =~ /\bOwner\b/ && $ticket->OwnerObj->id != $RT::Nobody->id ) { - # If we're not sending to Ccs or requestors, + if ( ( $arg =~ /\bOwner\b/ ) + && ( $self->TicketObj->OwnerObj->id != $RT::Nobody->id ) ) + { + + # If we're not sending to Ccs or requestors, # then the Owner can be the To. if (@To) { - push ( @Bcc, $ticket->OwnerObj->EmailAddress ); + push ( @Bcc, $self->TicketObj->OwnerObj->EmailAddress ); } else { - push ( @To, $ticket->OwnerObj->EmailAddress ); + push ( @To, $self->TicketObj->OwnerObj->EmailAddress ); } } if ( $arg =~ /\bAdminCc\b/ ) { - push ( @Bcc, $ticket->AdminCc->MemberEmailAddresses ); - push ( @Bcc, $ticket->QueueObj->AdminCc->MemberEmailAddresses ); + push ( @Bcc, $self->TicketObj->AdminCc->MemberEmailAddresses ); + push ( @Bcc, $self->TicketObj->QueueObj->AdminCc->MemberEmailAddresses ); } - if ( RT->Config->Get('UseFriendlyToLine') ) { + if ($RT::UseFriendlyToLine) { unless (@To) { - push @PseudoTo, - sprintf RT->Config->Get('FriendlyToLineFormat'), $arg, $ticket->id; + push ( + @PseudoTo, + sprintf($RT::FriendlyToLineFormat, $arg, $self->TicketObj->id), + ); } } - my $creatorObj = $self->TransactionObj->CreatorObj; - my $creator = $creatorObj->EmailAddress(); + my $creator = $self->TransactionObj->CreatorObj->EmailAddress(); #Strip the sender out of the To, Cc and AdminCc and set the # recipients fields used to build the message by the superclass. # unless a flag is set - my $TransactionCurrentUser = RT::CurrentUser->new; - $TransactionCurrentUser->LoadByName($creatorObj->Name); - if (RT->Config->Get('NotifyActor',$TransactionCurrentUser)) { + if ($RT::NotifyActor) { @{ $self->{'To'} } = @To; @{ $self->{'Cc'} } = @Cc; @{ $self->{'Bcc'} } = @Bcc; } else { - @{ $self->{'To'} } = grep ( lc $_ ne lc $creator, @To ); - @{ $self->{'Cc'} } = grep ( lc $_ ne lc $creator, @Cc ); - @{ $self->{'Bcc'} } = grep ( lc $_ ne lc $creator, @Bcc ); + @{ $self->{'To'} } = grep ( !/^$creator$/, @To ); + @{ $self->{'Cc'} } = grep ( !/^$creator$/, @Cc ); + @{ $self->{'Bcc'} } = grep ( !/^$creator$/, @Bcc ); } @{ $self->{'PseudoTo'} } = @PseudoTo; - + return (1); } -RT::Base->_ImportOverlays(); +# }}} + +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;