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

(-)a/C4/Letters.pm (-1 / +15 lines)
Lines 994-1000 sub SendQueuedMessages { Link Here
994
                }
994
                }
995
                $message->{to_address}  = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber
995
                $message->{to_address}  = $patron->smsalertnumber; #Sometime this is set to email - sms should always use smsalertnumber
996
                $message->{to_address} .= '@' . $sms_provider->domain();
996
                $message->{to_address} .= '@' . $sms_provider->domain();
997
                _update_message_to_address($message->{'message_id'},$message->{to_address});
997
998
                # Check for possible from_address override
999
                my $from_address = C4::Context->preference('EmailSMSSendDriverFromAddress');
1000
                if ($from_address && $message->{from_address} ne $from_address) {
1001
                    $message->{from_address} = $from_address;
1002
                    _update_message_from_address($message->{'message_id'}, $message->{from_address});
1003
                }
1004
1005
                _update_message_to_address($message->{'message_id'}, $message->{to_address});
998
                _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
1006
                _send_message_by_email( $message, $params->{'username'}, $params->{'password'}, $params->{'method'} );
999
            } else {
1007
            } else {
1000
                _send_message_by_sms( $message );
1008
                _send_message_by_sms( $message );
Lines 1389-1394 sub _update_message_to_address { Link Here
1389
    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
1397
    $dbh->do('UPDATE message_queue SET to_address=? WHERE message_id=?',undef,($to,$id));
1390
}
1398
}
1391
1399
1400
sub _update_message_from_address {
1401
    my ($message_id, $from_address) = @_;
1402
    my $dbh = C4::Context->dbh();
1403
    $dbh->do('UPDATE message_queue SET from_address = ? WHERE message_id = ?', undef, ($from_address, $message_id));
1404
}
1405
1392
sub _set_message_status {
1406
sub _set_message_status {
1393
    my $params = shift or return;
1407
    my $params = shift or return;
1394
1408
(-)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 136-141 Patrons: Link Here
136
         - pref: SMSSendUsername
136
         - pref: SMSSendUsername
137
         - "and a password"
137
         - "and a password"
138
         - pref: SMSSendPassword
138
         - pref: SMSSendPassword
139
         - ". Override from address with"
140
         - pref: EmailSMSSendDriverFromAddress
141
         - "for emails sent using \"Email\" send driver."
139
     -
142
     -
140
         - pref: uppercasesurnames
143
         - pref: uppercasesurnames
141
           choices:
144
           choices:
(-)a/t/db_dependent/Letters.t (-6 / +34 lines)
Lines 692-699 subtest 'TranslateNotices' => sub { Link Here
692
692
693
subtest 'SendQueuedMessages' => sub {
693
subtest 'SendQueuedMessages' => sub {
694
694
695
    plan tests => 4;
695
    plan tests => 6;
696
696
    t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' );
697
    t::lib::Mocks::mock_preference( 'SMSSendDriver', 'Email' );
698
    t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', '');
699
697
    my $patron = Koha::Patrons->find($borrowernumber);
700
    my $patron = Koha::Patrons->find($borrowernumber);
698
    $dbh->do(q|
701
    $dbh->do(q|
699
        INSERT INTO message_queue(borrowernumber, subject, content, message_transport_type, status, letter_code)
702
        INSERT INTO message_queue(borrowernumber, subject, content, message_transport_type, status, letter_code)
Lines 707-717 subtest 'SendQueuedMessages' => sub { Link Here
707
    $patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() } )->store;
710
    $patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() } )->store;
708
    $message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
711
    $message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward
709
    C4::Letters::SendQueuedMessages();
712
    C4::Letters::SendQueuedMessages();
710
    my $sms_message_address = $schema->resultset('MessageQueue')->search({
713
714
    my $message = $schema->resultset('MessageQueue')->search({
711
        borrowernumber => $borrowernumber,
715
        borrowernumber => $borrowernumber,
712
        status => 'sent'
716
        status => 'sent'
713
    })->next()->to_address();
717
    })->next();
714
    is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' );
718
719
    is( $message->to_address(), '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address not set' );
720
    is(
721
        $message->from_address(),
722
        'from@example.com',
723
        'SendQueuedMessages uses message queue item \"from address\" for SMS by email when EmailSMSSendDriverFromAddress system preference is not set'
724
    );
725
726
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber, status => 'sent'})->delete(); #clear borrower queue
727
728
    t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com');
729
730
    $message_id = C4::Letters::EnqueueLetter($my_message);
731
    C4::Letters::SendQueuedMessages();
732
733
    $message = $schema->resultset('MessageQueue')->search({
734
        borrowernumber => $borrowernumber,
735
        status => 'sent'
736
    })->next();
737
738
    is(
739
        $message->from_address(),
740
        'override@example.com',
741
        'SendQueuedMessages uses EmailSMSSendDriverFromAddress value for SMS by email when EmailSMSSendDriverFromAddress is set'
742
    );
743
715
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue
744
    $schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue
716
    $my_message->{to_address} = 'fixme@kidclamp.iswrong';
745
    $my_message->{to_address} = 'fixme@kidclamp.iswrong';
717
    $message_id = C4::Letters::EnqueueLetter($my_message);
746
    $message_id = C4::Letters::EnqueueLetter($my_message);
Lines 723-729 subtest 'SendQueuedMessages' => sub { Link Here
723
    is ( $number_attempted, 0, 'There were no password reset messages for SendQueuedMessages to attempt.' );
752
    is ( $number_attempted, 0, 'There were no password reset messages for SendQueuedMessages to attempt.' );
724
753
725
    C4::Letters::SendQueuedMessages();
754
    C4::Letters::SendQueuedMessages();
726
    $sms_message_address = $schema->resultset('MessageQueue')->search({
755
    my $sms_message_address = $schema->resultset('MessageQueue')->search({
727
        borrowernumber => $borrowernumber,
756
        borrowernumber => $borrowernumber,
728
        status => 'sent'
757
        status => 'sent'
729
    })->next()->to_address();
758
    })->next()->to_address();
730
- 

Return to bug 20356