3 # Copyright ByWater Solutions 2015
5 # This file is part of Koha.
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.
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.
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>.
28 use MARC::File::USMARC;
32 use base qw(Koha::Objects Koha::Objects::Record::Collections);
36 Koha::Biblios - Koha Biblio object set class
42 =head3 print_collection
43 my $collection_text = $result_set->print_collection($format)
45 Return a text representation of a collection (group of records) in the specified format.
46 Allowed formats are marcxml, mij, marc and txt. Defaults to marcxml.
50 sub print_collection {
51 my ( $self, $format ) = @_;
53 my ($start, $glue, $end, @parts);
56 'mij' => \&MARC::File::MiJ::encode,
57 'marc' => \&MARC::File::USMARC::encode,
58 'txt' => \&MARC::Record::as_formatted,
59 'marcxml' => \&MARC::File::XML::record
61 if ($format eq 'mij') {
65 } elsif ($format eq 'marc') {
67 } elsif ($format eq 'txt') {
72 $start = MARC::File::XML::header();
73 $end = MARC::File::XML::footer();
75 while (my $biblio = $self->next) {
76 push @parts, $serializers{$format}->($biblio->metadata->record);
78 return (defined $start ? $start : '').join($glue, @parts).(defined $end ? $end : '');
81 =head3 pickup_locations
83 my $biblios = Koha::Biblios->search(...);
84 my $pickup_locations = $biblios->pickup_locations({ patron => $patron });
86 For a given resultset, it returns all the pickup locations
90 sub pickup_locations {
91 my ( $self, $params ) = @_;
93 my $patron = $params->{patron};
96 foreach my $biblio ( $self->as_list ) {
97 push @pickup_locations,
98 $biblio->pickup_locations( { patron => $patron } )
99 ->_resultset->get_column('branchcode')->all;
102 return Koha::Libraries->search(
104 branchcode => \@pickup_locations
106 { order_by => ['branchname'] }
110 =head2 Internal methods
125 return 'Koha::Biblio';
130 Kyle M Hall <kyle@bywatersolutions.com>