Lines 38-43
use Koha::SMS::Providers;
Link Here
|
38 |
use Koha::Email; |
38 |
use Koha::Email; |
39 |
use Koha::DateUtils qw( format_sqldatetime dt_from_string ); |
39 |
use Koha::DateUtils qw( format_sqldatetime dt_from_string ); |
40 |
|
40 |
|
|
|
41 |
use Scalar::Util qw ( blessed ); |
42 |
use Try::Tiny; |
43 |
|
41 |
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
44 |
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
42 |
|
45 |
|
43 |
BEGIN { |
46 |
BEGIN { |
Lines 1044-1061
sub SendQueuedMessages {
Link Here
|
1044 |
if $params->{'verbose'} or $debug; |
1047 |
if $params->{'verbose'} or $debug; |
1045 |
# This is just begging for subclassing |
1048 |
# This is just begging for subclassing |
1046 |
next MESSAGE if ( lc($message->{'message_transport_type'}) eq 'rss' ); |
1049 |
next MESSAGE if ( lc($message->{'message_transport_type'}) eq 'rss' ); |
1047 |
if ( lc( $message->{'message_transport_type'} ) eq 'email' ) { |
1050 |
eval { |
1048 |
_send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} ); |
1051 |
if ( lc( $message->{'message_transport_type'} ) eq 'email' ) { |
1049 |
} |
|
|
1050 |
elsif ( lc( $message->{'message_transport_type'} ) eq 'sms' ) { |
1051 |
if ( C4::Context->preference('SMSSendDriver') eq 'Email' ) { |
1052 |
my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} ); |
1053 |
my $sms_provider = Koha::SMS::Providers->find( $member->{'sms_provider_id'} ); |
1054 |
$message->{to_address} .= '@' . $sms_provider->domain(); |
1055 |
_send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} ); |
1052 |
_send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} ); |
1056 |
} else { |
|
|
1057 |
_send_message_by_sms( $message ); |
1058 |
} |
1053 |
} |
|
|
1054 |
elsif ( lc( $message->{'message_transport_type'} ) eq 'sms' ) { |
1055 |
if ( C4::Context->preference('SMSSendDriver') eq 'Email' ) { |
1056 |
my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} ); |
1057 |
my $sms_provider = Koha::SMS::Providers->find( $member->{'sms_provider_id'} ); |
1058 |
$message->{to_address} .= '@' . $sms_provider->domain(); |
1059 |
_send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} ); |
1060 |
} else { |
1061 |
_send_message_by_sms( $message ); |
1062 |
} |
1063 |
} |
1064 |
}; |
1065 |
if ($@) { |
1066 |
warn $@; |
1059 |
} |
1067 |
} |
1060 |
} |
1068 |
} |
1061 |
return scalar( @$unsent_messages ); |
1069 |
return scalar( @$unsent_messages ); |
Lines 1416-1427
sub _send_message_by_sms {
Link Here
|
1416 |
return; |
1424 |
return; |
1417 |
} |
1425 |
} |
1418 |
|
1426 |
|
1419 |
my $success = C4::SMS->send_sms( { destination => $member->{'smsalertnumber'}, |
1427 |
my $success; |
1420 |
message => $message->{'content'}, |
1428 |
try { |
1421 |
} ); |
1429 |
$success = C4::SMS->send_sms( { destination => $member->{'smsalertnumber'}, |
1422 |
_set_message_status( { message_id => $message->{'message_id'}, |
1430 |
message => $message->{'content'}, |
1423 |
status => ($success ? 'sent' : 'failed'), |
1431 |
} ); |
1424 |
delivery_note => ($success ? '' : 'No notes from SMS driver') } ); |
1432 |
_set_message_status( { message_id => $message->{'message_id'}, |
|
|
1433 |
status => ($success ? 'sent' : 'failed'), |
1434 |
delivery_note => ($success ? '' : 'No notes from SMS driver') } ); |
1435 |
|
1436 |
} catch { |
1437 |
if (blessed($_)){ |
1438 |
if ($_->isa('Koha::Exception::ConnectionFailed')){ |
1439 |
# Keep the message in pending status but |
1440 |
# add a delivery note explaining what happened |
1441 |
_set_message_status ( { message_id => $message->{'message_id'}, |
1442 |
status => 'pending', |
1443 |
delivery_note => 'Connection failed. Attempting to resend.' } ); |
1444 |
} |
1445 |
else { |
1446 |
# failsafe: if we catch and unknown exception, set message status to failed |
1447 |
_set_message_status( { message_id => $message->{'message_id'}, |
1448 |
status => 'failed', |
1449 |
delivery_note => 'Unknown exception.' } ); |
1450 |
$_->rethrow(); |
1451 |
} |
1452 |
} |
1453 |
else { |
1454 |
# failsafe |
1455 |
_set_message_status( { message_id => $message->{'message_id'}, |
1456 |
status => 'failed', |
1457 |
delivery_note => 'Unknown non-blessed exception.' } ); |
1458 |
die $_; |
1459 |
} |
1460 |
}; |
1425 |
|
1461 |
|
1426 |
return $success; |
1462 |
return $success; |
1427 |
} |
1463 |
} |