X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=tools%2Fexport.pl;h=9bbed0b7881b0aa2b9e5c0003570c2d1ae903c28;hb=3f9a8ccc18c8d97ac4167e313f4d3a685a9000dc;hp=c7a8fd818e3dd5f31212bfb68725676e7c808b14;hpb=8a53d284907bbbe9d3ee2552e964af9f5dfbd0ac;p=koha_fer diff --git a/tools/export.pl b/tools/export.pl index c7a8fd818e..9bbed0b788 100755 --- a/tools/export.pl +++ b/tools/export.pl @@ -17,12 +17,13 @@ # Suite 330, Boston, MA 02111-1307 USA use Modern::Perl; +use MARC::File::XML; use List::MoreUtils qw(uniq); use Getopt::Long; use CGI; use C4::Auth; use C4::AuthoritiesMarc; # GetAuthority -use C4::Biblio; # GetMarcBiblio GetXmlBiblio +use C4::Biblio; # GetMarcBiblio use C4::Branch; # GetBranches use C4::Csv; use C4::Koha; # GetItemTypes @@ -117,15 +118,15 @@ my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( ); my $limit_ind_branch = - ( C4::Context->preference('IndependantBranches') + ( C4::Context->preference('IndependentBranches') && C4::Context->userenv - && !( C4::Context->userenv->{flags} & 1 ) + && !C4::Context->IsSuperLibrarian() && C4::Context->userenv->{branch} ) ? 1 : 0; my $branch = $query->param("branch") || ''; -if ( C4::Context->preference("IndependantBranches") +if ( C4::Context->preference("IndependentBranches") && C4::Context->userenv - && !( C4::Context->userenv->{flags} & 1 ) ) + && !C4::Context->IsSuperLibrarian() ) { $branch = C4::Context->userenv->{'branch'}; } @@ -309,6 +310,7 @@ if ( $op eq "export" ) { } @{ $sth->fetchall_arrayref }; } + my $xml_header_written = 0; for my $recordid ( uniq @recordids ) { if ($deleted_barcodes) { my $q = " @@ -356,37 +358,51 @@ if ( $op eq "export" ) { } if ($export_remove_fields) { - my @fields = split " ", $export_remove_fields; - foreach (@fields) { - /^(\d*)(\w)?$/; - my $field = $1; - my $subfield = $2; - - # skip if this record doesn't have this field - next if not defined $record->field($field); - if ($subfield) { - $record->field($field)->delete_subfields($subfield); - } - else { - $record->delete_field( $record->field($field) ); + for my $f ( split / /, $export_remove_fields ) { + if ( $f =~ m/^(\d{3})(.)?$/ ) { + my ( $field, $subfield ) = ( $1, $2 ); + + # skip if this record doesn't have this field + if ( defined $record->field($field) ) { + if ( defined $subfield ) { + my @tags = $record->field($field); + foreach my $t (@tags) { + $t->delete_subfields($subfield); + } + } + else { + $record->delete_fields($field); + } + } } } } RemoveAllNsb($record) if ($clean); if ( $output_format eq "xml" ) { - if ( $marcflavour eq 'UNIMARC' && $record_type eq 'auths' ) - { - print $record->as_xml_record('UNIMARCAUTH'); - } - else { - print $record->as_xml_record($marcflavour); + unless ($xml_header_written) { + MARC::File::XML->default_record_format( + ( + $marcflavour eq 'UNIMARC' + && $record_type eq 'auths' + ) ? 'UNIMARCAUTH' : $marcflavour + ); + print MARC::File::XML::header(); + print "\n"; + $xml_header_written = 1; } + print MARC::File::XML::record($record); + print "\n"; } else { print $record->as_usmarc(); } } } + if ($xml_header_written) { + print MARC::File::XML::footer(); + print "\n"; + } + exit; } elsif ( $format eq "csv" ) { @@ -466,7 +482,6 @@ else { $template->param( branchloop => \@branchloop, itemtypeloop => \@itemtypesloop, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), authtypeloop => \@authtypesloop, export_remove_fields => C4::Context->preference("ExportRemoveFields"), ); @@ -506,7 +521,7 @@ sub construct_query { my $branch = $params->{branch}; my $start_callnumber = $params->{start_callnumber}; my $end_callnumber = $params->{end_callnumber}; - my $start_accession = $params->{star_accession}; + my $start_accession = $params->{start_accession}; my $end_accession = $params->{end_accession}; my $itemtype = $params->{itemtype}; my $items_filter =