From 54a650ec14256ca38eaaf069bad5d6e353f4cf63 Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Wed, 15 Mar 2023 16:50:40 -1000 Subject: [PATCH] Bug 33239: Add the ability to run borrowers-force-messaging-defaults.pl only on a specified message name Test plan: 1) Select a patron A 2) Change all the message prefs away from defaults. 3) Run misc/maintenance/borrowers-force-messaging-defaults.pl --doit --message-name Item_due Verify that patron A prefs changed only for 'Item due' --- C4/Members/Messaging.pm | 3 +++ .../borrowers-force-messaging-defaults.pl | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/C4/Members/Messaging.pm b/C4/Members/Messaging.pm index 97e72c5e3e..25e6a04a0f 100644 --- a/C4/Members/Messaging.pm +++ b/C4/Members/Messaging.pm @@ -243,6 +243,9 @@ sub SetMessagingPreferencesFromDefaults { my $messaging_options = GetMessagingOptions(); OPTION: foreach my $option ( @$messaging_options ) { + if ( defined $params->{message_name} && $option->{'message_name'} ne $params->{message_name} ) { + next OPTION; + } my $default_pref = GetMessagingPreferences( { categorycode => $params->{categorycode}, message_name => $option->{'message_name'} } ); # FIXME - except for setting the borrowernumber, it really ought to be possible diff --git a/misc/maintenance/borrowers-force-messaging-defaults.pl b/misc/maintenance/borrowers-force-messaging-defaults.pl index 22cb01a706..4c8fd836c2 100755 --- a/misc/maintenance/borrowers-force-messaging-defaults.pl +++ b/misc/maintenance/borrowers-force-messaging-defaults.pl @@ -34,7 +34,7 @@ sub usage { sub force_borrower_messaging_defaults { - my ($doit, $since, $not_expired, $no_overwrite, $category ) = @_; + my ($doit, $since, $not_expired, $no_overwrite, $category, $message_name ) = @_; print "Since: $since\n" if $since; @@ -62,10 +62,12 @@ WHERE 1|; while ( my ($borrowernumber, $categorycode) = $sth->fetchrow ) { print "$borrowernumber: $categorycode\n"; next unless $doit; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { + my $options = { borrowernumber => $borrowernumber, categorycode => $categorycode, - } ); + }; + $options{message_name} = $message_name if defined $message_name; + C4::Members::Messaging::SetMessagingPreferencesFromDefaults($options); $cnt++; } $dbh->commit(); @@ -73,19 +75,20 @@ WHERE 1|; } -my ( $doit, $since, $help, $not_expired, $no_overwrite, $category ); +my ( $doit, $since, $help, $not_expired, $no_overwrite, $category, $message_name ); my $result = GetOptions( 'doit' => \$doit, 'since:s' => \$since, 'not-expired' => \$not_expired, 'no-overwrite' => \$no_overwrite, 'category:s' => \$category, + 'message-name:s' => \$message_name, 'help|h' => \$help, ); usage() if $help; -force_borrower_messaging_defaults( $doit, $since, $not_expired, $no_overwrite, $category ); +force_borrower_messaging_defaults( $doit, $since, $not_expired, $no_overwrite, $category, $message_name ); =head1 NAME @@ -98,6 +101,7 @@ borrowers-force-messaging-defaults.pl borrowers-force-messaging-defaults.pl --doit borrowers-force-messaging-defaults.pl --doit --not-expired borrowers-force-messaging-defaults.pl --doit --category PT + borrowers-force-messaging-defaults.pl --doit --message-name 'Item_Due' =head1 DESCRIPTION @@ -134,6 +138,11 @@ already set their preferences. Will only update patrons in the category specified. +=item B<--message-name> + +Will only update the specified message name. +List of values can be found in installer/data/mysql/mandatory/sample_notices_message_attributes.sql + =item B<--since> Will only update borrowers enrolled since the specified date. -- 2.39.0