Lines 1000-1008
sub EnqueueLetter {
Link Here
|
1000 |
my $dbh = C4::Context->dbh(); |
1000 |
my $dbh = C4::Context->dbh(); |
1001 |
my $statement = << 'ENDSQL'; |
1001 |
my $statement = << 'ENDSQL'; |
1002 |
INSERT INTO message_queue |
1002 |
INSERT INTO message_queue |
1003 |
( borrowernumber, subject, content, metadata, letter_code, message_transport_type, status, time_queued, to_address, from_address, content_type ) |
1003 |
( borrowernumber, subject, content, metadata, letter_code, message_transport_type, status, time_queued, to_address, from_address, content_type, delivery_note ) |
1004 |
VALUES |
1004 |
VALUES |
1005 |
( ?, ?, ?, ?, ?, ?, ?, NOW(), ?, ?, ? ) |
1005 |
( ?, ?, ?, ?, ?, ?, ?, NOW(), ?, ?, ?, ? ) |
1006 |
ENDSQL |
1006 |
ENDSQL |
1007 |
|
1007 |
|
1008 |
my $sth = $dbh->prepare($statement); |
1008 |
my $sth = $dbh->prepare($statement); |
Lines 1017-1022
ENDSQL
Link Here
|
1017 |
$params->{'to_address'}, # to_address |
1017 |
$params->{'to_address'}, # to_address |
1018 |
$params->{'from_address'}, # from_address |
1018 |
$params->{'from_address'}, # from_address |
1019 |
$params->{'letter'}->{'content-type'}, # content_type |
1019 |
$params->{'letter'}->{'content-type'}, # content_type |
|
|
1020 |
$params->{'delivery_note'} || '', # delivery_note |
1020 |
); |
1021 |
); |
1021 |
return $dbh->last_insert_id(undef,undef,'message_queue', undef); |
1022 |
return $dbh->last_insert_id(undef,undef,'message_queue', undef); |
1022 |
} |
1023 |
} |
Lines 1113-1119
sub GetQueuedMessages {
Link Here
|
1113 |
|
1114 |
|
1114 |
my $dbh = C4::Context->dbh(); |
1115 |
my $dbh = C4::Context->dbh(); |
1115 |
my $statement = << 'ENDSQL'; |
1116 |
my $statement = << 'ENDSQL'; |
1116 |
SELECT message_id, borrowernumber, subject, content, message_transport_type, status, time_queued |
1117 |
SELECT message_id, borrowernumber, subject, content, message_transport_type, status, time_queued, delivery_note |
1117 |
FROM message_queue |
1118 |
FROM message_queue |
1118 |
ENDSQL |
1119 |
ENDSQL |
1119 |
|
1120 |
|
Lines 1167-1173
sub GetMessage {
Link Here
|
1167 |
return unless $message_id; |
1168 |
return unless $message_id; |
1168 |
my $dbh = C4::Context->dbh; |
1169 |
my $dbh = C4::Context->dbh; |
1169 |
return $dbh->selectrow_hashref(q| |
1170 |
return $dbh->selectrow_hashref(q| |
1170 |
SELECT message_id, borrowernumber, subject, content, metadata, letter_code, message_transport_type, status, time_queued, to_address, from_address, content_type |
1171 |
SELECT message_id, borrowernumber, subject, content, metadata, letter_code, message_transport_type, status, time_queued, to_address, from_address, content_type, delivery_note |
1171 |
FROM message_queue |
1172 |
FROM message_queue |
1172 |
WHERE message_id = ? |
1173 |
WHERE message_id = ? |
1173 |
|, {}, $message_id ); |
1174 |
|, {}, $message_id ); |
Lines 1257-1263
sub _get_unsent_messages {
Link Here
|
1257 |
|
1258 |
|
1258 |
my $dbh = C4::Context->dbh(); |
1259 |
my $dbh = C4::Context->dbh(); |
1259 |
my $statement = << 'ENDSQL'; |
1260 |
my $statement = << 'ENDSQL'; |
1260 |
SELECT mq.message_id, mq.borrowernumber, mq.subject, mq.content, mq.message_transport_type, mq.status, mq.time_queued, mq.from_address, mq.to_address, mq.content_type, b.branchcode, mq.letter_code |
1261 |
SELECT mq.message_id, mq.borrowernumber, mq.subject, mq.content, mq.message_transport_type, mq.status, mq.time_queued, mq.from_address, mq.to_address, mq.content_type, b.branchcode, mq.letter_code, mq.delivery_note |
1261 |
FROM message_queue mq |
1262 |
FROM message_queue mq |
1262 |
LEFT JOIN borrowers b ON b.borrowernumber = mq.borrowernumber |
1263 |
LEFT JOIN borrowers b ON b.borrowernumber = mq.borrowernumber |
1263 |
WHERE status = ? |
1264 |
WHERE status = ? |
Lines 1296-1302
sub _send_message_by_email {
Link Here
|
1296 |
unless ($member) { |
1297 |
unless ($member) { |
1297 |
warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; |
1298 |
warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; |
1298 |
_set_message_status( { message_id => $message->{'message_id'}, |
1299 |
_set_message_status( { message_id => $message->{'message_id'}, |
1299 |
status => 'failed' } ); |
1300 |
status => 'failed', |
|
|
1301 |
delivery_note => 'Invalid borrowernumber '.$message->{borrowernumber} } ); |
1300 |
return; |
1302 |
return; |
1301 |
} |
1303 |
} |
1302 |
$to_address = C4::Members::GetNoticeEmailAddress( $message->{'borrowernumber'} ); |
1304 |
$to_address = C4::Members::GetNoticeEmailAddress( $message->{'borrowernumber'} ); |
Lines 1304-1310
sub _send_message_by_email {
Link Here
|
1304 |
# warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})"; |
1306 |
# warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})"; |
1305 |
# warning too verbose for this more common case? |
1307 |
# warning too verbose for this more common case? |
1306 |
_set_message_status( { message_id => $message->{'message_id'}, |
1308 |
_set_message_status( { message_id => $message->{'message_id'}, |
1307 |
status => 'failed' } ); |
1309 |
status => 'failed', |
|
|
1310 |
delivery_note => 'Unable to find an email address for this borrower' } ); |
1308 |
return; |
1311 |
return; |
1309 |
} |
1312 |
} |
1310 |
} |
1313 |
} |
Lines 1346-1356
sub _send_message_by_email {
Link Here
|
1346 |
|
1349 |
|
1347 |
if ( sendmail( %sendmail_params ) ) { |
1350 |
if ( sendmail( %sendmail_params ) ) { |
1348 |
_set_message_status( { message_id => $message->{'message_id'}, |
1351 |
_set_message_status( { message_id => $message->{'message_id'}, |
1349 |
status => 'sent' } ); |
1352 |
status => 'sent', |
|
|
1353 |
delivery_note => '' } ); |
1350 |
return 1; |
1354 |
return 1; |
1351 |
} else { |
1355 |
} else { |
1352 |
_set_message_status( { message_id => $message->{'message_id'}, |
1356 |
_set_message_status( { message_id => $message->{'message_id'}, |
1353 |
status => 'failed' } ); |
1357 |
status => 'failed', |
|
|
1358 |
delivery_note => $Mail::Sendmail::error } ); |
1354 |
carp $Mail::Sendmail::error; |
1359 |
carp $Mail::Sendmail::error; |
1355 |
return; |
1360 |
return; |
1356 |
} |
1361 |
} |
Lines 1399-1411
sub _send_message_by_sms {
Link Here
|
1399 |
|
1404 |
|
1400 |
unless ( $member->{smsalertnumber} ) { |
1405 |
unless ( $member->{smsalertnumber} ) { |
1401 |
_set_message_status( { message_id => $message->{'message_id'}, |
1406 |
_set_message_status( { message_id => $message->{'message_id'}, |
1402 |
status => 'failed' } ); |
1407 |
status => 'failed', |
|
|
1408 |
delivery_note => 'Missing SMS number' } ); |
1403 |
return; |
1409 |
return; |
1404 |
} |
1410 |
} |
1405 |
|
1411 |
|
1406 |
if ( _is_duplicate( $message ) ) { |
1412 |
if ( _is_duplicate( $message ) ) { |
1407 |
_set_message_status( { message_id => $message->{'message_id'}, |
1413 |
_set_message_status( { message_id => $message->{'message_id'}, |
1408 |
status => 'failed' } ); |
1414 |
status => 'failed', |
|
|
1415 |
delivery_note => 'Message is duplicate' } ); |
1409 |
return; |
1416 |
return; |
1410 |
} |
1417 |
} |
1411 |
|
1418 |
|
Lines 1413-1419
sub _send_message_by_sms {
Link Here
|
1413 |
message => $message->{'content'}, |
1420 |
message => $message->{'content'}, |
1414 |
} ); |
1421 |
} ); |
1415 |
_set_message_status( { message_id => $message->{'message_id'}, |
1422 |
_set_message_status( { message_id => $message->{'message_id'}, |
1416 |
status => ($success ? 'sent' : 'failed') } ); |
1423 |
status => ($success ? 'sent' : 'failed'), |
|
|
1424 |
delivery_note => ($success ? '' : 'No notes from SMS driver') } ); |
1425 |
|
1417 |
return $success; |
1426 |
return $success; |
1418 |
} |
1427 |
} |
1419 |
|
1428 |
|
Lines 1431-1439
sub _set_message_status {
Link Here
|
1431 |
} |
1440 |
} |
1432 |
|
1441 |
|
1433 |
my $dbh = C4::Context->dbh(); |
1442 |
my $dbh = C4::Context->dbh(); |
1434 |
my $statement = 'UPDATE message_queue SET status= ? WHERE message_id = ?'; |
1443 |
my $statement = 'UPDATE message_queue SET status= ?, delivery_note= ? WHERE message_id = ?'; |
1435 |
my $sth = $dbh->prepare( $statement ); |
1444 |
my $sth = $dbh->prepare( $statement ); |
1436 |
my $result = $sth->execute( $params->{'status'}, |
1445 |
my $result = $sth->execute( $params->{'status'}, |
|
|
1446 |
$params->{'delivery_note'} || '', |
1437 |
$params->{'message_id'} ); |
1447 |
$params->{'message_id'} ); |
1438 |
return $result; |
1448 |
return $result; |
1439 |
} |
1449 |
} |