#
# This file is part of Koha.
#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use MARC::File::XML;
# Checks if the script is called from commandline
my $commandline = not defined $ENV{GATEWAY_INTERFACE};
+
+# @biblionumbers is only use for csv export from circulation.pl
+my @biblionumbers = uniq $query->param("biblionumbers");
+
if ( $commandline ) {
# Getting parameters
&& !C4::Context->IsSuperLibrarian()
&& C4::Context->userenv->{branch} ) ? 1 : 0;
-my $branch = $query->param("branch") || '';
+my @branch = $query->param("branch");
if ( C4::Context->preference("IndependentBranches")
&& C4::Context->userenv
&& !C4::Context->IsSuperLibrarian() )
{
- $branch = C4::Context->userenv->{'branch'};
+ @branch = ( C4::Context->userenv->{'branch'} );
}
+# if stripping nonlocal items, use loggedinuser's branch
+my $localbranch = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
+
+my %branchmap = map { $_ => 1 } @branch; # for quick lookups
my $backupdir = C4::Context->config('backupdir');
if ( $op eq "export" ) {
- if ( $output_format eq "iso2709" or $output_format eq "xml" ) {
+ if (
+ $output_format eq "iso2709"
+ or $output_format eq "xml"
+ or (
+ $output_format eq 'csv'
+ and not @biblionumbers
+ )
+ ) {
my $charset = 'utf-8';
my $mimetype = 'application/octet-stream';
- binmode STDOUT, ':encoding(UTF-8)';
+
+ binmode STDOUT, ':encoding(UTF-8)'
+ if $filename =~ m/\.gz$/
+ or $filename =~ m/\.bz2$/
+ or $output_format ne 'csv';
+
if ( $filename =~ m/\.gz$/ ) {
$mimetype = 'application/x-gzip';
$charset = '';
print $query->header(
-type => $mimetype,
-charset => $charset,
- -attachment => $filename
+ -attachment => $filename,
) unless ($commandline);
$record_type = $query->param("record_type") unless ($commandline);
itemstable => $itemstable,
StartingBiblionumber => $StartingBiblionumber,
EndingBiblionumber => $EndingBiblionumber,
- branch => $branch,
+ branch => \@branch,
start_callnumber => $start_callnumber,
end_callnumber => $end_callnumber,
start_accession => $start_accession,
# Someone is trying to mess us up
exit;
}
-
unless (@biblionumbers) {
my $sth = $dbh->prepare($sql_query);
$sth->execute(@sql_params);
my ( $homebranchfield, $homebranchsubfield ) =
GetMarcFromKohaField( 'items.homebranch', '' );
for my $itemfield ( $record->field($homebranchfield) ) {
-
-# if stripping nonlocal items, use loggedinuser's branch if they didn't select one
- $branch = C4::Context->userenv->{'branch'}
- unless $branch;
$record->delete_field($itemfield)
if ( $dont_export_items
- || $itemfield->subfield($homebranchsubfield) ne
- $branch );
+ || $localbranch ne $itemfield->subfield(
+ $homebranchsubfield) );
}
}
}
}
}
else {
- $record->delete_fields($field);
+ $record->delete_fields($record->field($field));
}
}
}
print MARC::File::XML::record($record);
print "\n";
}
- else {
+ elsif ( $output_format eq 'iso2709' ) {
my $errorcount_on_decode = eval { scalar(MARC::File::USMARC->decode( $record->as_usmarc )->warnings()) };
if ($errorcount_on_decode or $@){
warn $@ if $@;
print MARC::File::XML::footer();
print "\n";
}
+ if ( $output_format eq 'csv' ) {
+ my $csv_profile_id = $query->param('csv_profile')
+ || GetCsvProfileId( C4::Context->preference('ExportWithCsvProfile') );
+ my $output =
+ marc2csv( \@recordids,
+ $csv_profile_id );
+
+ print $output;
+ }
exit;
}
elsif ( $output_format eq "csv" ) {
my @biblionumbers = uniq $query->param("biblionumbers");
my @itemnumbers = $query->param("itemnumbers");
+ my $csv_profile_id = $query->param('csv_profile') || GetCsvProfileId( C4::Context->preference('ExportWithCsvProfile') );
my $output =
marc2csv( \@biblionumbers,
- GetCsvProfileId( C4::Context->preference('ExportWithCsvProfile') ),
+ $csv_profile_id,
\@itemnumbers, );
print $query->header(
-type => 'application/octet-stream',
push @branchloop,
{
value => $thisbranch,
- selected => $thisbranch eq $branch,
+ selected => %branchmap ? $branchmap{$thisbranch} : 1,
branchname => $branches->{$thisbranch}->{'branchname'},
};
}
itemtypeloop => \@itemtypesloop,
authtypeloop => \@authtypesloop,
export_remove_fields => C4::Context->preference("ExportRemoveFields"),
+ csv_profiles => C4::Csv::GetCsvProfiles('marc'),
);
output_html_with_http_headers $query, $cookie, $template->output;
my $itemstable = $params->{itemstable};
my $StartingBiblionumber = $params->{StartingBiblionumber};
my $EndingBiblionumber = $params->{EndingBiblionumber};
- my $branch = $params->{branch};
+ my @branch = @{ $params->{branch} };
my $start_callnumber = $params->{start_callnumber};
my $end_callnumber = $params->{end_callnumber};
my $start_accession = $params->{start_accession};
my $end_accession = $params->{end_accession};
my $itemtype = $params->{itemtype};
my $items_filter =
- $branch
+ @branch
|| $start_callnumber
|| $end_callnumber
|| $start_accession
push @sql_params, $EndingBiblionumber;
}
- if ($branch) {
- $sql_query .= " AND homebranch = ? ";
- push @sql_params, $branch;
+ if (@branch) {
+ $sql_query .= " AND homebranch IN (".join(',',map({'?'} @branch)).")";
+ push @sql_params, @branch;
}
if ($start_callnumber) {