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