X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FXISBN.pm;h=55126334b3c9c997c997126edb3b40d6ba07643e;hb=e54152a90b0770c240232bc27363f77fed910a8d;hp=13abf2543fc14beef738aa6770ffce8b461bcbe0;hpb=c0441ebbfb547507cda86c8c05575d88761045e1;p=koha.git diff --git a/C4/XISBN.pm b/C4/XISBN.pm index 13abf2543f..55126334b3 100644 --- a/C4/XISBN.pm +++ b/C4/XISBN.pm @@ -4,34 +4,37 @@ package C4::XISBN; # # 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use XML::Simple; #use LWP::Simple; use C4::Biblio; use C4::Koha; +use C4::Search; use C4::External::Syndetics qw(get_syndetics_editions); use LWP::UserAgent; use HTTP::Request::Common; +use Koha::SearchEngine; +use Koha::SearchEngine::Search; + use strict; #use warnings; FIXME - Bug 2505 -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); BEGIN { require Exporter; - $VERSION = 3.01; @ISA = qw(Exporter); @EXPORT_OK = qw( &get_xisbns @@ -61,18 +64,20 @@ This module provides facilities for retrieving ThingISBN and XISBN content in Ko sub _get_biblio_from_xisbn { my $xisbn = shift; - $xisbn.='%'; my $dbh = C4::Context->dbh; - my $query = "SELECT biblionumber FROM biblioitems WHERE isbn LIKE ?"; - my $sth = $dbh->prepare($query); - $sth->execute($xisbn); - my $xbib_data = $sth->fetchrow_hashref(); - my $xbiblio; - if ($xbib_data->{biblionumber}) { - $xbiblio = GetBiblioData($xbib_data->{biblionumber}); - $xbiblio->{normalized_isbn} = GetNormalizedISBN($xbiblio->{isbn}); - } - return ($xbiblio); + + my $searcher = Koha::SearchEngine::Search->new({index => $Koha::SearchEngine::BIBLIOS_INDEX}); + my ( $errors, $results, $total_hits ) = $searcher->simple_search_compat( "nb=$xisbn", 0, 1 ); + return unless ( !$errors && scalar @$results ); + + my $record = C4::Search::new_record_from_zebra( 'biblioserver', $results->[0] ); + my $biblionumber = C4::Biblio::get_koha_field_from_marc('biblio', 'biblionumber', $record, ''); + return unless $biblionumber; + + my $xbiblio = GetBiblioData($biblionumber); + return unless $xbiblio; + $xbiblio->{normalized_isbn} = GetNormalizedISBN($xbiblio->{isbn}); + return $xbiblio; } =head1 get_xisbns($isbn); @@ -156,12 +161,16 @@ sub _get_url { sub _service_throttle { my ($service_type,$daily_limit) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("SELECT service_count FROM services_throttle WHERE service_type=?"); + my $sth = $dbh->prepare(q{ SELECT service_count FROM services_throttle WHERE service_type=? }); $sth->execute($service_type); - my $count = 1; + my $count = 0; - while (my $counter = $sth->fetchrow_hashref()) { - $count = $counter->{service_count} if $counter->{service_count}; + if ($sth->rows == 0) { + # initialize services throttle + my $sth2 = $dbh->prepare(q{ INSERT INTO services_throttle (service_type, service_count) VALUES (?, ?) }); + $sth2->execute($service_type, $count); + } else { + $count = $sth->fetchrow_array; } # we're over the limit @@ -169,7 +178,9 @@ sub _service_throttle { # not over the limit $count++; - $sth = $dbh->do("UPDATE services_throttle SET service_count=$count WHERE service_type='xisbn'"); + my $sth3 = $dbh->prepare(q{ UPDATE services_throttle SET service_count=? WHERE service_type=? }); + $sth3->execute($count, $service_type); + return undef; }