From 1f4ecea50f3eaccb3a0e708d9926237fd95b6277 Mon Sep 17 00:00:00 2001 From: Lari Taskula Date: Thu, 27 Oct 2016 14:18:34 +0300 Subject: [PATCH] Bug 18595: Move C4::Members::Messaging::SetMessagingPreferencesFromDefaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch moves C4::Members::SetMessagingPreferencesFromDefaults to Koha::Patron->set_default_messaging_preferences The patch makes a heavy touch on core messaging preference features, but should not introduce any visible changes for end user. Keep this in mind if testing. If you notice any changes in Koha, something is probably wrong! To test: Make sure you have enabled the following system preferences: - EnhancedMessagingPreferences ---- GENERAL ---- 1. Apply patch 2. Search Koha source code for references of "SetMessagingPreferencesFromDefaults" (grep -r 'SetMessagingPreferencesFromDefaults'). 3. Observe no results in source code. ---- INTRANET ---- 1. Login to intranet. 2. Go to Administration -> Patron categories -> Edit (for any category) 3. Scroll down to observe default messaging preferences for this patron category 4. Observe the preferences, remember them for the next step. 5. Go to cgi-bin/koha/members/memberentry.pl?op=add&categorycode=XXX, replace XXX with the categorycode you were just editing. 6. Look at messaging preferences. They should be same as in step 4. 7. Fill in required data, do not modify messaging preferences, click Save. 8. Observe a new patron with default messaging preferences. Signed-off-by: Marc VĂ©ron --- C4/Auth_with_ldap.pm | 2 +- C4/Auth_with_shibboleth.pm | 4 +-- C4/Form/MessagingPreferences.pm | 6 ++-- C4/Members/Messaging.pm | 35 ---------------------- .../borrowers-force-messaging-defaults.pl | 6 ++-- tools/import_borrowers.pl | 3 +- 6 files changed, 10 insertions(+), 46 deletions(-) diff --git a/C4/Auth_with_ldap.pm b/C4/Auth_with_ldap.pm index bbb1094..00732a7 100644 --- a/C4/Auth_with_ldap.pm +++ b/C4/Auth_with_ldap.pm @@ -224,7 +224,7 @@ sub checkpw_ldap { } } elsif ($config{replicate}) { # A2, C2 $borrowernumber = C4::Members::AddMember(%borrower) or die "AddMember failed"; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { borrowernumber => $borrowernumber, categorycode => $borrower{'categorycode'} } ); + Koha::Patrons->find($borrowernumber)->set_default_messaging_preferences; } else { return 0; # B2, D2 } diff --git a/C4/Auth_with_shibboleth.pm b/C4/Auth_with_shibboleth.pm index 6b20511..0e8a068 100644 --- a/C4/Auth_with_shibboleth.pm +++ b/C4/Auth_with_shibboleth.pm @@ -23,8 +23,8 @@ use C4::Debug; use C4::Context; use Koha::AuthUtils qw(get_script_name); use Koha::Database; +use Koha::Patrons; use C4::Members qw( AddMember_Auto ); -use C4::Members::Messaging; use Carp; use CGI; @@ -123,7 +123,7 @@ sub _autocreate { } %borrower = AddMember_Auto( %borrower ); - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { borrowernumber => $borrower{'borrowernumber'}, categorycode => $borrower{'categorycode'} } ); + Koha::Patrons->find($borrower{'borrowernumber'})->set_default_messaging_preferences; return ( 1, $borrower{'cardnumber'}, $borrower{'userid'} ); } diff --git a/C4/Form/MessagingPreferences.pm b/C4/Form/MessagingPreferences.pm index 4b171f5..a6c938a 100644 --- a/C4/Form/MessagingPreferences.pm +++ b/C4/Form/MessagingPreferences.pm @@ -25,6 +25,7 @@ use C4::Context; use C4::Members::Messaging; use C4::Debug; use Koha::Patron::Message::Preferences; +use Koha::Patrons; use constant MAX_DAYS_IN_ADVANCE => 30; @@ -105,8 +106,9 @@ sub handle_form_action { } if (! $prefs_set && $insert){ # this is new borrower, and we have no preferences set, use the defaults - $target_params->{categorycode} = $categorycode; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( $target_params ); + $target_params->{categorycode} = $categorycode; + my $patron = Koha::Patrons->find($target_params->{'borrowernumber'}); + $patron->set_default_messaging_preferences if $patron; } # show the success message $template->param( settings_updated => 1 ); diff --git a/C4/Members/Messaging.pm b/C4/Members/Messaging.pm index 09d4d43..6019eed 100644 --- a/C4/Members/Messaging.pm +++ b/C4/Members/Messaging.pm @@ -182,41 +182,6 @@ END_SQL return; } -=head2 SetMessagingPreferencesFromDefaults - - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { borrowernumber => $borrower->{'borrowernumber'} - categorycode => 'CPL' } ); - -Given a borrowernumber and a patron category code (from the C and C keys -in the parameter hashref), replace all of the patron's current messaging preferences with -whatever defaults are defined for the patron category. - -=cut - -sub SetMessagingPreferencesFromDefaults { - my $params = shift; - - foreach my $required ( qw( borrowernumber categorycode ) ) { - unless ( exists $params->{ $required } ) { - die "SetMessagingPreferencesFromDefaults called without required parameter: $required"; - } - } - - my $messaging_options = Koha::Patron::Message::Preferences->get_options; - OPTION: foreach my $option ( @$messaging_options ) { - my $default_pref = GetMessagingPreferences( { categorycode => $params->{categorycode}, - message_name => $option->{'message_name'} } ); - # FIXME - except for setting the borrowernumber, it really ought to be possible - # to have the output of GetMessagingPreferences be able to be the input - # to SetMessagingPreference - my @message_transport_types = keys %{ $default_pref->{transports} }; - $default_pref->{message_attribute_id} = $option->{'message_attribute_id'}; - $default_pref->{message_transport_types} = \@message_transport_types; - $default_pref->{borrowernumber} = $params->{borrowernumber}; - SetMessagingPreference( $default_pref ); - } -} - =head1 TABLES =head2 message_queue diff --git a/misc/maintenance/borrowers-force-messaging-defaults.pl b/misc/maintenance/borrowers-force-messaging-defaults.pl index e21b562..fff4537 100755 --- a/misc/maintenance/borrowers-force-messaging-defaults.pl +++ b/misc/maintenance/borrowers-force-messaging-defaults.pl @@ -28,6 +28,7 @@ BEGIN { use C4::Context; use C4::Members::Messaging; +use Koha::Patrons; use Getopt::Long; use Pod::Usage; @@ -63,10 +64,7 @@ sub force_borrower_messaging_defaults { while ( my ($borrowernumber, $categorycode) = $sth->fetchrow ) { print "$borrowernumber: $categorycode\n"; next unless $doit; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { - borrowernumber => $borrowernumber, - categorycode => $categorycode, - } ); + Koha::Patrons->find($borrowernumber)->set_default_messaging_preferences; } $dbh->commit(); } diff --git a/tools/import_borrowers.pl b/tools/import_borrowers.pl index d0aa3eb..5db1adc 100755 --- a/tools/import_borrowers.pl +++ b/tools/import_borrowers.pl @@ -359,8 +359,7 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) { } if ($set_messaging_prefs) { - C4::Members::Messaging::SetMessagingPreferencesFromDefaults({ borrowernumber => $borrowernumber, - categorycode => $borrower{categorycode} }); + Koha::Patrons->find($borrowernumber)->set_default_messaging_preferences; } $imported++; -- 2.7.4