@@ -, +, @@ action logs --- C4/Members/Messaging.pm | 44 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) --- a/C4/Members/Messaging.pm +++ a/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 --