X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=Koha%2FMetaSearcher.pm;h=f9d3837f6b0e5e2fa119db704b502cfd0e83c4a2;hb=39e49eb91dfb157127aa65554600425d47e4513f;hp=280d1b24c0e39c90d993ced0b3ce2d19d5b390c6;hpb=b9e8b50b50b2b47bb176bdaac412afbe46b4a567;p=srvgit diff --git a/Koha/MetaSearcher.pm b/Koha/MetaSearcher.pm index 280d1b24c0..f9d3837f6b 100644 --- a/Koha/MetaSearcher.pm +++ b/Koha/MetaSearcher.pm @@ -21,15 +21,16 @@ use Modern::Perl; use base 'Class::Accessor'; -use C4::Charset qw( MarcToUTF8Record ); -use C4::Search qw(); # Purely for new_record_from_zebra +use C4::Biblio qw(TransformMarcToKoha); +use C4::Charset qw( MarcToUTF8Record SetUTF8Flag ); +use C4::Search qw( new_record_from_zebra ); use DBIx::Class::ResultClass::HashRefInflator; use IO::Select; use Koha::Caches; use Koha::Database; use Koha::MetadataRecord; use MARC::File::XML; -use Storable qw( store_fd fd_retrieve ); +use Storable qw( fd_retrieve store_fd ); use Time::HiRes qw( clock_gettime CLOCK_MONOTONIC ); use UUID; use ZOOM; @@ -58,26 +59,13 @@ sub new { sub handle_hit { my ( $self, $index, $server, $marcrecord ) = @_; - my $record = Koha::MetadataRecord->new( { schema => 'marc', record => $marcrecord } ); - - my %fetch = ( - title => 'biblio.title', - subtitle => 'biblio.subtitle', - seriestitle => 'biblio.seriestitle', - author => 'biblio.author', - isbn =>'biblioitems.isbn', - issn =>'biblioitems.issn', - lccn =>'biblioitems.lccn', #LC control number (not call number) - edition =>'biblioitems.editionstatement', - date => 'biblio.copyrightdate', #MARC21 - date2 => 'biblioitems.publicationyear', #UNIMARC - ); - - my $metadata = {}; - while ( my ( $key, $kohafield ) = each %fetch ) { - $metadata->{$key} = $record->getKohaField($kohafield); - } - $metadata->{date} //= $metadata->{date2}; + my @kohafields = ('biblio.title','biblio.subtitle','biblio.seriestitle','biblio.author', + 'biblioitems.isbn','biblioitems.issn','biblioitems.lccn','biblioitems.editionstatement', + 'biblio.copyrightdate','biblioitems.publicationyear'); + my $metadata = C4::Biblio::TransformMarcToKoha({ kohafields => \@kohafields, record => $marcrecord}); + $metadata->{edition} = delete $metadata->{editionstatement}; + $metadata->{date} = delete $metadata->{copyrightdate}; + $metadata->{date} //= delete $metadata->{publicationyear}; push @{ $self->{results} }, { server => $server, @@ -127,7 +115,7 @@ sub search { extra => $2, id => $server_id, host => $server_id, - name => $server_id, + servername => $server_id, }; } } @@ -298,6 +286,7 @@ sub _import_record { my ( $marcrecord ) = MarcToUTF8Record( $raw, $marcflavour, $encoding ); #ignores charset return values + SetUTF8Flag($marcrecord); return $marcrecord; }