]> git.koha-community.org Git - koha.git/blob - Koha/SearchField.pm
Bug 18316: (follow-up) Koha::SearchField::search_marc_maps return a result set -...
[koha.git] / Koha / SearchField.pm
1 package Koha::SearchField;
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it under the
6 # terms of the GNU General Public License as published by the Free Software
7 # Foundation; either version 3 of the License, or (at your option) any later
8 # version.
9 #
10 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along
15 # with Koha; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 use Modern::Perl;
19
20 use Carp;
21
22 use Koha::Database;
23 use Koha::SearchMarcMaps;
24
25 use base qw(Koha::Object);
26
27 =head1 NAME
28
29 Koha::SearchField - Koha SearchField Object class
30
31 =head1 API
32
33 =head2 Class Methods
34
35 =cut
36
37 sub add_to_search_marc_maps {
38     my ( $self, $search_field, $params ) = @_;
39     return $self->_result()->add_to_search_marc_maps($search_field->_result, $params);
40 }
41
42 =head3 search_marc_maps
43
44 my $search_marc_maps = $search_field->search_marc_maps;
45
46 =cut
47
48 sub search_marc_maps {
49     my ( $self ) = @_;
50
51     my $marc_type = lc C4::Context->preference('marcflavour');
52
53     my $schema = Koha::Database->new->schema;
54     my $marc_map_fields = $schema->resultset('SearchMarcToField')->search(
55         {
56             'me.search_field_id'        => $self->id,
57             'search_marc_map.marc_type' => $marc_type
58         },
59         {
60             select => [
61                 'search_marc_map.index_name',
62                 'search_marc_map.marc_type',
63                 'search_marc_map.marc_field'
64             ],
65             as => [ 'index_name', 'marc_type', 'marc_field' ],
66             join => 'search_marc_map'
67         }
68     );
69
70     return $marc_map_fields;
71 }
72
73 =head3 is_mapped_biblios
74
75 my $is_mapped_biblios = $search_field->is_mapped_biblios
76
77 =cut
78
79 sub is_mapped_biblios {
80     my ( $self ) = @_;
81
82     return $self->search_marc_maps->search(
83         {
84             index_name => 'biblios'
85         }
86     )->count ? 1 : 0;
87 }
88
89 =head3 type
90
91 =cut
92
93 sub _type {
94     return 'SearchField';
95 }
96
97 1;