use C4::Search;
use MARC::File::USMARC;
use MARC::Record;
+use Encode;
require Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
=head1 DESCRIPTION
-This module doesn't do anything.
+This is for depository of records coming from z3950 or directly imported.
=cut
sub ImportBreeding {
my ($marcrecords,$overwrite_biblio,$filename,$encoding,$z3950random) = @_;
- my @marcarray = split /\x1D/, $marcrecords;
+## use marc:batch send them in one by one
+# my @marcarray = split /\x1D/, $marcrecords;
my $dbh = C4::Context->dbh;
my @kohafields;
my @values;
my $alreadyinfarm = 0;
my $notmarcrecord = 0;
my $breedingid;
- for (my $i=0;$i<=$#marcarray;$i++) {
- my $marcrecord = MARC::File::USMARC::decode($marcarray[$i]."\x1D","","UTF-8",1);
+# for (my $i=0;$i<=$#marcarray;$i++) {
+ my $marcrecord = MARC::File::USMARC::decode($marcrecords);
+ my $marcxml=$marcrecord->as_xml_record($marcrecord);
+ $marcxml=Encode::encode('utf8',$marcxml);
my @warnings = $marcrecord->warnings();
if (scalar($marcrecord->fields()) == 0) {
$notmarcrecord++;
} else {
-
- my $oldbiblio = MARCmarc2koha($dbh,$marcrecord,'');
+ my $xmlhash=XML_xml2hash_onerecord($marcxml);
+ my $oldbiblio = XMLmarc2koha_onerecord($dbh,$xmlhash,'biblios');
# if isbn found and biblio does not exist, add it. If isbn found and biblio exists, overwrite or ignore depending on user choice
# drop every "special" char : spaces, - ...
$oldbiblio->{isbn} =~ s/ |-|\.//g,
if ($breedingid && $overwrite_biblio eq 0) {
$alreadyinfarm++;
} else {
- my $recoded;
- $recoded = $marcrecord->as_usmarc();
+ my $recoded=MARC::Record->new_from_xml($marcxml,"UTF-8");
+ $recoded->encoding('UTF-8');
+
if ($breedingid && $overwrite_biblio eq 1) {
- $replacesql ->execute($filename,substr($oldbiblio->{isbn}.$oldbiblio->{issn},0,10),$oldbiblio->{title},$oldbiblio->{author},$marcarray[$i]."\x1D",$encoding,$z3950random,$oldbiblio->{classification},$oldbiblio->{subclass},$breedingid);
+ $replacesql ->execute($filename,substr($oldbiblio->{isbn}.$oldbiblio->{issn},0,10),$oldbiblio->{title},$oldbiblio->{author},$recoded->as_usmarc,$encoding,$z3950random,$oldbiblio->{classification},$oldbiblio->{subclass},$breedingid);
} else {
- $insertsql ->execute($filename,substr($oldbiblio->{isbn}.$oldbiblio->{issn},0,10),$oldbiblio->{title},$oldbiblio->{author},$marcarray[$i]."\x1D",$encoding,$z3950random,$oldbiblio->{classification},$oldbiblio->{subclass});
+ $insertsql ->execute($filename,substr($oldbiblio->{isbn}.$oldbiblio->{issn},0,10),$oldbiblio->{title},$oldbiblio->{author},$recoded->as_usmarc,$encoding,$z3950random,$oldbiblio->{classification},$oldbiblio->{subclass});
$findbreedingid->execute;
$breedingid=$findbreedingid->fetchrow;
}
}
}
}
- }
+ #}
return ($notmarcrecord,$alreadyindb,$alreadyinfarm,$imported,$breedingid);
}