Bug 28036: Improve breadcrumbs of serial claims page
[koha.git] / catalogue / export.pl
1 #!/usr/bin/perl
2 use Modern::Perl;
3
4 use C4::Record;
5 use C4::Auth;
6 use C4::Output;
7 use C4::Biblio;
8 use CGI qw ( -utf8 );
9 use C4::Ris;
10
11
12
13 my $query = CGI->new;
14 my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
15     template_name   => "tools/export.tt",
16     query           => $query,
17     type            => "intranet",
18     flagsrequired   => { catalogue => 1 },
19     debug           => 1,
20     });
21
22 my $op=$query->param("op");
23 my $format=$query->param("format");
24 my $error = '';
25 if ($op eq "export") {
26     my $biblionumber = $query->param("bib");
27         if ($biblionumber){
28             my $file_id = $biblionumber;
29             my $file_pre = "bib-";
30
31             my $marc = GetMarcBiblio({
32                 biblionumber => $biblionumber,
33                 embed_items  => 1 });
34
35             if( C4::Context->preference('DefaultSaveRecordFileID') eq 'controlnumber' ){
36                 my $marcflavour = C4::Context->preference('marcflavour'); #FIXME This option is required but does not change control num behaviour
37                 my $control_num = GetMarcControlnumber( $marc, $marcflavour );
38                 if( $control_num ){
39                     $file_id = $control_num;
40                     $file_pre = "record-";
41                 }
42             }
43
44             if ($format =~ /endnote/) {
45                 $marc = marc2endnote($marc);
46                 $format = 'endnote';
47             }
48             elsif ($format =~ /marcxml/) {
49                 $marc = marc2marcxml($marc);
50                 $format = "marcxml";
51             }
52             elsif ($format=~ /mods/) {
53                 $marc = marc2modsxml($marc);
54                 $format = "mods";
55             }
56             elsif ($format =~ /ris/) {
57                 $marc = marc2ris($marc);
58                 $format = "ris";
59             }
60             elsif ($format =~ /bibtex/) {
61                 $marc = marc2bibtex($marc);
62                 $format = "bibtex";
63             }
64             elsif ($format =~ /dc$/) {
65                 $marc = marc2dcxml(undef, undef, $biblionumber, $format);
66                 $format = "dublin-core.xml";
67             }
68             elsif ($format =~ /marc8/) {
69                 $marc = changeEncoding($marc,"MARC","MARC21","MARC-8");
70                 $marc = $marc->as_usmarc();
71                 $format = "marc8";
72             }
73             elsif ($format =~ /utf8/) {
74                 C4::Charset::SetUTF8Flag($marc, 1);
75                 $marc = $marc->as_usmarc();
76                 $format = "utf8";
77             }
78             elsif ($format =~ /marcstd/) {
79                 C4::Charset::SetUTF8Flag($marc,1);
80                 ($error, $marc) = marc2marc($marc, 'marcstd', C4::Context->preference('marcflavour'));
81                 $format = "marcstd";
82             }
83             if ( $format =~ /utf8/ or $format =~ /marcstd/ ) {
84                 binmode STDOUT, ':encoding(UTF-8)';
85             }
86             print $query->header(
87                 -type => 'application/octet-stream',
88                 -attachment=>"$file_pre$file_id.$format");
89             print $marc;
90         }
91 }