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

(-)a/C4/Circulation.pm (-4 / +5 lines)
Lines 4089-4103 sub _item_denied_renewal { Link Here
4089
    my $item = $params->{item};
4089
    my $item = $params->{item};
4090
    return unless $item;
4090
    return unless $item;
4091
4091
4092
    my $yaml = C4::Context->preference('ItemsDeniedRenewal');
4092
    my @lines = split /\n/, C4::Context->preference('ItemsDeniedRenewal')//'';
4093
    my @lines = split /\n/, $yaml;
4094
    my $denyingrules;
4093
    my $denyingrules;
4095
    foreach my $line (@lines){
4094
    foreach my $line (@lines){
4096
        my ($field,$array) = split /:/, $line;
4095
        my ($field,$array) = split /:/, $line;
4096
        next if !$array;
4097
        $field =~ s/^\s*|\s*$//g;
4097
        $array =~ s/[ [\]\r]//g;
4098
        $array =~ s/[ [\]\r]//g;
4098
        my @array = split /,/, $array;
4099
        my @array = split /,/, $array;
4100
        @array = map { $_ eq '""' || $_ eq "''" ? '' : $_ } @array;
4099
        @array = map { $_ eq 'NULL' ? undef : $_ } @array;
4101
        @array = map { $_ eq 'NULL' ? undef : $_ } @array;
4100
        @array = map { $_ eq '""' || $_ eq "''" ? undef : $_ } @array;
4101
        $denyingrules->{$field} = \@array;
4102
        $denyingrules->{$field} = \@array;
4102
    }
4103
    }
4103
    return unless $denyingrules;
4104
    return unless $denyingrules;
Lines 4107-4113 sub _item_denied_renewal { Link Here
4107
            if ( any { !defined $_ }  @{$denyingrules->{$field}} ){
4108
            if ( any { !defined $_ }  @{$denyingrules->{$field}} ){
4108
                return 1;
4109
                return 1;
4109
            }
4110
            }
4110
        } elsif (any { $val eq $_ } @{$denyingrules->{$field}}) {
4111
        } elsif (any { defined($_) && $val eq $_ } @{$denyingrules->{$field}}) {
4111
           # If the results matches the values in the syspref
4112
           # If the results matches the values in the syspref
4112
           # We return true if match found
4113
           # We return true if match found
4113
            return 1;
4114
            return 1;
(-)a/t/db_dependent/Circulation.t (-3 / +12 lines)
Lines 2047-2053 subtest 'CanBookBeIssued | is_overdue' => sub { Link Here
2047
};
2047
};
2048
2048
2049
subtest 'ItemsDeniedRenewal preference' => sub {
2049
subtest 'ItemsDeniedRenewal preference' => sub {
2050
    plan tests => 16;
2050
    plan tests => 18;
2051
2051
2052
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', '' );
2052
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', '' );
2053
2053
Lines 2124-2130 subtest 'ItemsDeniedRenewal preference' => sub { Link Here
2124
    is( $idr_mayrenew, 1, 'Renewal allowed when 1 rules not matched (withdrawn)' );
2124
    is( $idr_mayrenew, 1, 'Renewal allowed when 1 rules not matched (withdrawn)' );
2125
    is( $idr_error, undef, 'Renewal allowed when 1 rules not matched (withdrawn)' );
2125
    is( $idr_error, undef, 'Renewal allowed when 1 rules not matched (withdrawn)' );
2126
2126
2127
    $idr_rules="withdrawn: [1]\ntype: [HIDE,INVISILE]";
2127
    $idr_rules="withdrawn: [1]\nitype: [HIDE,INVISIBLE]";
2128
2128
2129
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
2129
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
2130
    ( $idr_mayrenew, $idr_error ) =
2130
    ( $idr_mayrenew, $idr_error ) =
Lines 2153-2159 subtest 'ItemsDeniedRenewal preference' => sub { Link Here
2153
    ( $idr_mayrenew, $idr_error ) =
2153
    ( $idr_mayrenew, $idr_error ) =
2154
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
2154
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
2155
    is( $idr_mayrenew, 0, 'Renewal blocked for undef when NULL in pref' );
2155
    is( $idr_mayrenew, 0, 'Renewal blocked for undef when NULL in pref' );
2156
    $idr_rules="itemcallnumber: ['']";
2157
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
2158
    ( $idr_mayrenew, $idr_error ) =
2159
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
2160
    is( $idr_mayrenew, 1, 'Renewal not blocked for undef when "" in pref' );
2156
2161
2162
    $idr_rules="itemnotes: [NULL]";
2163
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
2164
    ( $idr_mayrenew, $idr_error ) =
2165
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
2166
    is( $idr_mayrenew, 1, 'Renewal not blocked for "" when NULL in pref' );
2157
    $idr_rules="itemnotes: ['']";
2167
    $idr_rules="itemnotes: ['']";
2158
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
2168
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
2159
    ( $idr_mayrenew, $idr_error ) =
2169
    ( $idr_mayrenew, $idr_error ) =
2160
- 

Return to bug 15494