[Rt-devel] Re: UserDefined scrip action

Jan Okrouhly okrouhly at civ.zcu.cz
Thu Dec 9 12:12:19 EST 2004


On Thu, 9 Dec 2004, Ruslan U. Zakirov wrote:

> Jan Okrouhly wrote:
> > Hello,
> >
> > we use RT 3.2.2 and meet big troubles with custom action scrips - it works
> > only sometimes (maybe just only once). This example for is i.e. not
> > working well if used in Scrip for specific Queue.
> > Is this approach wrong/where is the problem?
> > I (customer) doesn't want to use additional files like yours good one
> > Action/NotifyGroup.pm, because the LoadedGroup will change depending on
> > some ticket info (Customer CustomFields)...
> Start from http://wiki.bestpractical.com/?Debug

I used to debug it, but it there had to be some BIG mistake in usage of
objects or classes, RT 3.2.2, or Perl 5.8.4 used...

The simple code bellow works sometimes ones, sometimes no. It is not
deterministic - that's the PROBLEM.

> Comments about code below.

Thank You for comments, but PLEASE try this code:
package RT::Action::tmp;
use strict;
use base qw(RT::Action::Notify);

sub SetRecipients {
    my $self = shift;

    @{$self->{'Bcc'}} = ('somebody at test.it.com');
    return 1
}

1;

my $tmpscrip;
$tmpscrip = new RT::Action::tmp(
TransactionObj => $self->{'TransactionObj'},
TemplateObj => $self->{'TemplateObj'},
TicketObj => $self->{'TicketObj'},
ScripObj => $self->{'ScripObj'},
Type => $self->{'Type'},
CurrentUser => $self->CurrentUser,
);

$self->{'tmpscrip'} = $tmpscrip;

my $res=$tmpscrip->Prepare();
use Data::Dumper;
$RT::Logger->warning("Res=".$res.Dumper($self->TemplateObj->MIMEObj->head));
return $res;

>
> >
> > Prepare part:
> > ----- cut here -----
> > package RT::Action::tmp;
> > use strict;
> > use vars qw/@ISA/;
> > require RT::Action::Notify;
> > @ISA = qw(RT::Action::Notify);
> > sub SetRecipients {
> >     my $self = shift;
> >
> >     my ($group);
> >     my @Bcc;
> >
> >     $group = new RT::Group($RT::SystemUser);
> >     $group->LoadUserDefinedGroup("RT AdminCc");
> >
> >     unless ($group->Id ) {
> >         $RT::Logger->warning("Searching Group Global AdminCc failed, can't set recipients!\n");
> >
> >         return;
> >     }
> >
> >     my $members = $group->UserMembersObj();
> >     while (my $member = $members->Next()) {
> >
> >         my $user = $member->EmailAddress;
> >         if ($user && ! ( grep (/^$user$/, @Bcc) ) ) {
>           if ($user && ! ( grep (/^\Q$user\E$/, @Bcc) ) ) {
>
> >                 push ( @Bcc, $user );
> >         }
> >     }
> >
> >     if ($RT::UseFriendlyToLine) {
> >             push (
> >                 @{$self->{'PseudoTo'}},
> >                 sprintf($RT::FriendlyToLineFormat, "GroupNotify", $self->TicketObj->id),
> >             );
> >     }
> >
> >     if ($RT::NotifyActor) {
> unless($RT::NotifyActor) {
>
> >         # Do not send notification to the crator of the transaction
> >         my $creator;
> >         $creator = $self->TransactionObj->CreatorObj->EmailAddress() if ($self->TransactionObj);
> >         # override possible 'Bcc'
> >
> >         @{$self->{'Bcc'}} = grep (!/^$creator$/, @Bcc);
>           @{$self->{'Bcc'}} = grep (!/^\Q$creator\E$/, @Bcc);
>
> >     } else {
> >         @{$self->{'Bcc'}} = @Bcc;    }
> >
> >     $RT::Logger->warning("GroupNotify Bcc is:".join(',',@{$self->{'Bcc'}})."\n");
> >
> >     return (1)
> > }
> >
> > 1;
> >
> > my $tmpscrip;
> > $tmpscrip = new RT::Action::tmp(
> > TransactionObj => $self->{'TransactionObj'},
> > TemplateObj => $self->{'TemplateObj'},
> > TicketObj => $self->{'TicketObj'},
> > ScripObj => $self->{'ScripObj'},
> > Type => $self->{'Type'},
> > CurrentUser => $self->CurrentUser,
> > );
> >
> > $self->{'tmpscrip'} = $tmpscrip;
> >
> > my $res=$tmpscrip->Prepare();
> > #use Data::Dumper;
> > #$RT::Logger->warning(Dumper($self->TemplateObj->MIMEObj->head));
> > return $res;
> > ----- cut here -----
> > Commit part is only:
> > ----- cut here -----
> > $self->{'tmpscrip'}->Commit;
> > ----- cut here -----
> >
> >
> > Jan Okrouhlý
> >
> > //------------------------------------\-\-\+\-\-\---okrouhly at civ.zcu.cz-\\
> > |Laboratory for Computer Science           |    phone: +420 377 632 837  |
> > |University of West Bohemia                | location: Univerzitni 22    |
> > |Americka 42, 306 14 Pilsen, Czech Republic|     room: UI402             |
> > +---------------------------------------73-!-de-OK1INC at OK0PPL.#BOH.CZE.EU+
> > |  Monday or Tuesday:                      |    phone: +420 224 355 263  |
> >  \\___________________CESNET z.s.p.o.______|_location: Zikova 4, Prague_//
> >
>
>


Jan Okrouhlý

//------------------------------------\-\-\+\-\-\---okrouhly at civ.zcu.cz-\\
|Laboratory for Computer Science           |    phone: +420 377 632 837  |
|University of West Bohemia                | location: Univerzitni 22    |
|Americka 42, 306 14 Pilsen, Czech Republic|     room: UI402             |
+---------------------------------------73-!-de-OK1INC at OK0PPL.#BOH.CZE.EU+
|  Monday or Tuesday:                      |    phone: +420 224 355 263  |
 \\___________________CESNET z.s.p.o.______|_location: Zikova 4, Prague_//




More information about the Rt-devel mailing list