3 # Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
5 # (Except where explictly superceded by other copyright notices)
7 # This work is made available to you under the terms of Version 2 of
8 # the GNU General Public License. A copy of that license should have
9 # been provided with this software, but in any event can be snarfed
12 # This work is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # General Public License for more details.
17 # Unless otherwise specified, all modifications, corrections or
18 # extensions to this work which alter its source code become the
19 # property of Best Practical Solutions, LLC when submitted for
20 # inclusion in the work.
24 # This Action will resolve all members of a resolved group ticket
26 package RT::Action::ResolveMembers;
27 require RT::Action::Generic;
32 @ISA=qw(RT::Action::Generic);
34 #Do what we need to do and send it out.
36 #What does this type of Action does
41 return $self->loc("[_1] will resolve all members of a resolved group ticket.", ref $self);
56 my $Links=RT::Links->new($RT::SystemUser);
57 $Links->Limit(FIELD => 'Type', VALUE => 'MemberOf');
58 $Links->Limit(FIELD => 'Target', VALUE => $self->TicketObj->id);
60 while (my $Link=$Links->Next()) {
61 # Todo: Try to deal with remote URIs as well
62 next unless $Link->BaseURI->IsLocal;
63 my $base=RT::Ticket->new($self->TicketObj->CurrentUser);
64 # Todo: Only work if Base is a plain ticket num:
65 $base->Load($Link->Base);
66 # I'm afraid this might be a major bottleneck if ResolveGroupTicket is on.
72 # Applicability checked in Commit.
74 # {{{ sub IsApplicable
82 eval "require RT::Action::ResolveMembers_Vendor";
83 die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/ResolveMembers_Vendor.pm});
84 eval "require RT::Action::ResolveMembers_Local";
85 die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/ResolveMembers_Local.pm});