Lines 35-124
This module lets you modify a patron's messaging preferences.
Link Here
|
35 |
|
35 |
|
36 |
=head1 FUNCTIONS |
36 |
=head1 FUNCTIONS |
37 |
|
37 |
|
38 |
=head2 SetMessagingPreference |
|
|
39 |
|
40 |
This method defines how a user (or a default for a patron category) wants to get a certain |
41 |
message delivered. The list of valid message types can be delivered can be found in the |
42 |
C<message_attributes> table, and the list of valid message transports can be |
43 |
found in the C<message_transport_types> table. |
44 |
|
45 |
C4::Members::Messaging::SetMessagingPreference( { borrowernumber => $borrower->{'borrowernumber'} |
46 |
message_attribute_id => $message_attribute_id, |
47 |
message_transport_types => [ qw( email sms ) ], |
48 |
days_in_advance => 5 |
49 |
wants_digest => 1 } ) |
50 |
|
51 |
returns nothing useful. |
52 |
|
53 |
=cut |
54 |
|
55 |
sub SetMessagingPreference { |
56 |
my $params = shift; |
57 |
|
58 |
unless (exists $params->{borrowernumber} xor exists $params->{categorycode}) { # yes, xor |
59 |
warn "SetMessagingPreference called without exactly one of borrowernumber or categorycode"; |
60 |
return; |
61 |
} |
62 |
foreach my $required ( qw( message_attribute_id message_transport_types ) ) { |
63 |
if ( ! exists $params->{ $required } ) { |
64 |
warn "SetMessagingPreference called without required parameter: $required"; |
65 |
return; |
66 |
} |
67 |
} |
68 |
$params->{'days_in_advance'} = undef unless exists ( $params->{'days_in_advance'} ); |
69 |
$params->{'wants_digest'} = 0 unless exists ( $params->{'wants_digest'} ); |
70 |
|
71 |
my $dbh = C4::Context->dbh(); |
72 |
|
73 |
my $delete_sql = <<'END_SQL'; |
74 |
DELETE FROM borrower_message_preferences |
75 |
WHERE message_attribute_id = ? |
76 |
END_SQL |
77 |
my @bind_params = ( $params->{'message_attribute_id'} ); |
78 |
if ( exists $params->{'borrowernumber'} ) { |
79 |
$delete_sql .= " AND borrowernumber = ? "; |
80 |
push @bind_params, $params->{borrowernumber}; |
81 |
} else { |
82 |
$delete_sql .= " AND categorycode = ? "; |
83 |
push @bind_params, $params->{categorycode}; |
84 |
} |
85 |
my $sth = $dbh->prepare( $delete_sql ); |
86 |
my $deleted = $sth->execute( @bind_params ); |
87 |
|
88 |
if ( $params->{'message_transport_types'} ) { |
89 |
my $insert_bmp = <<'END_SQL'; |
90 |
INSERT INTO borrower_message_preferences |
91 |
(borrower_message_preference_id, borrowernumber, categorycode, message_attribute_id, days_in_advance, wants_digest) |
92 |
VALUES |
93 |
(NULL, ?, ?, ?, ?, ?) |
94 |
END_SQL |
95 |
|
96 |
$sth = C4::Context->dbh()->prepare($insert_bmp); |
97 |
# set up so that we can easily construct the insert SQL |
98 |
$params->{'borrowernumber'} = undef unless exists ( $params->{'borrowernumber'} ); |
99 |
$params->{'categorycode'} = undef unless exists ( $params->{'categorycode'} ); |
100 |
my $success = $sth->execute( $params->{'borrowernumber'}, |
101 |
$params->{'categorycode'}, |
102 |
$params->{'message_attribute_id'}, |
103 |
$params->{'days_in_advance'}, |
104 |
$params->{'wants_digest'} ); |
105 |
# my $borrower_message_preference_id = $dbh->last_insert_id(); |
106 |
my $borrower_message_preference_id = $dbh->{'mysql_insertid'}; |
107 |
|
108 |
my $insert_bmtp = <<'END_SQL'; |
109 |
INSERT INTO borrower_message_transport_preferences |
110 |
(borrower_message_preference_id, message_transport_type) |
111 |
VALUES |
112 |
(?, ?) |
113 |
END_SQL |
114 |
$sth = C4::Context->dbh()->prepare($insert_bmtp); |
115 |
foreach my $transport ( @{$params->{'message_transport_types'}}) { |
116 |
my $success = $sth->execute( $borrower_message_preference_id, $transport ); |
117 |
} |
118 |
} |
119 |
return; |
120 |
} |
121 |
|
122 |
=head1 TABLES |
38 |
=head1 TABLES |
123 |
|
39 |
|
124 |
=head2 message_queue |
40 |
=head2 message_queue |
125 |
- |
|
|