use C4::SMS;
use C4::Debug;
use Koha::DateUtils;
+use Koha::SMS::Providers;
+
use Date::Calc qw( Add_Delta_Days );
use Encode;
use Carp;
use Koha::Email;
+use Koha::DateUtils qw( format_sqldatetime );
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
# warn "sending issues...";
my $userenv = C4::Context->userenv;
- my $branchdetails = GetBranchDetail($_->{'branchcode'});
+ my $library = Koha::Libraries->find( $_->{branchcode} );
my $letter = GetPreparedLetter (
module => 'serial',
letter_code => $letter_code,
my %mail = $message->create_message_headers(
{
to => $email,
- from => $branchdetails->{'branchemail'},
- replyto => $branchdetails->{'branchreplyto'},
- sender => $branchdetails->{'branchreturnpath'},
+ from => $library->branchemail,
+ replyto => $library->branchreplyto,
+ sender => $library->branchreturnpath,
subject => Encode::encode( "UTF-8", "" . $letter->{title} ),
message => $letter->{'is_html'}
? _wrap_html( Encode::encode( "UTF-8", $letter->{'content'} ),
if C4::Context->preference('ReplytoDefault');
$mail{'Sender'} = C4::Context->preference('ReturnpathDefault')
if C4::Context->preference('ReturnpathDefault');
+ $mail{'Bcc'} = $userenv->{emailaddress}
+ if C4::Context->preference("ClaimsBccCopy");
unless ( sendmail(%mail) ) {
carp $Mail::Sendmail::error;
}
# send an "account details" notice to a newly created user
elsif ( $type eq 'members' ) {
- my $branchdetails = GetBranchDetail($externalid->{'branchcode'});
+ my $library = Koha::Libraries->find( $externalid->{branchcode} )->unblessed;
my $letter = GetPreparedLetter (
module => 'members',
letter_code => $letter_code,
branchcode => $externalid->{'branchcode'},
tables => {
- 'branches' => $branchdetails,
+ 'branches' => $library,
'borrowers' => $externalid->{'borrowernumber'},
},
substitute => { 'borrowers.password' => $externalid->{'password'} },
my %mail = $email->create_message_headers(
{
to => $externalid->{'emailaddr'},
- from => $branchdetails->{'branchemail'},
- replyto => $branchdetails->{'branchreplyto'},
- sender => $branchdetails->{'branchreturnpath'},
+ from => $library->{branchemail},
+ replyto => $library->{branchreplyto},
+ sender => $library->{branchreturnpath},
subject => Encode::encode( "UTF-8", "" . $letter->{'title'} ),
message => $letter->{'is_html'}
? _wrap_html( Encode::encode( "UTF-8", $letter->{'content'} ),
parameters :
- $letter : a hash to letter fields (title & content useful)
- $table : the Koha table to parse.
- - $values : table record hashref
+ - $values_in : table record hashref
parse all fields from a table, and replace values in title & content with the appropriate value
(not exported sub, used only internally)
=cut
sub _parseletter {
- my ( $letter, $table, $values ) = @_;
+ my ( $letter, $table, $values_in ) = @_;
+
+ # Work on a local copy of $values_in (passed by reference) to avoid side effects
+ # in callers ( by changing / formatting values )
+ my $values = $values_in ? { %$values_in } : {};
if ( $table eq 'borrowers' && $values->{'dateexpiry'} ){
- my @dateexpiry = split /-/, $values->{'dateexpiry'};
-
- $values->{'dateexpiry'} = C4::Dates->new(
- sprintf(
- '%04d-%02d-%02d',
- Add_Delta_Days( @dateexpiry,0)
- ),
- 'iso'
- )->output();
+ $values->{'dateexpiry'} = format_sqldatetime( $values->{'dateexpiry'} );
}
if ( $table eq 'reserves' && $values->{'waitingdate'} ) {
my @waitingdate = split /-/, $values->{'waitingdate'};
$values->{'expirationdate'} = '';
- if( C4::Context->preference('ExpireReservesMaxPickUpDelay') &&
- C4::Context->preference('ReservesMaxPickUpDelay') ) {
+ if ( C4::Context->preference('ReservesMaxPickUpDelay') ) {
my $dt = dt_from_string();
$dt->add( days => C4::Context->preference('ReservesMaxPickUpDelay') );
- $values->{'expirationdate'} = output_pref({ dt => $dt, dateonly => 1 });
+ $values->{'expirationdate'} = output_pref( { dt => $dt, dateonly => 1 } );
}
$values->{'waitingdate'} = output_pref({ dt => dt_from_string( $values->{'waitingdate'} ), dateonly => 1 });
_send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
}
elsif ( lc( $message->{'message_transport_type'} ) eq 'sms' ) {
- _send_message_by_sms( $message );
+ if ( C4::Context->preference('SMSSendDriver') eq 'Email' ) {
+ my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} );
+ my $sms_provider = Koha::SMS::Providers->find( $member->{'sms_provider_id'} );
+ $message->{to_address} .= '@' . $sms_provider->domain();
+ _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
+ } else {
+ _send_message_by_sms( $message );
+ }
}
}
return scalar( @$unsent_messages );
my $branch_email = undef;
my $branch_replyto = undef;
my $branch_returnpath = undef;
- if ($member){
- my $branchdetail = GetBranchDetail( $member->{'branchcode'} );
- $branch_email = $branchdetail->{'branchemail'};
- $branch_replyto = $branchdetail->{'branchreplyto'};
- $branch_returnpath = $branchdetail->{'branchreturnpath'};
+ if ($member) {
+ my $library = Koha::Libraries->find( $member->{branchcode} );
+ $branch_email = $library->branchemail;
+ $branch_replyto = $library->branchreplyto;
+ $branch_returnpath = $library->branchreturnpath;
}
my $email = Koha::Email->new();
my %sendmail_params = $email->create_message_headers(
}
_update_message_to_address($message->{'message_id'},$to_address) unless $message->{to_address}; #if initial message address was empty, coming here means that a to address was found and queue should be updated
+
if ( sendmail( %sendmail_params ) ) {
_set_message_status( { message_id => $message->{'message_id'},
status => 'sent' } );