use strict; use warnings; our @ScripConditions = ( { Name => 'On Reject', # loc Description => 'Whenever a ticket is rejected', # loc ApplicableTransTypes => 'Status', ExecModule => 'StatusChange', Argument => 'rejected' }, ); our @Final = ( sub { RT->Logger->debug("Going to correct descriptions of notify actions in the DB"); my $actions = RT::ScripActions->new( RT->SystemUser ); $actions->Limit( FIELD => 'ExecModule', VALUE => 'Notify', ); $actions->Limit( FIELD => 'Argument', VALUE => 'All', ); while ( my $action = $actions->Next ) { my ($status, $msg) = $action->__Set( Field => 'Name', Value => 'Notify Owner, Requestors, Ccs and AdminCcs' ); RT->Logger->warning( "Couldn't change action name: $msg" ) unless $status; ($status, $msg) = $action->__Set( Field => 'Description', Value => 'Send mail to owner and all watchers' ); RT->Logger->warning( "Couldn't change action description: $msg" ) unless $status; } $actions = RT::ScripActions->new( RT->SystemUser ); $actions->Limit( FIELD => 'ExecModule', VALUE => 'NotifyAsComment', ); $actions->Limit( FIELD => 'Argument', VALUE => 'All', ); while ( my $action = $actions->Next ) { my ($status, $msg) = $action->__Set( Field => 'Name', Value => 'Notify Owner, Requestors, Ccs and AdminCcs as Comment' ); RT->Logger->warning( "Couldn't change action name: $msg" ) unless $status; ($status, $msg) = $action->__Set( Field => 'Description', Value => 'Send mail to owner and all watchers as a "comment"' ); RT->Logger->warning( "Couldn't change action description: $msg" ) unless $status; } RT->Logger->debug("Corrected descriptions of notify actions in the DB."); return 1; }, ); our (@ScripActions, @Scrips); { RT->Logger->debug("Going to add in Extract Subject Tag actions if they were missed during a previous upgrade"); my $actions = RT::ScripActions->new( RT->SystemUser ); $actions->Limit( FIELD => 'ExecModule', VALUE => 'ExtractSubjectTag', ); my $extract_action = $actions->First; if ( $extract_action && $extract_action->Id ) { RT->Logger->debug("You appear to already have an Extract Subject Tag action, skipping"); return 1; } else { RT->Logger->debug("Didn't find an existing Extract Subject Tag action, adding it"); push @ScripActions, ( { Name => 'Extract Subject Tag', # loc Description => 'Extract tags from a Transaction\'s subject and add them to the Ticket\'s subject.', # loc ExecModule => 'ExtractSubjectTag' }, ); RT->Logger->debug("Adding Extract Subject Tag Scrip"); push @Final, sub { my $action = RT::ScripAction->new( RT->SystemUser ); $action->Load( 'Extract Subject Tag' ); my $condition = RT::ScripCondition->new( RT->SystemUser ); $condition->Load( 'On Transaction' ); my $template = RT::Template->new( RT->SystemUser ); $template->LoadByName( Name => 'Blank', Queue => 0 ); my $scrip = RT::Scrip->new( RT->SystemUser ); $scrip->RT::Record::Create( Description => "On transaction, add any tags in the transaction's subject to the ticket's subject", ScripCondition => $condition->id, ScripAction => $action->id, Template => $template->id, Stage => 'TransactionCreate', Queue => 0, ); }; } }