From 5357bfb9fcb004ce67ba4965a853564b655f0fa1 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Fri, 20 Feb 2015 09:57:25 -0500 Subject: [PATCH] LP#1410369: Teach EventGroup how to process messages Signed-off-by: Mike Rylander Signed-off-by: Kathy Lussier --- .../OpenILS/Application/Trigger/EventGroup.pm | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/EventGroup.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/EventGroup.pm index 08adc5cc84..1d9d6be82b 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/EventGroup.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/EventGroup.pm @@ -65,12 +65,35 @@ sub react { $self->build_environment; try { - $self->reacted( - OpenILS::Application::Trigger::ModRunner::Reactor - ->new( $self->event->event_def->reactor, $self->environment ) - ->run - ->final_result + my $env = $self->environment; + my $reactor = OpenILS::Application::Trigger::ModRunner::Reactor->new( + $self->event->event_def->reactor, + $env ); + + $self->reacted( $reactor->run->final_result); + + if ($env->{usr_message}{usr} && $env->{usr_message}{template}) { + my $message_template_output = + $reactor->pass('ProcessMessage')->run->final_result; + + if ($message_template_output) { + my $usr_message = Fieldmapper::actor::usr_message->new; + $usr_message->title( $self->event->event_def->message_title || $self->event->event_def->name ); + $usr_message->message( $message_template_output ); + $usr_message->usr( $env->{usr_message}{usr}->id ); + $usr_message->sending_lib( $env->{usr_message}{sending_lib}->id ); + + if ($self->editor->xact_begin) { + if ($self->editor->create_actor_usr_message( $usr_message )) { + $self->editor->xact_commit; + } else { + $self->editor->xact_rollback; + } + } + } + } + } otherwise { $log->error("Event reacting failed with ". shift() ); $self->update_state( 'error' ) || die 'Unable to update event group state'; -- 2.43.2