X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=virtualshelves%2Fdownloadshelf.pl;h=b8b37fb4a21005d25c4f16b4888bfadece38c205;hb=e0b1f945f9cdb4efd8b4403855cdc995023dc8be;hp=1611f1abd6d8b60635dc58e5155f63d121b46569;hpb=a3ff0bb5cb91761677f8b3ff08fa5f12378376af;p=koha.git diff --git a/virtualshelves/downloadshelf.pl b/virtualshelves/downloadshelf.pl index 1611f1abd6..b8b37fb4a2 100755 --- a/virtualshelves/downloadshelf.pl +++ b/virtualshelves/downloadshelf.pl @@ -4,39 +4,40 @@ # # 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 2 of the License, or (at your option) any later -# version. +# 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. +# 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. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; -use CGI; +use CGI qw ( -utf8 ); use Encode qw(encode); use C4::Auth; use C4::Biblio; use C4::Items; use C4::Output; -use C4::VirtualShelves; use C4::Record; use C4::Ris; -use C4::Csv; + +use Koha::CsvProfiles; +use Koha::Virtualshelves; + use utf8; my $query = new CGI; -my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( +my ( $template, $loggedinuser, $cookie ) = get_template_and_user ( { - template_name => "virtualshelves/downloadshelf.tmpl", + template_name => "virtualshelves/downloadshelf.tt", query => $query, type => "intranet", authnotrequired => 0, @@ -47,52 +48,63 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user ( my $shelfid = $query->param('shelfid'); my $format = $query->param('format'); my $dbh = C4::Context->dbh; +my @messages; if ($shelfid && $format) { - my @shelf = GetShelf($shelfid); - my ($items, $totitems) = GetShelfContents($shelfid); my $marcflavour = C4::Context->preference('marcflavour'); - my $output; + my $output=''; - # CSV - if ($format =~ /^\d+$/) { - my @biblios; - foreach (@$items) { - push @biblios, $_->{biblionumber}; - } - $output = marc2csv(\@biblios, $format); + my $shelf = Koha::Virtualshelves->find($shelfid); + if ( $shelf ) { + if ( $shelf->can_be_viewed( $loggedinuser ) ) { - # Other formats -} else { - foreach my $biblio (@$items) { - my $biblionumber = $biblio->{biblionumber}; + my $contents = $shelf->get_contents; + # CSV + if ($format =~ /^\d+$/) { + my @biblios; + while ( my $content = $contents->next ) { + push @biblios, $content->biblionumber; + } + $output = marc2csv(\@biblios, $format); + } + else { #Other formats + while ( my $content = $contents->next ) { + my $biblionumber = $content->biblionumber; + my $record = GetMarcBiblio({ + biblionumber => $biblionumber, + embed_items => 1 }); + if ($format eq 'iso2709') { + $output .= $record->as_usmarc(); + } + elsif ($format eq 'ris') { + $output .= marc2ris($record); + } + elsif ($format eq 'bibtex') { + $output .= marc2bibtex($record, $biblionumber); + } + } + } - my $record = GetMarcBiblio($biblionumber, 1); + # If it was a CSV export we change the format after the export so the file extension is fine + $format = "csv" if ($format =~ m/^\d+$/); - if ($format eq 'iso2709') { - $output .= $record->as_usmarc(); - } - elsif ($format eq 'ris') { - $output .= marc2ris($record); - } - elsif ($format eq 'bibtex') { - $output .= marc2bibtex($record, $biblionumber); + print $query->header( + -type => 'application/octet-stream', + -'Content-Transfer-Encoding' => 'binary', + -attachment=>"shelf.$format"); + print $output; + exit; + } else { + push @messages, { type => 'error', code => 'unauthorized' }; } + } else { + push @messages, { type => 'error', code => 'does_not_exist' }; } } - - # If it was a CSV export we change the format after the export so the file extension is fine - $format = "csv" if ($format =~ m/^\d+$/); - - print $query->header( - -type => 'application/octet-stream', - -'Content-Transfer-Encoding' => 'binary', - -attachment=>"shelf.$format"); - print $output; - -} else { - $template->param(csv_profiles => GetCsvProfilesLoop()); +else { + $template->param(csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ]); $template->param(shelfid => $shelfid); - output_html_with_http_headers $query, $cookie, $template->output; } +$template->param( messages => \@messages ); +output_html_with_http_headers $query, $cookie, $template->output;