View | Details | Raw Unified | Return to bug 14806
Collapse All | Expand All

(-)a/C4/Members/Messaging.pm (-4 / +41 lines)
Lines 20-27 package C4::Members::Messaging; Link Here
20
use strict;
20
use strict;
21
use warnings;
21
use warnings;
22
use C4::Context;
22
use C4::Context;
23
23
use JSON qw( to_json );
24
24
use C4::Log qw( logaction );
25
25
26
=head1 NAME
26
=head1 NAME
27
27
Lines 120-126 returns nothing useful. Link Here
120
120
121
sub SetMessagingPreference {
121
sub SetMessagingPreference {
122
    my $params = shift;
122
    my $params = shift;
123
123
    
124
    unless (exists $params->{borrowernumber} xor exists $params->{categorycode}) { # yes, xor
124
    unless (exists $params->{borrowernumber} xor exists $params->{categorycode}) { # yes, xor
125
        warn "SetMessagingPreference called without exactly one of borrowernumber or categorycode";
125
        warn "SetMessagingPreference called without exactly one of borrowernumber or categorycode";
126
        return;
126
        return;
Lines 131-136 sub SetMessagingPreference { Link Here
131
            return;
131
            return;
132
        }
132
        }
133
    }
133
    }
134
    my $preferences_json = to_json(GetPatronMessagingPreferences($params->{borrowernumber}, $params->{message_attribute_id}),{ utf8 => 1, canonical => 1 });
135
        
134
    $params->{'days_in_advance'} = undef unless exists ( $params->{'days_in_advance'} );
136
    $params->{'days_in_advance'} = undef unless exists ( $params->{'days_in_advance'} );
135
    $params->{'wants_digest'}    = 0     unless exists ( $params->{'wants_digest'} );
137
    $params->{'wants_digest'}    = 0     unless exists ( $params->{'wants_digest'} );
136
138
Lines 181-186 END_SQL Link Here
181
        foreach my $transport ( @{$params->{'message_transport_types'}}) {
183
        foreach my $transport ( @{$params->{'message_transport_types'}}) {
182
            my $success = $sth->execute( $borrower_message_preference_id, $transport );
184
            my $success = $sth->execute( $borrower_message_preference_id, $transport );
183
        }
185
        }
186
    
187
        my $new_preferences_json = to_json(GetPatronMessagingPreferences($params->{borrowernumber}, $params->{message_attribute_id}),{ utf8 => 1, canonical => 1 });
188
        
189
        if ( $preferences_json ne $new_preferences_json ) {
190
            my $info;
191
            $preferences_json =~ s/,/, /g;
192
            $new_preferences_json =~ s/,/, /g;
193
            $preferences_json =~ s/\[\]/null/g;
194
            $new_preferences_json =~ s/\[\]/null/g;
195
            
196
            $info = {
197
                before => $preferences_json,
198
                after  => $new_preferences_json
199
            };
200
            logaction("MEMBERS","MODIFY",$params->{borrowernumber}, "Messaging preference: after: ". $new_preferences_json . " before: " . $preferences_json);
201
        }
184
    }
202
    }
185
    return;    
203
    return;    
186
}
204
}
Lines 259-264 sub SetMessagingPreferencesFromDefaults { Link Here
259
    }
277
    }
260
}
278
}
261
279
280
sub GetPatronMessagingPreferences {
281
    my ($borrowernumber, $message_attribute_id) = @_;
282
    my $sql = <<'END_SQL';
283
SELECT message_name, days_in_advance, wants_digest,
284
borrower_message_transport_preferences.message_transport_type
285
FROM borrower_message_preferences
286
INNER JOIN borrower_message_transport_preferences
287
ON     borrower_message_transport_preferences.borrower_message_preference_id = borrower_message_preferences.borrower_message_preference_id
288
INNER JOIN message_attributes
289
ON     borrower_message_preferences.message_attribute_id = message_attributes.message_attribute_id
290
 AND borrowernumber = ?
291
 AND borrower_message_preferences.message_attribute_id = ?
292
END_SQL
293
294
    my $sth = C4::Context->dbh->prepare($sql);
295
    $sth->execute($borrowernumber, $message_attribute_id);
296
    my $rows = $sth->fetchall_arrayref({});
297
    return $rows;
298
}
299
262
=head1 TABLES
300
=head1 TABLES
263
301
264
=head2 message_queue
302
=head2 message_queue
265
- 

Return to bug 14806