use strict;
use C4::Biblio;
use C4::Koha;
+use C4::Charset;
use MARC::File::USMARC;
use C4::ImportBatch;
-require Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-# set the version for version checking
-$VERSION = 0.01;
+BEGIN {
+ # set the version for version checking
+ $VERSION = 0.02;
+ require Exporter;
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&ImportBreeding &BreedingSearch);
+}
=head1 NAME
-C4::Breeding : script to add a biblio in marc_breeding table.
+C4::Breeding : module to add biblios to import_records via
+ the breeding/reservoir API.
=head1 SYNOPSIS
=head1 DESCRIPTION
- ImportBreeding import MARC records in the reservoir (marc_breeding table).
+ ImportBreeding import MARC records in the reservoir (import_records/import_batches tables).
the records can be properly encoded or not, we try to reencode them in utf-8 if needed.
works perfectly with BNF server, that sends UNIMARC latin1 records. Should work with other servers too.
- the FixEncoding sub is in Koha.pm, as it's a general usage sub.
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&ImportBreeding &BreedingSearch);
=head2 ImportBreeding
$batch_id = GetZ3950BatchId($filename);
} else {
# create a new one
- # FIXME - handle comments
$batch_id = AddImportBatch('create_new', 'staging', 'batch', $filename, '');
}
my $searchisbn = $dbh->prepare("select biblioitemnumber from biblioitems where isbn=?");
# FIXME -- not sure that this kind of checking is actually needed
my $searchbreeding = $dbh->prepare("select import_record_id from import_biblios where isbn=? and title=?");
- $encoding = C4::Context->preference("marcflavour") unless $encoding;
+# $encoding = C4::Context->preference("marcflavour") unless $encoding;
# fields used for import results
my $imported=0;
my $alreadyindb = 0;
my $notmarcrecord = 0;
my $breedingid;
for (my $i=0;$i<=$#marcarray;$i++) {
- my $marcrecord = FixEncoding($marcarray[$i]."\x1D");
-
+ my ($marcrecord, $charset_result, $charset_errors);
+ ($marcrecord, $charset_result, $charset_errors) =
+ MarcToUTF8Record($marcarray[$i]."\x1D", C4::Context->preference("marcflavour"), $encoding);
+
+# warn "$i : $marcarray[$i]";
# FIXME - currently this does nothing
my @warnings = $marcrecord->warnings();
($biblioitemnumber) = $searchissn->fetchrow;
}
}
- if ($biblioitemnumber) {
+ if ($biblioitemnumber && $overwrite_biblio ne 2) {
$alreadyindb++;
} else {
# FIXME - in context of batch load,
C<$random> contains the random seed from a z3950 search.
C<$count> is the number of items in C<@results>. C<@results> is an
-array of references-to-hash; the keys are the items from the C<marc_breeding> table of the Koha database.
+array of references-to-hash; the keys are the items from the C<import_records> and
+C<import_biblios> tables of the Koha database.
=cut
return($count, @results);
} # sub breedingsearch
+1;
+__END__
-END { } # module clean-up code here (global destructor)