Bug 10230: show correct matching record
[koha.git] / C4 / XISBN.pm
index aa9687c..12025f8 100644 (file)
@@ -20,7 +20,6 @@ package C4::XISBN;
 use XML::Simple;
 #use LWP::Simple;
 use C4::Biblio;
-use C4::Items;
 use C4::Koha;
 use C4::External::Syndetics qw(get_syndetics_editions);
 use LWP::UserAgent;
@@ -32,7 +31,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 
 BEGIN {
        require Exporter;
-       $VERSION = 3.01;
+    $VERSION = 3.07.00.049;
        @ISA = qw(Exporter);
        @EXPORT_OK = qw(
                &get_xisbns
@@ -72,7 +71,6 @@ sub _get_biblio_from_xisbn {
     if ($xbib_data->{biblionumber}) {
         $xbiblio = GetBiblioData($xbib_data->{biblionumber});
         $xbiblio->{normalized_isbn} = GetNormalizedISBN($xbiblio->{isbn});
-        $xbiblio->{items} = GetItemsByBiblioitemnumber($xbib_data->{biblionumber});
     }
     return ($xbiblio);
 }
@@ -85,7 +83,7 @@ sub _get_biblio_from_xisbn {
 
 sub get_xisbns {
     my ( $isbn ) = @_;
-    my ($response,$thing_response,$xisbn_response,$gapines_response,$syndetics_response);
+    my ($response,$thing_response,$xisbn_response,$syndetics_response);
     # THINGISBN
     if ( C4::Context->preference('ThingISBN') ) {
         my $url = "http://www.librarything.com/api/thingISBN/".$isbn;
@@ -104,7 +102,7 @@ sub get_xisbns {
     # XISBN
     if ( C4::Context->preference('XISBN') ) {
         my $affiliate_id=C4::Context->preference('OCLCAffiliateID');
-        my $limit = C4::Context->preference('XISBNDailyLimit') || 499;
+        my $limit = C4::Context->preference('XISBNDailyLimit') || 999;
         my $reached_limit = _service_throttle('xisbn',$limit);
         my $url = "http://xisbn.worldcat.org/webservices/xid/isbn/".$isbn."?method=getEditions&format=xml&fl=form,year,lang,ed";
         $url.="&ai=".$affiliate_id if $affiliate_id;
@@ -113,12 +111,7 @@ sub get_xisbns {
         }
     }
 
-    # PINES ISBN (Experimental)
-    #if ( C4::Context->preference('PINESISBN') ) {
-    #    my $url = "http://www.librarything.com/api/thingISBN/".$isbn;
-    #    $gapines_response = _get_url($url,'thingisbn');
-    #}
-    $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] },  @{ $syndetics_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] }, @{ $gapines_response->{isbn} or [] } ];
+    $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] },  @{ $syndetics_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] } ];
     my @xisbns;
     my $unique_xisbns; # a hashref
 
@@ -163,12 +156,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
@@ -176,7 +173,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;
 }
 
@@ -185,6 +184,8 @@ __END__
 
 =head1 NOTES
 
+=cut
+
 =head1 AUTHOR
 
 Joshua Ferraro <jmf@liblime.com>