From baa7c759f95f7907b267fc0440a8c29dbda078fc Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Wed, 26 Jan 2022 16:13:16 +0100 Subject: [PATCH] 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. https://bugs.koha-community.org/show_bug.cgi?id=24499 --- .../bug_24499-add_EnhancedMessaging_syspref.pl | 11 +++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 3 ++- .../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(+), 11 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..686405fa72 --- /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 9cdd4f64ee..931d433318 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -200,8 +200,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'), +('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'), +('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'), ('ExpireReservesMaxPickUpDelay','0','','Enabling this allows holds to expire automatically if they have not been picked by within the time period specified in ReservesMaxPickUpDelay','YesNo'), ('ExpireReservesMaxPickUpDelayCharge','0',NULL,'If ExpireReservesMaxPickUpDelay is enabled, and this field has a non-zero value, than a borrower whose waiting hold has expired will be charged this amount.','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 5a6f1bd5a4..306fa03ec1 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 @@ -127,21 +127,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: AutoEmailOpacUser 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 951c3e1023..c7212aaab7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -368,11 +368,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' %] @@ -392,7 +396,6 @@ [% END %]
[% # /div#patron-messaging-prefs %] [% END %] -
diff --git a/misc/cronjobs/advance_notices.pl b/misc/cronjobs/advance_notices.pl index 96029dced0..bd34c87ac3 100755 --- a/misc/cronjobs/advance_notices.pl +++ b/misc/cronjobs/advance_notices.pl @@ -203,14 +203,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.25.1