package Koha::Objects::Mixin::AdditionalFields; use Modern::Perl; =head1 NAME Koha::Objects::Mixin::AdditionalFields =head1 SYNOPSIS package Koha::Foos; use parent qw( Koha::Objects Koha::Objects::Mixin::AdditionalFields ); sub _type { 'Foo' } sub object_class { 'Koha::Foo' } package main; use Koha::Foos; Koha::Foos->filter_by_additional_fields(...) =head1 API =head2 Public methods =head3 filter_by_additional_fields my $objects = Koha::Foos->filter_by_additional_fields([ { id => 1, value => 'foo', }, { id => 2, value => 'bar', } ]); =cut sub filter_by_additional_fields { my ($class, $additional_fields) = @_; my %conditions; my $idx = 0; foreach my $additional_field (@$additional_fields) { ++$idx; my $alias = $idx > 1 ? "additional_field_values_$idx" : "additional_field_values"; $conditions{"$alias.field_id"} = $additional_field->{id}; $conditions{"$alias.value"} = { -like => '%' . $additional_field->{value} . '%'}; } return $class->search(\%conditions, { join => [ ('additional_field_values') x $idx ] }); } =head1 AUTHOR Koha Development Team =head1 COPYRIGHT AND LICENSE Copyright 2018 BibLibre 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, see . =cut 1;