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

(-)a/C4/Circulation.pm (-2 / +4 lines)
Lines 49-54 use Koha::IssuingRules; Link Here
49
use Koha::Items;
49
use Koha::Items;
50
use Koha::Patrons;
50
use Koha::Patrons;
51
use Koha::Patron::Debarments;
51
use Koha::Patron::Debarments;
52
use Koha::Patron::Message::Preferences;
52
use Koha::Database;
53
use Koha::Database;
53
use Koha::Libraries;
54
use Koha::Libraries;
54
use Koha::Holds;
55
use Koha::Holds;
Lines 3337-3350 sub SendCirculationAlert { Link Here
3337
        CHECKOUT => 'Item_Checkout',
3338
        CHECKOUT => 'Item_Checkout',
3338
        RENEWAL  => 'Item_Checkout',
3339
        RENEWAL  => 'Item_Checkout',
3339
    );
3340
    );
3340
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences({
3341
    return unless my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
3341
        borrowernumber => $borrower->{borrowernumber},
3342
        borrowernumber => $borrower->{borrowernumber},
3342
        message_name   => $message_name{$type},
3343
        message_name   => $message_name{$type},
3343
    });
3344
    });
3345
3344
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3346
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3345
3347
3346
    my $schema = Koha::Database->new->schema;
3348
    my $schema = Koha::Database->new->schema;
3347
    my @transports = keys %{ $borrower_preferences->{transports} };
3349
    my @transports = keys %{ $borrower_preferences->message_transport_types };
3348
3350
3349
    # From the MySQL doc:
3351
    # From the MySQL doc:
3350
    # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables.
3352
    # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables.
(-)a/C4/Form/MessagingPreferences.pm (-4 / +5 lines)
Lines 133-153 sub set_form_values { Link Here
133
    # walk through the options and update them with these borrower_preferences
133
    # walk through the options and update them with these borrower_preferences
134
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
134
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
135
    PREF: foreach my $option ( @$messaging_options ) {
135
    PREF: foreach my $option ( @$messaging_options ) {
136
        my $pref = C4::Members::Messaging::GetMessagingPreferences( { %{ $target_params }, message_name => $option->{'message_name'} } );
136
        my $pref = Koha::Patron::Message::Preferences->find( { %{ $target_params }, message_attribute_id => $option->{'message_attribute_id'} } );
137
        $option->{ $option->{'message_name'} } = 1;
137
        $option->{ $option->{'message_name'} } = 1;
138
        # make a hashref of the days, selecting one.
138
        # make a hashref of the days, selecting one.
139
        if ( $option->{'takes_days'} ) {
139
        if ( $option->{'takes_days'} ) {
140
            my $days_in_advance = $pref->{'days_in_advance'} ? $pref->{'days_in_advance'} : 0;
140
            my $days_in_advance = $pref && $pref->days_in_advance ? $pref->days_in_advance : 0;
141
            $option->{days_in_advance} = $days_in_advance;
141
            $option->{days_in_advance} = $days_in_advance;
142
            @{$option->{'select_days'}} = map { {
142
            @{$option->{'select_days'}} = map { {
143
                day        => $_,
143
                day        => $_,
144
                selected   => $_ == $days_in_advance  }
144
                selected   => $_ == $days_in_advance  }
145
            } ( 0..MAX_DAYS_IN_ADVANCE );
145
            } ( 0..MAX_DAYS_IN_ADVANCE );
146
        }
146
        }
147
        foreach my $transport ( keys %{$pref->{'transports'}} ) {
147
        next unless $pref;
148
        foreach my $transport ( keys %{$pref->message_transport_types} ) {
148
            $option->{'transports_'.$transport} = 1;
149
            $option->{'transports_'.$transport} = 1;
149
        }
150
        }
150
        $option->{'digest'} = 1 if $pref->{'wants_digest'};
151
        $option->{'digest'} = 1 if $pref->wants_digest;
151
    }
152
    }
152
    $template->param(messaging_preferences => $messaging_options);
153
    $template->param(messaging_preferences => $messaging_options);
153
}
154
}
(-)a/C4/Members/Messaging.pm (-63 lines)
Lines 35-103 This module lets you modify a patron's messaging preferences. Link Here
35
35
36
=head1 FUNCTIONS
36
=head1 FUNCTIONS
37
37
38
=head2 GetMessagingPreferences
39
40
  my $preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrower->{'borrowernumber'},
41
                                                                       message_name   => 'DUE' } );
42
43
  my $preferences = C4::Members::Messaging::GetMessagingPreferences( { categorycode => 'LIBRARY',
44
                                                                       message_name   => 'DUE' } );
45
46
returns: a hashref of messaging preferences for a borrower or patron category for a particlar message_name
47
48
Requires either a borrowernumber or a categorycode key, but not both.
49
50
=cut
51
52
sub GetMessagingPreferences {
53
    my $params = shift;
54
55
    return unless exists $params->{message_name};
56
    return unless exists $params->{borrowernumber} xor exists $params->{categorycode}; # yes, xor
57
    my $sql = <<'END_SQL';
58
SELECT borrower_message_preferences.*,
59
       borrower_message_transport_preferences.message_transport_type,
60
       message_attributes.message_name,
61
       message_attributes.takes_days,
62
       message_transports.is_digest,
63
       message_transports.letter_module,
64
       message_transports.letter_code
65
FROM   borrower_message_preferences
66
LEFT JOIN borrower_message_transport_preferences
67
ON     borrower_message_transport_preferences.borrower_message_preference_id = borrower_message_preferences.borrower_message_preference_id
68
LEFT JOIN message_attributes
69
ON     message_attributes.message_attribute_id = borrower_message_preferences.message_attribute_id
70
LEFT JOIN message_transports
71
ON     message_transports.message_attribute_id = message_attributes.message_attribute_id
72
AND    message_transports.message_transport_type = borrower_message_transport_preferences.message_transport_type
73
AND    message_transports.is_digest = borrower_message_preferences.wants_digest
74
WHERE  message_attributes.message_name = ?
75
END_SQL
76
77
    my @bind_params = ( $params->{'message_name'} );
78
    if ( exists $params->{'borrowernumber'} ) {
79
        $sql .= " AND borrower_message_preferences.borrowernumber = ? ";
80
        push @bind_params, $params->{borrowernumber};
81
    } else {
82
        $sql .= " AND borrower_message_preferences.categorycode = ? ";
83
        push @bind_params, $params->{categorycode};
84
    }
85
86
    my $sth = C4::Context->dbh->prepare($sql);
87
    $sth->execute(@bind_params);
88
    my $return;
89
    my %transports; # helps build a list of unique message_transport_types
90
    ROW: while ( my $row = $sth->fetchrow_hashref() ) {
91
        next ROW unless $row->{'message_attribute_id'};
92
        $return->{'days_in_advance'} = $row->{'days_in_advance'} if defined $row->{'days_in_advance'};
93
        $return->{'wants_digest'}    = $row->{'wants_digest'}    if defined $row->{'wants_digest'};
94
        $return->{'letter_code'}     = $row->{'letter_code'};
95
        next unless defined $row->{'message_transport_type'};
96
        $return->{'transports'}->{ $row->{'message_transport_type'} } = $row->{'letter_code'};
97
    }
98
    return $return;
99
}
100
101
=head2 SetMessagingPreference
38
=head2 SetMessagingPreference
102
39
103
This method defines how a user (or a default for a patron category) wants to get a certain 
40
This method defines how a user (or a default for a patron category) wants to get a certain 
(-)a/C4/Reserves.pm (-5 / +8 lines)
Lines 47-52 use Koha::Libraries; Link Here
47
use Koha::IssuingRules;
47
use Koha::IssuingRules;
48
use Koha::Items;
48
use Koha::Items;
49
use Koha::ItemTypes;
49
use Koha::ItemTypes;
50
use Koha::Patron::Message::Preferences;
50
use Koha::Patrons;
51
use Koha::Patrons;
51
52
52
use List::MoreUtils qw( firstidx any );
53
use List::MoreUtils qw( firstidx any );
Lines 1648-1657 sub _koha_notify_reserve { Link Here
1648
    # Try to get the borrower's email address
1649
    # Try to get the borrower's email address
1649
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1650
    my $to_address = C4::Members::GetNoticeEmailAddress($borrowernumber);
1650
1651
1651
    my $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( {
1652
    my $messagingpref = Koha::Patron::Message::Preferences->find_with_message_name({
1652
            borrowernumber => $borrowernumber,
1653
        borrowernumber => $borrowernumber,
1653
            message_name => 'Hold_Filled'
1654
        message_name   => 'Hold_Filled',
1654
    } );
1655
    });
1655
1656
1656
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1657
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1657
1658
Lines 1691-1697 sub _koha_notify_reserve { Link Here
1691
        } );
1692
        } );
1692
    };
1693
    };
1693
1694
1694
    while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) {
1695
    my $transports = $messagingpref->message_transport_types if $messagingpref;
1696
    foreach my $mtt (keys %{$transports}) {
1697
        my $letter_code = $transports->{$mtt};
1695
        next if (
1698
        next if (
1696
               ( $mtt eq 'email' and not $to_address ) # No email address
1699
               ( $mtt eq 'email' and not $to_address ) # No email address
1697
            or ( $mtt eq 'sms'   and not $patron->smsalertnumber ) # No SMS number
1700
            or ( $mtt eq 'sms'   and not $patron->smsalertnumber ) # No SMS number
(-)a/Koha/Patron/Category.pm (-8 / +6 lines)
Lines 83-101 sub default_messaging { Link Here
83
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
83
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
84
    my @messaging;
84
    my @messaging;
85
    foreach my $option (@$messaging_options) {
85
    foreach my $option (@$messaging_options) {
86
        my $pref = C4::Members::Messaging::GetMessagingPreferences(
86
        my $pref = Koha::Patron::Message::Preferences->find_with_message_name({
87
            {
87
            categorycode   => $self->categorycode,
88
                categorycode => $self->categorycode,
88
            message_name   => $option->{message_name},
89
                message_name => $option->{message_name}
89
        });
90
            }
90
        next if !$pref || $pref && !$pref->message_transport_types;
91
        );
92
        next unless $pref->{transports};
93
        my $brief_pref = {
91
        my $brief_pref = {
94
            message_attribute_id      => $option->{message_attribute_id},
92
            message_attribute_id      => $option->{message_attribute_id},
95
            message_name              => $option->{message_name},
93
            message_name              => $option->{message_name},
96
            $option->{'message_name'} => 1,
94
            $option->{'message_name'} => 1,
97
        };
95
        };
98
        foreach my $transport ( keys %{ $pref->{transports} } ) {
96
        foreach my $transport ( keys %{ $pref->message_transport_types } ) {
99
            push @{ $brief_pref->{transports} }, { transport => $transport };
97
            push @{ $brief_pref->{transports} }, { transport => $transport };
100
        }
98
        }
101
        push @messaging, $brief_pref;
99
        push @messaging, $brief_pref;
(-)a/circ/returns.pl (-2 / +6 lines)
Lines 57-62 use Koha::Checkouts; Link Here
57
use Koha::Holds;
57
use Koha::Holds;
58
use Koha::Items;
58
use Koha::Items;
59
use Koha::Patrons;
59
use Koha::Patrons;
60
use Koha::Patron::Message::Preferences;
60
61
61
my $query = new CGI;
62
my $query = new CGI;
62
63
Lines 439-445 if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { Link Here
439
if ( $messages->{'ResFound'}) {
440
if ( $messages->{'ResFound'}) {
440
    my $reserve    = $messages->{'ResFound'};
441
    my $reserve    = $messages->{'ResFound'};
441
    my $patron = Koha::Patrons->find( $reserve->{borrowernumber} );
442
    my $patron = Koha::Patrons->find( $reserve->{borrowernumber} );
442
    my $holdmsgpreferences =  C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $reserve->{'borrowernumber'}, message_name   => 'Hold_Filled' } );
443
    my $holdmsgpreferences =  Koha::Patron::Message::Preferences->find_with_message_name({
444
        borrowernumber => $reserve->{'borrowernumber'},
445
        message_name   => 'Hold_Filled',
446
    });
443
    if ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) {
447
    if ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) {
444
        if ( $reserve->{'ResFound'} eq "Waiting" ) {
448
        if ( $reserve->{'ResFound'} eq "Waiting" ) {
445
            $template->param(
449
            $template->param(
Lines 481-487 if ( $messages->{'ResFound'}) { Link Here
481
            itemnumber     => $reserve->{'itemnumber'},
485
            itemnumber     => $reserve->{'itemnumber'},
482
            reservenotes   => $reserve->{'reservenotes'},
486
            reservenotes   => $reserve->{'reservenotes'},
483
            reserve_id     => $reserve->{reserve_id},
487
            reserve_id     => $reserve->{reserve_id},
484
            bormessagepref => $holdmsgpreferences->{'transports'},
488
            bormessagepref => $holdmsgpreferences->message_transport_types,
485
        );
489
        );
486
    } # else { ; }  # error?
490
    } # else { ; }  # error?
487
}
491
}
(-)a/misc/cronjobs/advance_notices.pl (-19 / +28 lines)
Lines 60-65 use C4::Log; Link Here
60
use Koha::Items;
60
use Koha::Items;
61
use Koha::Libraries;
61
use Koha::Libraries;
62
use Koha::Patrons;
62
use Koha::Patrons;
63
use Koha::Patron::Message::Preferences;
63
64
64
=head1 NAME
65
=head1 NAME
65
66
Lines 244-254 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
244
    my $borrower_preferences;
245
    my $borrower_preferences;
245
    if ( 0 == $upcoming->{'days_until_due'} ) {
246
    if ( 0 == $upcoming->{'days_until_due'} ) {
246
        # This item is due today. Send an 'item due' message.
247
        # This item is due today. Send an 'item due' message.
247
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
248
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
248
                                                                                   message_name   => 'item_due' } );
249
            borrowernumber => $upcoming->{'borrowernumber'},
250
            message_name   => 'item_due',
251
        });
249
        next unless $borrower_preferences;
252
        next unless $borrower_preferences;
250
        
253
        
251
        if ( $borrower_preferences->{'wants_digest'} ) {
254
        if ( $borrower_preferences->wants_digest ) {
252
            # cache this one to process after we've run through all of the items.
255
            # cache this one to process after we've run through all of the items.
253
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
256
            $due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
254
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
257
            $due_digest->{ $upcoming->{borrowernumber} }->{count}++;
Lines 262-268 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
262
            }
265
            }
263
266
264
            ## Get branch info for borrowers home library.
267
            ## Get branch info for borrowers home library.
265
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
268
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
266
                my $letter = parse_letter( { letter_code    => $letter_type,
269
                my $letter = parse_letter( { letter_code    => $letter_type,
267
                                      borrowernumber => $upcoming->{'borrowernumber'},
270
                                      borrowernumber => $upcoming->{'borrowernumber'},
268
                                      branchcode     => $upcoming->{'branchcode'},
271
                                      branchcode     => $upcoming->{'branchcode'},
Lines 276-301 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
276
            }
279
            }
277
        }
280
        }
278
    } else {
281
    } else {
279
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
282
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
280
                                                                                   message_name   => 'advance_notice' } );
283
            borrowernumber => $upcoming->{'borrowernumber'},
281
        next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'};
284
            message_name   => 'advance_notice',
282
        next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'};
285
        });
283
286
        next UPCOMINGITEM unless $borrower_preferences && $borrower_preferences->days_in_advance;
284
        if ( $borrower_preferences->{'wants_digest'} ) {
287
        next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'};
288
289
        if ( $borrower_preferences->wants_digest ) {
285
            # cache this one to process after we've run through all of the items.
290
            # cache this one to process after we've run through all of the items.
286
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
291
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
287
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
292
            $upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
288
        } else {
293
        } else {
289
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
294
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
290
            my $letter_type = 'PREDUE';
295
            my $letter_type = 'PREDUE';
291
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'});
296
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance);
292
            my $titles = "";
297
            my $titles = "";
293
            while ( my $item_info = $sth->fetchrow_hashref()) {
298
            while ( my $item_info = $sth->fetchrow_hashref()) {
294
                $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
299
                $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
295
            }
300
            }
296
301
297
            ## Get branch info for borrowers home library.
302
            ## Get branch info for borrowers home library.
298
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
303
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
299
                my $letter = parse_letter( { letter_code    => $letter_type,
304
                my $letter = parse_letter( { letter_code    => $letter_type,
300
                                      borrowernumber => $upcoming->{'borrowernumber'},
305
                                      borrowernumber => $upcoming->{'borrowernumber'},
301
                                      branchcode     => $upcoming->{'branchcode'},
306
                                      branchcode     => $upcoming->{'branchcode'},
Lines 346-359 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
346
    my $count = $digest->{count};
351
    my $count = $digest->{count};
347
    my $from_address = $digest->{email};
352
    my $from_address = $digest->{email};
348
353
349
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
354
    my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
350
                                                                                  message_name   => 'advance_notice' } );
355
            borrowernumber => $borrowernumber,
356
            message_name   => 'advance_notice',
357
        });
351
    next PATRON unless $borrower_preferences; # how could this happen?
358
    next PATRON unless $borrower_preferences; # how could this happen?
352
359
353
360
354
    my $letter_type = 'PREDUEDGST';
361
    my $letter_type = 'PREDUEDGST';
355
362
356
    $sth->execute($borrowernumber,$borrower_preferences->{'days_in_advance'});
363
    $sth->execute($borrowernumber,$borrower_preferences->days_in_advance);
357
    my $titles = "";
364
    my $titles = "";
358
    while ( my $item_info = $sth->fetchrow_hashref()) {
365
    while ( my $item_info = $sth->fetchrow_hashref()) {
359
        $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
366
        $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
Lines 362-368 PATRON: while ( my ( $borrowernumber, $digest ) = each %$upcoming_digest ) { Link Here
362
    ## Get branch info for borrowers home library.
369
    ## Get branch info for borrowers home library.
363
    my %branch_info = get_branch_info( $borrowernumber );
370
    my %branch_info = get_branch_info( $borrowernumber );
364
371
365
    foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
372
    foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
366
        my $letter = parse_letter(
373
        my $letter = parse_letter(
367
            {
374
            {
368
                letter_code    => $letter_type,
375
                letter_code    => $letter_type,
Lines 404-411 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
404
    my $count = $digest->{count};
411
    my $count = $digest->{count};
405
    my $from_address = $digest->{email};
412
    my $from_address = $digest->{email};
406
413
407
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $borrowernumber,
414
    my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
408
                                                                                  message_name   => 'item_due' } );
415
            borrowernumber => $borrowernumber,
416
            message_name   => 'item_due',
417
        });
409
    next PATRON unless $borrower_preferences; # how could this happen?
418
    next PATRON unless $borrower_preferences; # how could this happen?
410
419
411
    my $letter_type = 'DUEDGST';
420
    my $letter_type = 'DUEDGST';
Lines 418-424 PATRON: while ( my ( $borrowernumber, $digest ) = each %$due_digest ) { Link Here
418
    ## Get branch info for borrowers home library.
427
    ## Get branch info for borrowers home library.
419
    my %branch_info = get_branch_info( $borrowernumber );
428
    my %branch_info = get_branch_info( $borrowernumber );
420
429
421
    for my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
430
    for my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
422
        my $letter = parse_letter(
431
        my $letter = parse_letter(
423
            {
432
            {
424
                letter_code    => $letter_type,
433
                letter_code    => $letter_type,
(-)a/t/db_dependent/Koha/Patron/Categories.t (-4 / +3 lines)
Lines 22-33 use Modern::Perl; Link Here
22
use Test::More tests => 11;
22
use Test::More tests => 11;
23
23
24
use C4::Context;
24
use C4::Context;
25
use C4::Members::Messaging;
26
use Koha::Database;
25
use Koha::Database;
27
use Koha::DateUtils;
26
use Koha::DateUtils;
28
use Koha::Patron;
27
use Koha::Patron;
29
use Koha::Patron::Category;
28
use Koha::Patron::Category;
30
use Koha::Patron::Categories;
29
use Koha::Patron::Categories;
30
use Koha::Patron::Message::Preferences;
31
use t::lib::TestBuilder;
31
use t::lib::TestBuilder;
32
use t::lib::Mocks;
32
use t::lib::Mocks;
33
33
Lines 122-134 subtest 'default_messaging tests' => sub { Link Here
122
            is_digest => 1,
122
            is_digest => 1,
123
        }
123
        }
124
    });
124
    });
125
    C4::Members::Messaging::SetMessagingPreference({
125
    Koha::Patron::Message::Preference->new({
126
        categorycode            => $category->categorycode,
126
        categorycode            => $category->categorycode,
127
        message_attribute_id    => $attr->{'message_attribute_id'},
127
        message_attribute_id    => $attr->{'message_attribute_id'},
128
        message_transport_types => [ qw( email ) ],
128
        message_transport_types => [ qw( email ) ],
129
        days_in_advance         => 5,
129
        days_in_advance         => 5,
130
        wants_digest            => 1
130
        wants_digest            => 1
131
    });
131
    })->store;
132
    my $default_messaging = $category->default_messaging;
132
    my $default_messaging = $category->default_messaging;
133
    is(@$default_messaging, 1, "One default messaging found.");
133
    is(@$default_messaging, 1, "One default messaging found.");
134
    $default_messaging = $default_messaging->[0];
134
    $default_messaging = $default_messaging->[0];
135
- 

Return to bug 18595