Bug 11703 - Convert checkouts table to ajax datatable [3.16.x]
[koha.git] / Koha / SearchEngine / Solr / FacetsBuilder.pm
1 package Koha::SearchEngine::Solr::FacetsBuilder;
2
3 # This file is part of Koha.
4 #
5 # Copyright 2012 BibLibre
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 use Modern::Perl;
21 use Moose::Role;
22
23 with 'Koha::SearchEngine::FacetsBuilderRole';
24
25 sub build_facets {
26     my ( $self, $results, $facetable_indexes, $filters ) = @_;
27     my @facets_loop;
28     for my $index ( @$facetable_indexes ) {
29         my $index_name = $index->{type} . '_' . $index->{code};
30         my $facets = $results->facets->{'str_' . $index->{code}};
31         if ( @$facets > 1 ) {
32             my @values;
33             $index =~ m/^([^_]*)_(.*)$/;
34             for ( my $i = 0 ; $i < scalar(@$facets) ; $i++ ) {
35                 my $value = $facets->[$i++];
36                 my $count = $facets->[$i];
37                 utf8::encode($value);
38                 my $lib =$value;
39                 push @values, {
40                     'lib'     => $lib,
41                     'value'   => $value,
42                     'count'   => $count,
43                     'active'  => ( $filters->{$index_name} and scalar( grep /"?\Q$value\E"?/, @{ $filters->{$index_name} } ) ) ? 1 : 0,
44                 };
45             }
46
47             push @facets_loop, {
48                 'indexname' => $index_name,
49                 'label'     => $index->{label},
50                 'values'    => \@values,
51                 'size'      => scalar(@values),
52             };
53         }
54     }
55     return @facets_loop;
56 }
57
58 1;