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

(-)a/C4/Letters.pm (-1 / +15 lines)
Lines 993-999 sub SendQueuedMessages { Link Here
993
                }
993
                }
994
                $message->{to_address}  = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber
994
                $message->{to_address}  = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber
995
                $message->{to_address} .= '@' . $sms_provider->domain();
995
                $message->{to_address} .= '@' . $sms_provider->domain();
996
                _update_message_to_address($message->{'message_id'},$message->{to_address});
996
997
                # Check for possible from_address override
998
                my $from_address = C4::Context->preference('EmailSMSSendDriverFromAddress');
999
                if ($from_address && $message->{from_address} ne $from_address) {
1000
                    $message->{from_address} = $from_address;
1001
                    _update_message_from_address($message->{'message_id'}, $message->{from_address});
1002
                }
1003
1004
                _update_message_to_address($message->{'message_id'}, $message->{to_address});
997
                _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
1005
                _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
998
            } else {
1006
            } else {
999
                _send_message_by_sms( $message );
1007
                _send_message_by_sms( $message );
Lines 1388-1393 sub _update_message_to_address { Link Here
1388
    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
1396
    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
1389
}
1397
}
1390
1398
1399
sub _update_message_from_address {
1400
    my ($message_id, $from_address) = @_;
1401
    my $dbh = C4::Context->dbh();
1402
    $dbh->do('UPDATE message_queue SET from_address = ? WHERE message_id = ?', undef, ($from_address, $message_id));
1403
}
1404
1391
sub _set_message_status {
1405
sub _set_message_status {
1392
    my $params = shift or return;
1406
    my $params = shift or return;
1393
1407
(-)a/installer/data/mysql/atomicupdate/bug_20356-add-syspref-EmailSMSSendDriverFromAddress.sql (+1 lines)
Line 0 Link Here
1
INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type`) VALUES  ('EmailSMSSendDriverFromAddress', '', '', 'Email SMS send driver from address override', 'Free');
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref (+3 lines)
Lines 128-133 Patrons: Link Here
128
         - pref: SMSSendUsername
128
         - pref: SMSSendUsername
129
         - "and a password"
129
         - "and a password"
130
         - pref: SMSSendPassword
130
         - pref: SMSSendPassword
131
         - ". Override from address with"
132
         - pref: EmailSMSSendDriverFromAddress
133
         - "for emails sent using \"Email\" send driver."
131
     -
134
     -
132
         - pref: uppercasesurnames
135
         - pref: uppercasesurnames
133
           choices:
136
           choices:
(-)a/t/db_dependent/Letters.t (-6 / +34 lines)
Lines 597-604 subtest 'TranslateNotices' => sub { Link Here
597
597
598
subtest 'SendQueuedMessages' => sub {
598
subtest 'SendQueuedMessages' => sub {
599
599
600
    plan tests => 4;
600
    plan tests => 6;
601
601
    t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' );
602
    t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' );
603
    t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', '');
604
602
    my $patron = Koha::Patrons->find($borrowernumber);
605
    my $patron = Koha::Patrons->find($borrowernumber);
603
    $dbh->do(q|
606
    $dbh->do(q|
604
        INSERT INTO message_queue(borrowernumber, subject, content, message_transport_type, status, letter_code)
607
        INSERT INTO message_queue(borrowernumber, subject, content, message_transport_type, status, letter_code)
Lines 612-622 subtest 'SendQueuedMessages' => sub { Link Here
612
    ModMember( borrowernumber => $borrowernumber, smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() );
615
    ModMember( borrowernumber => $borrowernumber, smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() );
613
    $message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
616
    $message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
614
    C4::Letters::SendQueuedMessages();
617
    C4::Letters::SendQueuedMessages();
615
    my $sms_message_address = $schema->resultset('MessageQueue')->search({
618
619
    my $message = $schema->resultset('MessageQueue')->search({
616
        borrowernumber => $borrowernumber,
620
        borrowernumber => $borrowernumber,
617
        status => 'sent'
621
        status => 'sent'
618
    })->next()->to_address();
622
    })->next();
619
    is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' );
623
624
    is( $message->to_address(), '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' );
625
    is(
626
        $message->from_address(),
627
        'from@example.com',
628
        'SendQueuedMessages uses message queue item \"from address\" for SMS by email when EmailSMSSendDriverFromAddress system preference is not set'
629
    );
630
631
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber, status => 'sent'})->delete(); #clear borrower queue
632
633
    t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com');
634
635
    $message_id = C4::Letters::EnqueueLetter($my_message);
636
    C4::Letters::SendQueuedMessages();
637
638
    $message = $schema->resultset('MessageQueue')->search({
639
        borrowernumber => $borrowernumber,
640
        status => 'sent'
641
    })->next();
642
643
    is(
644
        $message->from_address(),
645
        'override@example.com',
646
        'SendQueuedMessages uses EmailSMSSendDriverFromAddress value for SMS by email when EmailSMSSendDriverFromAddress is set'
647
    );
648
620
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue
649
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue
621
    $my_message->{to_address} = 'fixme@kidclamp.iswrong';
650
    $my_message->{to_address} = 'fixme@kidclamp.iswrong';
622
    $message_id = C4::Letters::EnqueueLetter($my_message);
651
    $message_id = C4::Letters::EnqueueLetter($my_message);
Lines 628-634 subtest 'SendQueuedMessages' => sub { Link Here
628
    is ( $number_attempted, 0, 'There were no password reset messages for SendQueuedMessages to attempt.' );
657
    is ( $number_attempted, 0, 'There were no password reset messages for SendQueuedMessages to attempt.' );
629
658
630
    C4::Letters::SendQueuedMessages();
659
    C4::Letters::SendQueuedMessages();
631
    $sms_message_address = $schema->resultset('MessageQueue')->search({
660
    my $sms_message_address = $schema->resultset('MessageQueue')->search({
632
        borrowernumber => $borrowernumber,
661
        borrowernumber => $borrowernumber,
633
        status => 'sent'
662
        status => 'sent'
634
    })->next()->to_address();
663
    })->next()->to_address();
635
- 

Return to bug 20356