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

(-)a/C4/Circulation.pm (-2 / +4 lines)
Lines 48-53 use Koha::Illrequests; Link Here
48
use Koha::Items;
48
use Koha::Items;
49
use Koha::Patrons;
49
use Koha::Patrons;
50
use Koha::Patron::Debarments;
50
use Koha::Patron::Debarments;
51
use Koha::Patron::Message::Preferences;
51
use Koha::Database;
52
use Koha::Database;
52
use Koha::Libraries;
53
use Koha::Libraries;
53
use Koha::Account::Lines;
54
use Koha::Account::Lines;
Lines 3493-3506 sub SendCirculationAlert { Link Here
3493
        CHECKOUT => 'Item_Checkout',
3494
        CHECKOUT => 'Item_Checkout',
3494
        RENEWAL  => 'Item_Checkout',
3495
        RENEWAL  => 'Item_Checkout',
3495
    );
3496
    );
3496
    my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences({
3497
    return unless my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
3497
        borrowernumber => $borrower->{borrowernumber},
3498
        borrowernumber => $borrower->{borrowernumber},
3498
        message_name   => $message_name{$type},
3499
        message_name   => $message_name{$type},
3499
    });
3500
    });
3501
3500
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3502
    my $issues_table = ( $type eq 'CHECKOUT' || $type eq 'RENEWAL' ) ? 'issues' : 'old_issues';
3501
3503
3502
    my $schema = Koha::Database->new->schema;
3504
    my $schema = Koha::Database->new->schema;
3503
    my @transports = keys %{ $borrower_preferences->{transports} };
3505
    my @transports = keys %{ $borrower_preferences->message_transport_types };
3504
3506
3505
    # From the MySQL doc:
3507
    # From the MySQL doc:
3506
    # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables.
3508
    # 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 44-49 use Koha::ItemTypes; Link Here
44
use Koha::Items;
44
use Koha::Items;
45
use Koha::Libraries;
45
use Koha::Libraries;
46
use Koha::Old::Hold;
46
use Koha::Old::Hold;
47
use Koha::Patron::Message::Preferences;
47
use Koha::Patrons;
48
use Koha::Patrons;
48
49
49
use Carp;
50
use Carp;
Lines 1758-1767 sub _koha_notify_reserve { Link Here
1758
    # Try to get the borrower's email address
1759
    # Try to get the borrower's email address
1759
    my $to_address = $patron->notice_email_address;
1760
    my $to_address = $patron->notice_email_address;
1760
1761
1761
    my $messagingprefs = C4::Members::Messaging::GetMessagingPreferences( {
1762
    my $messagingpref = Koha::Patron::Message::Preferences->find_with_message_name({
1762
            borrowernumber => $borrowernumber,
1763
        borrowernumber => $borrowernumber,
1763
            message_name => 'Hold_Filled'
1764
        message_name   => 'Hold_Filled',
1764
    } );
1765
    });
1765
1766
1766
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1767
    my $library = Koha::Libraries->find( $hold->branchcode )->unblessed;
1767
1768
Lines 1801-1807 sub _koha_notify_reserve { Link Here
1801
        } );
1802
        } );
1802
    };
1803
    };
1803
1804
1804
    while ( my ( $mtt, $letter_code ) = each %{ $messagingprefs->{transports} } ) {
1805
    my $transports = $messagingpref->message_transport_types if $messagingpref;
1806
    foreach my $mtt (keys %{$transports}) {
1807
        my $letter_code = $transports->{$mtt};
1805
        next if (
1808
        next if (
1806
               ( $mtt eq 'email' and not $to_address ) # No email address
1809
               ( $mtt eq 'email' and not $to_address ) # No email address
1807
            or ( $mtt eq 'sms'   and not $patron->smsalertnumber ) # No SMS number
1810
            or ( $mtt eq 'sms'   and not $patron->smsalertnumber ) # No SMS number
(-)a/Koha/Patron/Category.pm (-8 / +6 lines)
Lines 84-102 sub default_messaging { Link Here
84
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
84
    my $messaging_options = Koha::Patron::Message::Preferences->get_options;
85
    my @messaging;
85
    my @messaging;
86
    foreach my $option (@$messaging_options) {
86
    foreach my $option (@$messaging_options) {
87
        my $pref = C4::Members::Messaging::GetMessagingPreferences(
87
        my $pref = Koha::Patron::Message::Preferences->find_with_message_name({
88
            {
88
            categorycode   => $self->categorycode,
89
                categorycode => $self->categorycode,
89
            message_name   => $option->{message_name},
90
                message_name => $option->{message_name}
90
        });
91
            }
91
        next if !$pref || $pref && !$pref->message_transport_types;
92
        );
93
        next unless $pref->{transports};
94
        my $brief_pref = {
92
        my $brief_pref = {
95
            message_attribute_id      => $option->{message_attribute_id},
93
            message_attribute_id      => $option->{message_attribute_id},
96
            message_name              => $option->{message_name},
94
            message_name              => $option->{message_name},
97
            $option->{'message_name'} => 1,
95
            $option->{'message_name'} => 1,
98
        };
96
        };
99
        foreach my $transport ( keys %{ $pref->{transports} } ) {
97
        foreach my $transport ( keys %{ $pref->message_transport_types } ) {
100
            push @{ $brief_pref->{transports} }, { transport => $transport };
98
            push @{ $brief_pref->{transports} }, { transport => $transport };
101
        }
99
        }
102
        push @messaging, $brief_pref;
100
        push @messaging, $brief_pref;
(-)a/circ/returns.pl (-2 / +7 lines)
Lines 56-61 use Koha::DateUtils; Link Here
56
use Koha::Holds;
56
use Koha::Holds;
57
use Koha::Items;
57
use Koha::Items;
58
use Koha::Patrons;
58
use Koha::Patrons;
59
use Koha::Patron::Message::Preferences;
59
60
60
my $query = new CGI;
61
my $query = new CGI;
61
62
Lines 410-416 if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { Link Here
410
if ( $messages->{'ResFound'}) {
411
if ( $messages->{'ResFound'}) {
411
    my $reserve    = $messages->{'ResFound'};
412
    my $reserve    = $messages->{'ResFound'};
412
    my $patron = Koha::Patrons->find( $reserve->{borrowernumber} );
413
    my $patron = Koha::Patrons->find( $reserve->{borrowernumber} );
413
    my $holdmsgpreferences =  C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $reserve->{'borrowernumber'}, message_name   => 'Hold_Filled' } );
414
    my $holdmsgpreferences =  Koha::Patron::Message::Preferences->find_with_message_name({
415
        borrowernumber => $reserve->{'borrowernumber'},
416
        message_name   => 'Hold_Filled',
417
    });
418
    my $mtts = $holdmsgpreferences->message_transport_types if defined $holdmsgpreferences;
414
    my $branchCheck = ( $userenv_branch eq $reserve->{branchcode} );
419
    my $branchCheck = ( $userenv_branch eq $reserve->{branchcode} );
415
    if ( $reserve->{'ResFound'} eq "Reserved" && C4::Context->preference('HoldsAutoFill') ) {
420
    if ( $reserve->{'ResFound'} eq "Reserved" && C4::Context->preference('HoldsAutoFill') ) {
416
        my $item = Koha::Items->find( $itemnumber );
421
        my $item = Koha::Items->find( $itemnumber );
Lines 465-471 if ( $messages->{'ResFound'}) { Link Here
465
        itemnumber     => $reserve->{'itemnumber'},
470
        itemnumber     => $reserve->{'itemnumber'},
466
        reservenotes   => $reserve->{'reservenotes'},
471
        reservenotes   => $reserve->{'reservenotes'},
467
        reserve_id     => $reserve->{reserve_id},
472
        reserve_id     => $reserve->{reserve_id},
468
        bormessagepref => $holdmsgpreferences->{'transports'},
473
        bormessagepref => $mtts,
469
    );
474
    );
470
}
475
}
471
476
(-)a/misc/cronjobs/advance_notices.pl (-21 / +23 lines)
Lines 61-66 use C4::Log; Link Here
61
use Koha::Items;
61
use Koha::Items;
62
use Koha::Libraries;
62
use Koha::Libraries;
63
use Koha::Patrons;
63
use Koha::Patrons;
64
use Koha::Patron::Message::Preferences;
64
65
65
=head1 NAME
66
=head1 NAME
66
67
Lines 261-271 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
261
    my $borrower_preferences;
262
    my $borrower_preferences;
262
    if ( 0 == $upcoming->{'days_until_due'} ) {
263
    if ( 0 == $upcoming->{'days_until_due'} ) {
263
        # This item is due today. Send an 'item due' message.
264
        # This item is due today. Send an 'item due' message.
264
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
265
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
265
                                                                                   message_name   => 'item_due' } );
266
            borrowernumber => $upcoming->{'borrowernumber'},
267
            message_name   => 'item_due',
268
        });
266
        next unless $borrower_preferences;
269
        next unless $borrower_preferences;
267
        
270
        
268
        if ( $borrower_preferences->{'wants_digest'} ) {
271
        if ( $borrower_preferences->wants_digest ) {
269
            # cache this one to process after we've run through all of the items.
272
            # cache this one to process after we've run through all of the items.
270
            if ($digest_per_branch) {
273
            if ($digest_per_branch) {
271
                $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address;
274
                $due_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address;
Lines 284-290 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
284
            }
287
            }
285
288
286
            ## Get branch info for borrowers home library.
289
            ## Get branch info for borrowers home library.
287
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
290
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
288
                my $letter = parse_letter( { letter_code    => $letter_type,
291
                my $letter = parse_letter( { letter_code    => $letter_type,
289
                                      borrowernumber => $upcoming->{'borrowernumber'},
292
                                      borrowernumber => $upcoming->{'borrowernumber'},
290
                                      branchcode     => $upcoming->{'branchcode'},
293
                                      branchcode     => $upcoming->{'branchcode'},
Lines 298-309 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
298
            }
301
            }
299
        }
302
        }
300
    } else {
303
    } else {
301
        $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences( { borrowernumber => $upcoming->{'borrowernumber'},
304
        $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
302
                                                                                   message_name   => 'advance_notice' } );
305
            borrowernumber => $upcoming->{'borrowernumber'},
303
        next UPCOMINGITEM unless $borrower_preferences && exists $borrower_preferences->{'days_in_advance'};
306
            message_name   => 'advance_notice',
304
        next UPCOMINGITEM unless $borrower_preferences->{'days_in_advance'} == $upcoming->{'days_until_due'};
307
        });
308
        next UPCOMINGITEM unless $borrower_preferences && defined $borrower_preferences->days_in_advance;
309
        next UPCOMINGITEM unless $borrower_preferences->days_in_advance == $upcoming->{'days_until_due'};
305
310
306
        if ( $borrower_preferences->{'wants_digest'} ) {
311
        if ( $borrower_preferences->wants_digest ) {
307
            # cache this one to process after we've run through all of the items.
312
            # cache this one to process after we've run through all of the items.
308
            if ($digest_per_branch) {
313
            if ($digest_per_branch) {
309
                $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address;
314
                $upcoming_digest->{ $upcoming->{branchcode} }->{ $upcoming->{borrowernumber} }->{email} = $from_address;
Lines 315-328 UPCOMINGITEM: foreach my $upcoming ( @$upcoming_dues ) { Link Here
315
        } else {
320
        } else {
316
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
321
            my $item = Koha::Items->find( $upcoming->{itemnumber} );
317
            my $letter_type = 'PREDUE';
322
            my $letter_type = 'PREDUE';
318
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'});
323
            $sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->days_in_advance);
319
            my $titles = "";
324
            my $titles = "";
320
            while ( my $item_info = $sth->fetchrow_hashref()) {
325
            while ( my $item_info = $sth->fetchrow_hashref()) {
321
                $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
326
                $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
322
            }
327
            }
323
328
324
            ## Get branch info for borrowers home library.
329
            ## Get branch info for borrowers home library.
325
            foreach my $transport ( keys %{$borrower_preferences->{'transports'}} ) {
330
            foreach my $transport ( keys %{$borrower_preferences->message_transport_types} ) {
326
                my $letter = parse_letter( { letter_code    => $letter_type,
331
                my $letter = parse_letter( { letter_code    => $letter_type,
327
                                      borrowernumber => $upcoming->{'borrowernumber'},
332
                                      borrowernumber => $upcoming->{'borrowernumber'},
328
                                      branchcode     => $upcoming->{'branchcode'},
333
                                      branchcode     => $upcoming->{'branchcode'},
Lines 380-386 if ($digest_per_branch) { Link Here
380
            get_item_info => sub {
385
            get_item_info => sub {
381
                my $params = shift;
386
                my $params = shift;
382
                $params->{sth}->execute($params->{borrowernumber},
387
                $params->{sth}->execute($params->{borrowernumber},
383
                                        $params->{borrower_preferences}->{'days_in_advance'});
388
                                        $params->{borrower_preferences}->days_in_advance);
384
                return sub {
389
                return sub {
385
                    $params->{sth}->fetchrow_hashref;
390
                    $params->{sth}->fetchrow_hashref;
386
                };
391
                };
Lines 413-419 if ($digest_per_branch) { Link Here
413
        get_item_info => sub {
418
        get_item_info => sub {
414
            my $params = shift;
419
            my $params = shift;
415
            $params->{sth}->execute($params->{borrowernumber},
420
            $params->{sth}->execute($params->{borrowernumber},
416
                                    $params->{borrower_preferences}->{'days_in_advance'});
421
                                    $params->{borrower_preferences}->days_in_advance);
417
            return sub {
422
            return sub {
418
                $params->{sth}->fetchrow_hashref;
423
                $params->{sth}->fetchrow_hashref;
419
            };
424
            };
Lines 549-561 sub send_digests { Link Here
549
            $branchcode = $branch_info{'branches.branchcode'};
554
            $branchcode = $branch_info{'branches.branchcode'};
550
        }
555
        }
551
556
552
        my $borrower_preferences =
557
        my $borrower_preferences = Koha::Patron::Message::Preferences->find_with_message_name({
553
            C4::Members::Messaging::GetMessagingPreferences(
558
            borrowernumber => $borrowernumber,
554
                {
559
            message_name   => $params->{message_name},
555
                    borrowernumber => $borrowernumber,
560
        });
556
                    message_name   => $params->{message_name}
557
                }
558
            );
559
561
560
        next PATRON unless $borrower_preferences; # how could this happen?
562
        next PATRON unless $borrower_preferences; # how could this happen?
561
563
Lines 569-575 sub send_digests { Link Here
569
            $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
571
            $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields } );
570
        }
572
        }
571
573
572
        foreach my $transport ( keys %{ $borrower_preferences->{'transports'} } ) {
574
        foreach my $transport ( keys %{ $borrower_preferences->message_transport_types } ) {
573
            my $letter = parse_letter(
575
            my $letter = parse_letter(
574
                {
576
                {
575
                    letter_code    => $params->{letter_code},
577
                    letter_code    => $params->{letter_code},
(-)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::Dates;
31
use t::lib::Dates;
32
use t::lib::TestBuilder;
32
use t::lib::TestBuilder;
33
use t::lib::Mocks;
33
use t::lib::Mocks;
Lines 123-135 subtest 'default_messaging tests' => sub { Link Here
123
            is_digest => 1,
123
            is_digest => 1,
124
        }
124
        }
125
    });
125
    });
126
    C4::Members::Messaging::SetMessagingPreference({
126
    Koha::Patron::Message::Preference->new({
127
        categorycode            => $category->categorycode,
127
        categorycode            => $category->categorycode,
128
        message_attribute_id    => $attr->{'message_attribute_id'},
128
        message_attribute_id    => $attr->{'message_attribute_id'},
129
        message_transport_types => [ qw( email ) ],
129
        message_transport_types => [ qw( email ) ],
130
        days_in_advance         => 5,
130
        days_in_advance         => 5,
131
        wants_digest            => 1
131
        wants_digest            => 1
132
    });
132
    })->store;
133
    my $default_messaging = $category->default_messaging;
133
    my $default_messaging = $category->default_messaging;
134
    is(@$default_messaging, 1, "One default messaging found.");
134
    is(@$default_messaging, 1, "One default messaging found.");
135
    $default_messaging = $default_messaging->[0];
135
    $default_messaging = $default_messaging->[0];
136
- 

Return to bug 18595