diff options
author | mark <mark> | 2011-05-10 23:21:44 +0000 |
---|---|---|
committer | mark <mark> | 2011-05-10 23:21:44 +0000 |
commit | 2f864a9b428d642df650d01a51ffa42b6826d82a (patch) | |
tree | 505288187660152ddf667cf2cdbc364f59019cf1 /FS | |
parent | c64541e0cb6307925480669203ff76554f4663fe (diff) |
replace missing RT scrips on upgrade, #9569
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/TicketSystem.pm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/FS/FS/TicketSystem.pm b/FS/FS/TicketSystem.pm index f5c8e7dad..8ea4b03a8 100644 --- a/FS/FS/TicketSystem.pm +++ b/FS/FS/TicketSystem.pm @@ -84,6 +84,59 @@ sub _upgrade_data { ); die $msg if !$val; } + + # Create any missing scrips + our (@Groups, @Users, @ACL, @Queues, @ScripActions, @ScripConditions, + @Templates, @CustomFields, @Scrips, @Attributes, @Initial, @Final); + my $datafile = '%%%RT_PATH%%%/etc/initialdata'; + eval { require $datafile }; + if ( $@ ) { + warn "Couldn't load RT data from '$datafile': $@\n(skipping)\n"; + return; + } + + my $search = RT::ScripConditions->new($CurrentUser); + $search->UnLimit; + my %condition = map { lc($_->Name), $_->Id } @{ $search->ItemsArrayRef }; + + $search = RT::ScripActions->new($CurrentUser); + $search->UnLimit; + my %action = map { lc($_->Name), $_->Id } @{ $search->ItemsArrayRef }; + + $search = RT::Templates->new($CurrentUser); + $search->UnLimit; + my %template = map { lc($_->Name), $_->Id } @{ $search->ItemsArrayRef }; + + my $Scrip = RT::Scrip->new($CurrentUser); + foreach my $s ( @Scrips ) { + my $desc = $s->{'Description'}; + my ($c, $a, $t) = map lc, + @{ $s }{'ScripCondition', 'ScripAction', 'Template'}; + if ( !$condition{$c} ) { + warn "ScripCondition '$c' not found.\n"; + next; + } + if ( !$action{$a} ) { + warn "ScripAction '$a' not found.\n"; + next; + } + if ( !$template{$t} ) { + warn "Template '$t' not found.\n"; + next; + } + my %param = ( + ScripCondition => $condition{$c}, + ScripAction => $action{$a}, + Template => $template{$t}, + Queue => 0, + ); + $Scrip->LoadByCols(%param); + if (!defined($Scrip->Id)) { + my ($val, $msg) = $Scrip->Create(%param, Description => $desc); + die $msg if !$val; + } + } #foreach (@Scrips) + return; } |