From e845d275cd29ef8213cdbc8aa31fa6feb9e35b0c 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 Signed-off-by: David Bourgault Rebased-by: Emmi Takkinen --- C4/Auth_with_ldap.pm | 7 +--- C4/Auth_with_shibboleth.pm | 7 +--- C4/Form/MessagingPreferences.pm | 6 ++-- C4/Members/Messaging.pm | 35 ------------------- Koha/Patrons/Import.pm | 7 +--- Koha/REST/V1/Patrons.pm | 7 +--- .../borrowers-force-messaging-defaults.pl | 7 ++-- 7 files changed, 11 insertions(+), 65 deletions(-) diff --git a/C4/Auth_with_ldap.pm b/C4/Auth_with_ldap.pm index f13dbdcf8e..af33519561 100644 --- a/C4/Auth_with_ldap.pm +++ b/C4/Auth_with_ldap.pm @@ -227,12 +227,7 @@ sub checkpw_ldap { )->store; die "Insert of new patron failed" unless $patron; $borrowernumber = $patron->borrowernumber; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( - { - borrowernumber => $borrowernumber, - categorycode => $borrower{'categorycode'} - } - ); + $patron->set_default_messaging_preferences; # Send welcome email if enabled if ( $config{welcome} ) { diff --git a/C4/Auth_with_shibboleth.pm b/C4/Auth_with_shibboleth.pm index 9474fdb111..06cd0d5868 100644 --- a/C4/Auth_with_shibboleth.pm +++ b/C4/Auth_with_shibboleth.pm @@ -135,12 +135,7 @@ sub _autocreate { } my $patron = Koha::Patron->new( \%borrower )->store; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( - { - borrowernumber => $patron->borrowernumber, - categorycode => $patron->categorycode - } - ); + $patron->set_default_messaging_preferences; # Send welcome email if enabled if ( $config->{welcome} ) { diff --git a/C4/Form/MessagingPreferences.pm b/C4/Form/MessagingPreferences.pm index 8ddb9664ef..be95f83846 100644 --- a/C4/Form/MessagingPreferences.pm +++ b/C4/Form/MessagingPreferences.pm @@ -24,6 +24,7 @@ use CGI qw ( -utf8 ); use C4::Context; use C4::Members::Messaging; use Koha::Patron::MessagePreferences; +use Koha::Patrons; use constant MAX_DAYS_IN_ADVANCE => 30; @@ -104,8 +105,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 dc0d4ee8d6..945b72fb87 100644 --- a/C4/Members/Messaging.pm +++ b/C4/Members/Messaging.pm @@ -183,41 +183,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::MessagePreferences->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/Koha/Patrons/Import.pm b/Koha/Patrons/Import.pm index 3ba184d1e2..0e2a392f65 100644 --- a/Koha/Patrons/Import.pm +++ b/Koha/Patrons/Import.pm @@ -400,12 +400,7 @@ sub import_patrons { } if ($set_messaging_prefs) { - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( - { - borrowernumber => $patron->borrowernumber, - categorycode => $patron->categorycode, - } - ); + $patron->set_default_messaging_preferences; } $imported++; diff --git a/Koha/REST/V1/Patrons.pm b/Koha/REST/V1/Patrons.pm index 576e4f8f2c..07ffd9da23 100644 --- a/Koha/REST/V1/Patrons.pm +++ b/Koha/REST/V1/Patrons.pm @@ -120,12 +120,7 @@ sub add { ] ); if ( C4::Context->preference('EnhancedMessagingPreferences') ) { - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( - { - borrowernumber => $patron->borrowernumber, - categorycode => $patron->categorycode, - } - ); + $patron->set_default_messaging_preferences; } $c->res->headers->location($c->req->url->to_string . '/' . $patron->borrowernumber); diff --git a/misc/maintenance/borrowers-force-messaging-defaults.pl b/misc/maintenance/borrowers-force-messaging-defaults.pl index 22cb01a706..152e351611 100755 --- a/misc/maintenance/borrowers-force-messaging-defaults.pl +++ b/misc/maintenance/borrowers-force-messaging-defaults.pl @@ -25,6 +25,7 @@ use C4::Context; use C4::Members::Messaging; use Getopt::Long qw( GetOptions ); use Pod::Usage qw( pod2usage ); +use Koha::Patrons; sub usage { @@ -62,10 +63,8 @@ WHERE 1|; while ( my ($borrowernumber, $categorycode) = $sth->fetchrow ) { print "$borrowernumber: $categorycode\n"; next unless $doit; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { - borrowernumber => $borrowernumber, - categorycode => $categorycode, - } ); + my $patron = Koha::Patrons->find($borrowernumber); + $patron->set_default_messaging_preferences if $patron; $cnt++; } $dbh->commit(); -- 2.25.1