[rt-devel] New Contrib Action for the Steal
Jan Okrouhly
okrouhly at civ.zcu.cz
Mon Dec 3 14:36:00 EST 2001
Hello,
I utilized existing contrib condition OwnerChange (I suggest to move
it into rt-addons/Conditions) not for only notifing on 'Give', but also
on 'Steal'. There wasn't any action for old owner notifycation so
I've done the one (see the attachment).
Example scrips:
OnOwnerChange NotifyOwnerAsComment with template Give
OnOwnerChange NotifyOldOwner with template Steal
Example Templates:
--Give:
Request #{$Ticket->id} has been given to you on
{$Transaction->CreatedAsString} by {$Transaction->CreatorObj->RealName}.
Ticket <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >
--Steal:
Request #{$Ticket->id} has been stollen from you on
{$Transaction->CreatedAsString} by {$Transaction->CreatorObj->RealName}.
Ticket <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >
--
I am sure it is not briliant code but I could be a good kick-off for other
contrib rt-users.
Greets
Jan Okrouhly
---------------------------------------\-\-\+\-\-\---okrouhly at civ.zcu.cz---
Laboratory for Computer Science | phone: (420 19) 7491588
University of West Bohemia | location: Univerzitni 22
Americka 42, 306 14 Pilsen, Czech Republic | room: UI404
------------------------------------------73!-de-OK1INC at OK0PPL.#BOH.CZE.EU-
-------------- next part --------------
package RT::Action::NotifyOldOwner;
require RT::Action::Notify;
@ISA = qw(RT::Action::Notify);
sub SetRecipients {
my $self=shift;
$arg=$self->Argument;
$arg =~ s/\bAll\b/OldOwner/;
my (@To);
if ($arg =~ /\bOldOwner\b/) {
if ($self->TransactionObj->OldValue != $RT::Nobody->Id) {
my $OldOwner=new RT::User($RT::SystemUser);
$OldOwner->Load($self->TransactionObj->OldValue);
push(@To, $OldOwner->EmailAddress);
$self->SUPER::SetRecipients ();
my $creator = $self->TransactionObj->CreatorObj->EmailAddress();
# override possible 'To'
@{$self->{'To'}} = grep (!/^$creator$/, @To);
}
}
return (1);
}
sub SetReturnAddress {
my $self = shift;
# Tell RT::Action::SendEmail that this should come
# from the relevant comment email address.
$self->{'comment'} = 1;
return($self->SUPER::SetReturnAddress(is_comment => 1));
}
# {{{ sub IsApplicable
sub IsApplicable {
my $self = shift;
return (1) if ($self->TransactionObj->Field eq 'Owner');
return (undef);
}
# }}}
1;
-------------- next part --------------
#!/usr/bin/perl -w
#
package RT;
use strict;
use vars qw($VERSION $Handle $Nobody $SystemUser $item);
use lib "/opt/rt/lib";
use lib "/opt/rt/etc";
#This drags in RT's config.pm
use config;
use Carp;
use RT::Handle;
use RT::User;
use RT::CurrentUser;
#connect to the db
$RT::Handle = new RT::Handle($RT::DatabaseType);
$RT::Handle->Connect();
#Put together a current user object so we can create a User object
my $CurrentUser = new RT::CurrentUser();
#now that we bootstrapped that little bit, we can use the standard RT cli
# helpers to do what we need
use RT::Interface::CLI qw(CleanEnv LoadConfig DBConnect
GetCurrentUser GetMessageContent);
#Clean out all the nasties from the environment
CleanEnv();
#Load etc/config.pm and drop privs
LoadConfig();
#Connect to the database and get RT::SystemUser and RT::Nobody loaded
DBConnect();
$CurrentUser->LoadByName('RT_System');
# {{{ ScripActions
my @ScripActions = (
{
Name => 'NotifyOldOwner',
Description => 'Sends a message to the old owner of stollen ticket',
ExecModule => 'NotifyOldOwner',
Argument => 'OldOwner',
},
);
# }}}
print "Creating ScripActions...";
use RT::ScripAction;
for $item (@ScripActions) {
my $new_entry = new RT::ScripAction($CurrentUser);
my $return = $new_entry->Create(%$item);
print $return.".";
}
print "done.\n";
$RT::Handle->Disconnect();
1;
More information about the Rt-devel
mailing list