AuthoritiesMarc.pm Improvements
[koha.git] / C4 / Breeding.pm
index d21ae31..79f2e2f 100644 (file)
@@ -20,18 +20,24 @@ package C4::Breeding;
 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
 
@@ -50,15 +56,9 @@ C4::Breeding : script to add a biblio in marc_breeding table.
 
 =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
 
@@ -79,7 +79,6 @@ sub 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=?");
@@ -87,7 +86,7 @@ sub ImportBreeding {
     # 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;
@@ -95,8 +94,11 @@ sub ImportBreeding {
     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();
         
@@ -121,7 +123,7 @@ sub ImportBreeding {
                        ($biblioitemnumber) = $searchissn->fetchrow;
                 }
             }
-            if ($biblioitemnumber) {
+            if ($biblioitemnumber && $overwrite_biblio ne 2) {
                 $alreadyindb++;
             } else {
                 # FIXME - in context of batch load,
@@ -161,7 +163,8 @@ C<$isbn> contains isbn or issn,
 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
 
@@ -212,5 +215,6 @@ sub BreedingSearch {
     return($count, @results);
 } # sub breedingsearch
 
+1;
+__END__
 
-END { }       # module clean-up code here (global destructor)