From 034fb7bcb12964cecb14a2da7f81a8e2523ed075 Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Mon, 6 Feb 2012 17:19:14 -0500 Subject: [PATCH] Enable notify checking for holds in A/T Validators HoldIsAvailable and HoldIsCanceled get new checks, plus add HoldNotifyCheck validator. All three check for "check_$type_notify" parameters evaling to true, where $type is email, sms, or phone. If true the hold's appropriate value is checked and, if not suitable, the validator returns false. For email the email_notify value must pass the is_true test. For sms/phone the appropriate notify value must pass perl's truth test. Upgrade script modifies default event definitions, with the exception of the sms hold available event definition. That has no static id in the seed values. Signed-off-by: Thomas Berezansky Signed-off-by: Bill Erickson --- .../OpenILS/Application/Trigger/Validator.pm | 42 +++++++++++++++++++ Open-ILS/src/sql/Pg/950.data.seed-values.sql | 24 ++++++++++- .../XXXX.hold_available_email_notify.sql | 22 ++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.hold_available_email_notify.sql diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Validator.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Validator.pm index 55c574288d..f3a701a22c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Validator.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Validator.pm @@ -5,10 +5,13 @@ use DateTime::Format::ISO8601; use OpenSRF::Utils qw/:datetime/; use OpenSRF::Utils::Logger qw/:logger/; use OpenILS::Const qw/:const/; +use OpenILS::Application::AppUtils; sub fourty_two { return 42 } sub NOOP_True { return 1 } sub NOOP_False { return 0 } +my $U = 'OpenILS::Application::AppUtils'; + sub CircIsOpen { my $self = shift; my $env = shift; @@ -73,6 +76,16 @@ sub HoldIsAvailable { my $hold = $env->{target}; + if ($env->{params}->{check_email_notify}) { + return 0 unless $U->is_true($hold->email_notify); + } + if ($env->{params}->{check_sms_notify}) { + return 0 unless $hold->sms_notify; + } + if ($env->{params}->{check_phone_notify}) { + return 0 unless $hold->phone_notify; + } + return 1 if !$hold->cancel_time and !$hold->fulfillment_time and @@ -106,7 +119,36 @@ sub HoldIsCancelled { my $hold = $env->{target}; + if ($env->{params}->{check_email_notify}) { + return 0 unless $U->is_true($hold->email_notify); + } + if ($env->{params}->{check_sms_notify}) { + return 0 unless $hold->sms_notify; + } + if ($env->{params}->{check_phone_notify}) { + return 0 unless $hold->phone_notify; + } + return ($hold->cancel_time) ? 1 : 0; } +sub HoldNotifyCheck { + my $self = shift; + my $env = shift; + + my $hold = $env->{target}; + + if ($env->{params}->{check_email_notify}) { + return 0 unless $U->is_true($hold->email_notify); + } + if ($env->{params}->{check_sms_notify}) { + return 0 unless $hold->sms_notify; + } + if ($env->{params}->{check_phone_notify}) { + return 0 unless $hold->phone_notify; + } + + return 1; +} + 1; diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index 94e7626f84..86ad4f6b77 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -6522,6 +6522,8 @@ The item(s) you requested are available for pickup from the Library. $$); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (5, 'check_email_notify', 1); INSERT INTO action_trigger.hook ( key, @@ -6584,6 +6586,8 @@ pickup, but these holds will soon expire. $$ ); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (7, 'check_email_notify', 1); INSERT INTO action_trigger.environment ( event_def, @@ -6607,6 +6611,15 @@ INSERT INTO action_trigger.hook ( TRUE ); +INSERT INTO action_trigger.validator (module,description) VALUES + ('HoldNotifyCheck', + oils_i18n_gettext( + 'HoldNotifyCheck', + 'Check Hold notification flag(s)', + 'atval', + 'description' + )); + INSERT INTO action_trigger.event_definition ( id, active, @@ -6625,7 +6638,7 @@ INSERT INTO action_trigger.event_definition ( 1, 'Hold waiting for pickup for long time', 'hold_request.long_wait', - 'NOOP_True', + 'HoldNotifyCheck', 'SendEmail', '6 MONTHS', 'request_time', @@ -6658,6 +6671,9 @@ INSERT INTO action_trigger.environment (event_def, path) (9, 'usr'), (9, 'current_copy.call_number'); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (9, 'check_email_notify', 1); + -- trigger data related to acq user requests INSERT INTO action_trigger.hook (key,core_type,description,passive) VALUES ( @@ -9192,6 +9208,9 @@ INSERT INTO action_trigger.environment (event_def, path) VALUES (38, 'pickup_lib'), (38, 'bib_rec.bib_record.simple_record'); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (currval('action_trigger.event_definition_id_seq'), 'check_email_notify', 1); + ---------------------------------------------------------------- -- Seed data for queued record/item exports ---------------------------------------------------------------- @@ -11238,6 +11257,9 @@ INSERT INTO action_trigger.environment ( 'pickup_lib.billing_address' ); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (currval('action_trigger.event_definition_id_seq'), 'check_sms_notify', 1); + INSERT INTO action_trigger.hook( key, core_type, diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_available_email_notify.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_available_email_notify.sql new file mode 100644 index 0000000000..a0ab077980 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.hold_available_email_notify.sql @@ -0,0 +1,22 @@ +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (5, 'check_email_notify', 1); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (7, 'check_email_notify', 1); +INSERT INTO action_trigger.event_params (event_def, param, value) + VALUES (9, 'check_email_notify', 1); +INSERT INTO action_trigger.validator (module,description) VALUES + ('HoldNotifyCheck', + oils_i18n_gettext( + 'HoldNotifyCheck', + 'Check Hold notification flag(s)', + 'atval', + 'description' + )); +UPDATE action_trigger.event_definition SET validator = 'HoldNotifyCheck' WHERE id = 9; + +-- NOT COVERED: Adding check_sms_notify to the proper trigger. It doesn't have a static id. + +--UNDO +--UPDATE action_trigger.event_definition SET validator = 'NOOP_True' WHERE id = 9; +--DELETE FROM action_trigger.event_params WHERE param = 'check_email_notify'; +--DELETE FROM action_trigger.validator WHERE module = 'HoldNotifyCheck'; -- 2.43.2