c5ca94df99
When calling the proposed version of get_effective_issuing_rule with undefined parameter values, a following crash occurs: SQL::Abstract::puke(): [SQL::Abstract::__ANON__] Fatal: SQL::Abstract before v1.75 used to generate incorrect SQL when the -IN operator was given an undef-containing list: !!!AUDIT YOUR CODE AND DATA!!! (the upcoming Data::Query-based version of SQL::Abstract will emit the logically correct SQL instead of raising this exception) at /home/ubuntu/kohaclone/Koha/Objects.pm line 182 This patch adds a test to cover this problem and fixes the issue. To test: 1. Run t/db_dependent/Koha/IsssuingRules.t Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
86 lines
2.1 KiB
Perl
86 lines
2.1 KiB
Perl
package Koha::IssuingRules;
|
|
|
|
# Copyright Vaara-kirjastot 2015
|
|
# Copyright Koha Development Team 2016
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 3 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use Modern::Perl;
|
|
|
|
use Koha::Database;
|
|
|
|
use Koha::IssuingRule;
|
|
|
|
use base qw(Koha::Objects);
|
|
|
|
=head1 NAME
|
|
|
|
Koha::IssuingRules - Koha IssuingRule Object set class
|
|
|
|
=head1 API
|
|
|
|
=head2 Class Methods
|
|
|
|
=cut
|
|
|
|
sub get_effective_issuing_rule {
|
|
my ( $self, $params ) = @_;
|
|
|
|
my $default = '*';
|
|
my $categorycode = $params->{categorycode};
|
|
my $itemtype = $params->{itemtype};
|
|
my $branchcode = $params->{branchcode};
|
|
|
|
my $search_categorycode = $default;
|
|
my $search_itemtype = $default;
|
|
my $search_branchcode = $default;
|
|
|
|
if ($categorycode) {
|
|
$search_categorycode = { 'in' => [ $categorycode, $default ] };
|
|
}
|
|
if ($itemtype) {
|
|
$search_itemtype = { 'in' => [ $itemtype, $default ] };
|
|
}
|
|
if ($branchcode) {
|
|
$search_branchcode = { 'in' => [ $branchcode, $default ] };
|
|
}
|
|
|
|
my $rule = $self->search({
|
|
categorycode => $search_categorycode,
|
|
itemtype => $search_itemtype,
|
|
branchcode => $search_branchcode,
|
|
}, {
|
|
order_by => {
|
|
-desc => ['branchcode', 'categorycode', 'itemtype']
|
|
},
|
|
rows => 1,
|
|
})->single;
|
|
return $rule;
|
|
}
|
|
|
|
=head3 type
|
|
|
|
=cut
|
|
|
|
sub _type {
|
|
return 'Issuingrule';
|
|
}
|
|
|
|
sub object_class {
|
|
return 'Koha::IssuingRule';
|
|
}
|
|
|
|
1;
|