give the environment built by O::A::T::Event[Group] access to the event proccessing...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 31 Mar 2009 17:36:14 +0000 (17:36 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 31 Mar 2009 17:36:14 +0000 (17:36 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@12738 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Trigger/Event.pm
Open-ILS/src/perlmods/OpenILS/Application/Trigger/EventGroup.pm
Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm

index a233a7f..c885c41 100644 (file)
@@ -356,6 +356,7 @@ sub build_environment {
 
     try {
    
+        $self->environment->{EventProcessor} = $self;
         $self->environment->{target} = $self->target;
         $self->environment->{event} = $self->event;
         $self->environment->{template} = $self->event->event_def->template;
index 99a09d0..41ce3b9 100644 (file)
@@ -182,6 +182,8 @@ sub update_state {
     my $state = shift;
     return undef unless ($state);
 
+    my $fields = shift;
+
     $self->editor->xact_begin || return undef;
 
     my @oks;
@@ -193,9 +195,13 @@ sub update_state {
         $e->update_time( 'now' );
         $e->update_process( $$ );
         $e->state( $state );
-    
+
         $e->clear_start_time() if ($e->state eq 'pending');
-    
+
+        if ($fields && ref($fields)) {
+            $e->$_($$fields{$_}) for (keys %$fields);
+        }
+
         my $ok = $self->editor->update_action_trigger_event( $e );
         if ($ok) {
             push @oks, $ok;
@@ -228,10 +234,12 @@ sub build_environment {
     my $self = shift;
     my $env = $self->environment;
 
+    $$env{EventProcessor} = $self;
     $$env{target} = [];
     $$env{event} = [];
     for my $e ( @{ $self->events } ) {
         for my $env_part ( keys %{ $e->environment } ) {
+            next if ($env_part eq 'EventProcessor');
             if ($env_part eq 'target') {
                 push @{ $$env{target} }, $e->environment->{target};
             } elsif ($env_part eq 'event') {
index 7bacf78..d85985d 100644 (file)
@@ -76,6 +76,15 @@ sub run_TT {
     $tt->process(\$env->{template}, $env, \$output) or 
         $logger->error("Error processing Trigger template: " . $tt->error);
 
+    if (!$nostore && $output) {
+        my $t_o = Fieldmapper::action_trigger::template_output->new;
+        $t_o->data( $output );
+
+        $env->{EventProcessor}->editor->xact_begin;
+        $t_o = $env->{EventProcessor}->editor->create_action_trigger_template_output( $t_o );
+        $env->{EventProcessor}->update_state( $env->{event}->state, { template_output => $t_o->id } );
+    }
+       
     return $output;
 }