14 my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
15 template_name => "tools/export.tt",
18 flagsrequired => { catalogue => 1 },
22 my $op=$query->param("op");
23 my $format=$query->param("format");
25 if ($op eq "export") {
26 my $biblionumber = $query->param("bib");
28 my $file_id = $biblionumber;
29 my $file_pre = "bib-";
31 my $marc = GetMarcBiblio({
32 biblionumber => $biblionumber,
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 );
39 $file_id = $control_num;
40 $file_pre = "record-";
44 if ($format =~ /endnote/) {
45 $marc = marc2endnote($marc);
48 elsif ($format =~ /marcxml/) {
49 $marc = marc2marcxml($marc);
52 elsif ($format=~ /mods/) {
53 $marc = marc2modsxml($marc);
56 elsif ($format =~ /ris/) {
57 $marc = marc2ris($marc);
60 elsif ($format =~ /bibtex/) {
61 $marc = marc2bibtex($marc);
64 elsif ($format =~ /dc$/) {
65 $marc = marc2dcxml(undef, undef, $biblionumber, $format);
66 $format = "dublin-core.xml";
68 elsif ($format =~ /marc8/) {
69 $marc = changeEncoding($marc,"MARC","MARC21","MARC-8");
70 $marc = $marc->as_usmarc();
73 elsif ($format =~ /utf8/) {
74 C4::Charset::SetUTF8Flag($marc, 1);
75 $marc = $marc->as_usmarc();
78 elsif ($format =~ /marcstd/) {
79 C4::Charset::SetUTF8Flag($marc,1);
80 ($error, $marc) = marc2marc($marc, 'marcstd', C4::Context->preference('marcflavour'));
83 if ( $format =~ /utf8/ or $format =~ /marcstd/ ) {
84 binmode STDOUT, ':encoding(UTF-8)';
87 -type => 'application/octet-stream',
88 -attachment=>"$file_pre$file_id.$format");