From 2f82ce61609a5996249511991f1ada1a96d26620 Mon Sep 17 00:00:00 2001 From: lmstrand Date: Fri, 8 Mar 2024 12:40:01 +0200 Subject: [PATCH] Bug 14806 - Log changes to borrower message preferences to action logs --- C4/Members/Messaging.pm | 44 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/C4/Members/Messaging.pm b/C4/Members/Messaging.pm index 25e6a04a0f..cb54779971 100644 --- a/C4/Members/Messaging.pm +++ b/C4/Members/Messaging.pm @@ -20,8 +20,8 @@ package C4::Members::Messaging; use strict; use warnings; use C4::Context; - - +use JSON qw( to_json ); +use C4::Log qw( logaction ); =head1 NAME @@ -120,7 +120,7 @@ returns nothing useful. sub SetMessagingPreference { my $params = shift; - + unless (exists $params->{borrowernumber} xor exists $params->{categorycode}) { # yes, xor warn "SetMessagingPreference called without exactly one of borrowernumber or categorycode"; return; @@ -131,6 +131,8 @@ sub SetMessagingPreference { return; } } + my $preferences_json = to_json(GetPatronMessagingPreferences($params->{borrowernumber}, $params->{message_attribute_id}),{ utf8 => 1, canonical => 1 }); + $params->{'days_in_advance'} = undef unless exists ( $params->{'days_in_advance'} ); $params->{'wants_digest'} = 0 unless exists ( $params->{'wants_digest'} ); @@ -181,6 +183,22 @@ END_SQL foreach my $transport ( @{$params->{'message_transport_types'}}) { my $success = $sth->execute( $borrower_message_preference_id, $transport ); } + + my $new_preferences_json = to_json(GetPatronMessagingPreferences($params->{borrowernumber}, $params->{message_attribute_id}),{ utf8 => 1, canonical => 1 }); + + if ( $preferences_json ne $new_preferences_json ) { + my $info; + $preferences_json =~ s/,/, /g; + $new_preferences_json =~ s/,/, /g; + $preferences_json =~ s/\[\]/null/g; + $new_preferences_json =~ s/\[\]/null/g; + + $info = { + before => $preferences_json, + after => $new_preferences_json + }; + logaction("MEMBERS","MODIFY",$params->{borrowernumber}, "Messaging preference: after: ". $new_preferences_json . " before: " . $preferences_json); + } } return; } @@ -259,6 +277,26 @@ sub SetMessagingPreferencesFromDefaults { } } +sub GetPatronMessagingPreferences { + my ($borrowernumber, $message_attribute_id) = @_; + my $sql = <<'END_SQL'; +SELECT message_name, days_in_advance, wants_digest, +borrower_message_transport_preferences.message_transport_type +FROM borrower_message_preferences +INNER JOIN borrower_message_transport_preferences +ON borrower_message_transport_preferences.borrower_message_preference_id = borrower_message_preferences.borrower_message_preference_id +INNER JOIN message_attributes +ON borrower_message_preferences.message_attribute_id = message_attributes.message_attribute_id + AND borrowernumber = ? + AND borrower_message_preferences.message_attribute_id = ? +END_SQL + + my $sth = C4::Context->dbh->prepare($sql); + $sth->execute($borrowernumber, $message_attribute_id); + my $rows = $sth->fetchall_arrayref({}); + return $rows; +} + =head1 TABLES =head2 message_queue -- 2.34.1