# 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
);
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'};
}
} @{ $sth->fetchall_arrayref };
}
+ my $xml_header_written = 0;
for my $recordid ( uniq @recordids ) {
if ($deleted_barcodes) {
my $q = "
}
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" ) {
$template->param(
branchloop => \@branchloop,
itemtypeloop => \@itemtypesloop,
- DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
authtypeloop => \@authtypesloop,
export_remove_fields => C4::Context->preference("ExportRemoveFields"),
);
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 =
}
if ($start_callnumber) {
- $sql_query .= " AND itemcallnumber <= ? ";
+ $sql_query .= " AND itemcallnumber >= ? ";
push @sql_params, $start_callnumber;
}
if ($end_callnumber) {
- $sql_query .= " AND itemcallnumber >= ? ";
+ $sql_query .= " AND itemcallnumber <= ? ";
push @sql_params, $end_callnumber;
}
if ($start_accession) {