From 20b5042aaaf8427255f614f95aa41a745bc0f154 Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Wed, 26 Jan 2022 16:13:16 +0100 Subject: [PATCH] Bug 24499: New syspref EnhancedMessaging for clearer functionality Actually there is EnhancedMessagingPreferences that can be set on "Allow" or "Don't allow" to show or not show messaging preferences for patrons. But this syspref does not prevent notifications from being sent. From your comments, I decide to create a new syspref which show dialog alert on patron details (Patron messaging preferences section) but prevent misc/cronjobs/advance_notices.pl script. EnhancedMessagingPreferences keep the same behavior I just took over preferences descriptions to make clearer context (on EnhancedMessagingPreferencesOPAC too). Test plan : 1 - Be sure to have a patron with a loan 2 - Also be sure to have a model on your library in "Notices & slips" 3 - Set max days for advance_notices on patron details table 4 - Then set EnhancedMessagingPreferences to "Allow" 5 - On Patron details you will see the table for settings notifications 6 - Run the misc/cronjobs/advance_notices.pl script manually 7 - The script find a notice and add a message in message_queue table 8 - Set now EnhancedMessagingPreferences to "Don't allow" 9 - Repeat the step 5, you don't see the table right now 10 - Repeat the step 6, same behavior, a message is created and stored 11 - Now apply this patch and launch updatedatabase.pl 12 - You will see the new syspref "EnhanceMessaging" 13 - If you want you can repeat steps 4 to 10 - same behavior again 14 - But now, you can set to "Don't send" on EnhancedMessaging 15 - See on patron details page, there is a dialog alert to inform 16 - Run again the step 6, normally it will send you a warn and no message was created or stored. Signed-off-by: Marius Mandrescu --- .../bug_24499-add_EnhancedMessaging_syspref.pl | 11 +++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 9 ++------- .../en/modules/admin/preferences/patrons.pref | 16 ++++++++++++---- .../prog/en/modules/members/moremember.tt | 7 +++++-- misc/cronjobs/advance_notices.pl | 8 ++++---- 5 files changed, 34 insertions(+), 17 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_24499-add_EnhancedMessaging_syspref.pl diff --git a/installer/data/mysql/atomicupdate/bug_24499-add_EnhancedMessaging_syspref.pl b/installer/data/mysql/atomicupdate/bug_24499-add_EnhancedMessaging_syspref.pl new file mode 100755 index 0000000000..50bd5ecc47 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_24499-add_EnhancedMessaging_syspref.pl @@ -0,0 +1,11 @@ +use Modern::Perl; + +return { + bug_number => "BUG_24499", + description => "Add new system preference EnhancedMessaging", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('EnhancedMessaging', '1', NULL, "Send/Don't send notifications througt misc/cronjobs/advance_notices.pl", 'YesNo') }); + }, + }; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 7640af55c7..d35571c510 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -218,14 +218,9 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('EnableOpacSearchHistory','1','YesNo','Enable or disable opac search history',''), ('EnablePointOfSale','0',NULL,'Enable the point of sale feature to allow anonymous transactions with the accounting system. (Requires UseCashRegisters)','YesNo'), ('EnableSearchHistory','0','','Enable or disable search history','YesNo'), -('EnableItemGroups','0','','Enable the item groups feature','YesNo'), -('EnableItemGroupHolds','0','','Enable item groups holds feature','YesNo'), +('EnhancedMessaging','1','NULL','If ON, send notifications throught the misc/cronjobs/advance_notices.pl.','YesNo'), ('EnhancedMessagingPreferences','1','','If ON, allows patrons to select to receive additional messages about items due or nearly due.','YesNo'), -('EnhancedMessagingPreferencesOPAC', '1', NULL, 'If ON, show patrons messaging setting on the OPAC.', 'YesNo'), -('ERMModule', '0', NULL, 'Enable the e-resource management module', 'YesNo'), -('ERMProviders', 'local', 'local|ebsco', 'Set the providers for the ERM module', 'Choice'), -('ERMProviderEbscoApiKey', '', '', 'API key for EBSCO', 'free'), -('ERMProviderEbscoCustomerID', '', '', 'Customer ID for EBSCO', 'free'), +('EnhancedMessagingPreferencesOPAC', '1', NULL, 'If ON, show patrons messaging setting on the OPAC. Requires EnhancedMessaging is ON', 'YesNo'), ('expandedSearchOption','0',NULL,'If ON, set advanced search to be expanded by default','YesNo'), ('ExpireReservesAutoFill','0',NULL,'Automatically fill the next hold with a automatically canceled expired waiting hold.','YesNo'), ('ExpireReservesAutoFillEmail','', NULL,'Send email notification of hold filled from automatically expired/cancelled hold to this address. If not defined, Koha will fallback to the library reply-to address','Free'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref index 685a09b2e6..fc640f4625 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -138,21 +138,29 @@ Patrons: - days. - "
NOTE: This system preference requires the misc/cronjobs/membership_expiry.pl cronjob. Ask your system administrator to schedule it." Notices and notifications: + - + - pref: EnhancedMessaging + choices: + 1: Send + 0: Don't send + - "notifications throught misc/cronjobs/advance_notices.pl." + - '
NOTE: This only applies to courtesy notices.' + + - "
NOTE: This system preference requires the misc/cronjobs/process_message_queue.pl and the misc/cronjobs/advance_notices.pl cronjob. Ask your system administrator to schedule them." - - pref: EnhancedMessagingPreferences choices: 1: Allow 0: "Don't allow" - - "staff to manage which notices patrons will receive and when they will receive them." - - '
NOTE: This only applies to courtesy notices. To manage if patrons have also access to these settings, use EnhancedMessagingPreferencesOPAC.' - - "
NOTE: This system preference requires the misc/cronjobs/process_message_queue.pl and the misc/cronjobs/advance_notices.pl cronjob. Ask your system administrator to schedule them." + - "staff to manage which notices patrons when they will receive them." + - '
NOTE: To manage if patrons have also access to these settings, use EnhancedMessagingPreferencesOPAC.' - - pref: EnhancedMessagingPreferencesOPAC choices: 1: Show 0: "Don't show" - "patron messaging setting on the OPAC." - - '
NOTE: EnhancedMessagingPreferences must be enabled.' + - '
NOTE: EnhancedMessaging must be enabled.' - - pref: AutoEmailNewUser choices: diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt index 10b57a94c2..f04e7cb6e3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -337,11 +337,15 @@ [% # /div#patron-extended-attributes %] [% END %] [% END %] - [% IF ( EnhancedMessagingPreferences ) %]

Patron messaging preferences

+ [% IF ( Koha.Preference('EnhancedMessaging') == 0 ) %] +
+ Notifications actually disabled +
+ [% END %] Edit
[% INCLUDE 'messaging-preference-form.inc' %] @@ -363,7 +367,6 @@ [% END %]
[% # /div#patron-messaging-prefs %] [% END %] -
diff --git a/misc/cronjobs/advance_notices.pl b/misc/cronjobs/advance_notices.pl index b13e5cdeba..e3272164df 100755 --- a/misc/cronjobs/advance_notices.pl +++ b/misc/cronjobs/advance_notices.pl @@ -205,14 +205,14 @@ pod2usage( -verbose => 2 ) if $man; # Since advance notice options are not visible in the web-interface # unless EnhancedMessagingPreferences is on, let the user know that # this script probably isn't going to do much -if ( ! C4::Context->preference('EnhancedMessagingPreferences') && $verbose ) { +if ( ! C4::Context->preference('EnhancedMessaging') ) { warn <<'END_WARN'; -The "EnhancedMessagingPreferences" syspref is off. -Therefore, it is unlikely that this script will actually produce any messages to be sent. -To change this, edit the "EnhancedMessagingPreferences" syspref. +The "EnhancedMessaging" syspref is off. +This syspref must set to "Send" to use this script. END_WARN + exit } unless ($confirm) { pod2usage(1); -- 2.39.2