"Fossies" - the Fresh Open Source Software Archive

Member "koha-19.11.15/opac/opac-downloadcart.pl" (23 Feb 2021, 4166 Bytes) of package /linux/misc/koha-19.11.15.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "opac-downloadcart.pl" see the Fossies "Dox" file reference documentation.

    1 #!/usr/bin/perl
    2 
    3 # Copyright 2009 BibLibre
    4 #
    5 # This file is part of Koha.
    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 
   22 use CGI qw ( -utf8 );
   23 use Encode qw(encode);
   24 
   25 use C4::Auth;
   26 use C4::Biblio;
   27 use C4::Items;
   28 use C4::Output;
   29 use C4::Record;
   30 use C4::Ris;
   31 use Koha::CsvProfiles;
   32 use Koha::RecordProcessor;
   33 
   34 use utf8;
   35 my $query = CGI->new();
   36 
   37 my ( $template, $borrowernumber, $cookie ) = get_template_and_user (
   38     {
   39         template_name   => "opac-downloadcart.tt",
   40         query           => $query,
   41         type            => "opac",
   42         authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
   43     }
   44 );
   45 
   46 my $bib_list = $query->param('bib_list');
   47 my $format  = $query->param('format');
   48 my $dbh     = C4::Context->dbh;
   49 
   50 if ($bib_list && $format) {
   51 
   52     my $borcat = q{};
   53     if ( C4::Context->preference('OpacHiddenItemsExceptions') ) {
   54         # we need to fetch the borrower info here, so we can pass the category
   55         my $borrower = Koha::Patrons->find( { borrowernumber => $borrowernumber } );
   56         $borcat = $borrower ? $borrower->categorycode : $borcat;
   57     }
   58 
   59     my @bibs = split( /\//, $bib_list );
   60 
   61     my $marcflavour = C4::Context->preference('marcflavour');
   62     my $output;
   63     my $extension;
   64     my $type;
   65 
   66     # CSV   
   67     if ($format =~ /^\d+$/) {
   68 
   69         $output = marc2csv(\@bibs, $format);
   70 
   71         # Other formats
   72     } else {
   73         my $record_processor = Koha::RecordProcessor->new({
   74             filters => 'ViewPolicy'
   75         });
   76         foreach my $biblio (@bibs) {
   77 
   78             my $record = GetMarcBiblio({
   79                 biblionumber => $biblio,
   80                 embed_items  => 1,
   81                 opac         => 1,
   82                 borcat       => $borcat });
   83             my $framework = &GetFrameworkCode( $biblio );
   84             $record_processor->options({
   85                 interface => 'opac',
   86                 frameworkcode => $framework
   87             });
   88             $record_processor->process($record);
   89 
   90             next unless $record;
   91 
   92             if ($format eq 'iso2709') {
   93                 #NOTE: If we don't explicitly UTF-8 encode the output,
   94                 #the browser will guess the encoding, and it won't always choose UTF-8.
   95                 $output .= encode("UTF-8", $record->as_usmarc()) // q{};
   96             }
   97             elsif ($format eq 'ris') {
   98                 $output .= marc2ris($record);
   99             }
  100             elsif ($format eq 'bibtex') {
  101                 $output .= marc2bibtex($record, $biblio);
  102             }
  103             elsif ( $format eq 'isbd' ) {
  104                 my $framework = GetFrameworkCode( $biblio );
  105                 $output   .= GetISBDView({
  106                     'record'    => $record,
  107                     'template'  => 'opac',
  108                     'framework' => $framework,
  109                 });
  110                 $extension = "txt";
  111                 $type      = "text/plain";
  112             }
  113         }
  114     }
  115 
  116     # If it was a CSV export we change the format after the export so the file extension is fine
  117     $format = "csv" if ($format =~ m/^\d+$/);
  118 
  119     print $query->header(
  120                                -type => ($type) ? $type : 'application/octet-stream',
  121         -'Content-Transfer-Encoding' => 'binary',
  122                          -attachment => ($extension) ? "cart.$format.$extension" : "cart.$format"
  123     );
  124     print $output;
  125 
  126 } else { 
  127     $template->param(csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ]);
  128     $template->param(bib_list => $bib_list); 
  129     output_html_with_http_headers $query, $cookie, $template->output;
  130 }