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

(-)a/C4/Letters.pm (-1 / +15 lines)
Lines 1063-1069 sub SendQueuedMessages { Link Here
1063
                }
1063
                }
1064
                $message->{to_address}  = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber
1064
                $message->{to_address}  = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber
1065
                $message->{to_address} .= '@' . $sms_provider->domain();
1065
                $message->{to_address} .= '@' . $sms_provider->domain();
1066
                _update_message_to_address($message->{'message_id'},$message->{to_address});
1066
1067
                # Check for possible from_address override
1068
                my $from_address = C4::Context->preference('EmailSMSSendDriverFromAddress');
1069
                if ($from_address && $message->{from_address} ne $from_address) {
1070
                    $message->{from_address} = $from_address;
1071
                    _update_message_from_address($message->{'message_id'}, $message->{from_address});
1072
                }
1073
1074
                _update_message_to_address($message->{'message_id'}, $message->{to_address});
1067
                _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
1075
                _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
1068
            } else {
1076
            } else {
1069
                _send_message_by_sms( $message );
1077
                _send_message_by_sms( $message );
Lines 1436-1441 sub _update_message_to_address { Link Here
1436
    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
1444
    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
1437
}
1445
}
1438
1446
1447
sub _update_message_from_address {
1448
    my ($message_id, $from_address) = @_;
1449
    my $dbh = C4::Context->dbh();
1450
    $dbh->do('UPDATE message_queue SET from_address = ? WHERE message_id = ?', undef, ($from_address, $message_id));
1451
}
1452
1439
sub _set_message_status {
1453
sub _set_message_status {
1440
    my $params = shift or return;
1454
    my $params = shift or return;
1441
1455
(-)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 134-139 Patrons: Link Here
134
         - pref: SMSSendUsername
134
         - pref: SMSSendUsername
135
         - "and a password"
135
         - "and a password"
136
         - pref: SMSSendPassword
136
         - pref: SMSSendPassword
137
         - ". Override from address with"
138
         - pref: EmailSMSSendDriverFromAddress
139
         - "for emails sent using \"Email\" send driver."
137
     -
140
     -
138
         - pref: uppercasesurnames
141
         - pref: uppercasesurnames
139
           choices:
142
           choices:
(-)a/t/db_dependent/Letters.t (-6 / +33 lines)
Lines 633-640 subtest 'TranslateNotices' => sub { Link Here
633
633
634
subtest 'SendQueuedMessages' => sub {
634
subtest 'SendQueuedMessages' => sub {
635
635
636
    plan tests => 3;
636
    plan tests => 5;
637
    t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' );
637
    t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' );
638
    t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', '');
639
638
    my $patron = Koha::Patrons->find($borrowernumber);
640
    my $patron = Koha::Patrons->find($borrowernumber);
639
    $dbh->do(q|
641
    $dbh->do(q|
640
        INSERT INTO message_queue(borrowernumber, subject, content, message_transport_type, status, letter_code)
642
        INSERT INTO message_queue(borrowernumber, subject, content, message_transport_type, status, letter_code)
Lines 648-663 subtest 'SendQueuedMessages' => sub { Link Here
648
    ModMember( borrowernumber => $borrowernumber, smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() );
650
    ModMember( borrowernumber => $borrowernumber, smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() );
649
    $message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
651
    $message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
650
    C4::Letters::SendQueuedMessages();
652
    C4::Letters::SendQueuedMessages();
651
    my $sms_message_address = $schema->resultset('MessageQueue')->search({
653
654
    my $message = $schema->resultset('MessageQueue')->search({
652
        borrowernumber => $borrowernumber,
655
        borrowernumber => $borrowernumber,
653
        status => 'sent'
656
        status => 'sent'
654
    })->next()->to_address();
657
    })->next();
655
    is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' );
658
659
    is( $message->to_address(), '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' );
660
    is(
661
        $message->from_address(),
662
        'from@example.com',
663
        'SendQueuedMessages uses message queue item \"from address\" for SMS by email when EmailSMSSendDriverFromAddress system preference is not set'
664
    );
665
666
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber, status => 'sent'})->delete(); #clear borrower queue
667
668
    t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com');
669
670
    $message_id = C4::Letters::EnqueueLetter($my_message);
671
    C4::Letters::SendQueuedMessages();
672
673
    $message = $schema->resultset('MessageQueue')->search({
674
        borrowernumber => $borrowernumber,
675
        status => 'sent'
676
    })->next();
677
678
    is(
679
        $message->from_address(),
680
        'override@example.com',
681
        'SendQueuedMessages uses EmailSMSSendDriverFromAddress value for SMS by email when EmailSMSSendDriverFromAddress is set'
682
    );
683
656
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue
684
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue
657
    $my_message->{to_address} = 'fixme@kidclamp.iswrong';
685
    $my_message->{to_address} = 'fixme@kidclamp.iswrong';
658
    $message_id = C4::Letters::EnqueueLetter($my_message);
686
    $message_id = C4::Letters::EnqueueLetter($my_message);
659
    C4::Letters::SendQueuedMessages();
687
    C4::Letters::SendQueuedMessages();
660
    $sms_message_address = $schema->resultset('MessageQueue')->search({
688
    my $sms_message_address = $schema->resultset('MessageQueue')->search({
661
        borrowernumber => $borrowernumber,
689
        borrowernumber => $borrowernumber,
662
        status => 'sent'
690
        status => 'sent'
663
    })->next()->to_address();
691
    })->next()->to_address();
664
- 

Return to bug 20356