[Koha-patches] [PATCH] Bugfix ShelfBrowser using unsanitized ISBNs. Owen reported the

Joe Atzberger joe.atzberger at liblime.com
Mon May 19 22:43:17 CEST 2008


 This is a RESEND of previous patch to include commit message.
 Bugfix ShelfBrowser using unsanitized ISBNs.  Owen reported the
 ShelfBrowser failing to display book image, even when the correct
 image was already displayed on the same page above.  This fixes it.
 Next we should move the sanitize function into C4 for widespread
 consumption and consistency.

---
 opac/opac-detail.pl |   36 +++++++++++++++++++++++++-----------
 1 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index d881bba..e1791ae 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -223,20 +223,26 @@ $template->param(
     loggedincommenter   => $loggedincommenter
 );
 
+sub isbn_cleanup ($) {
+	my $isbn=shift;
+	if (
+		$isbn =~ /\b(\d{13})\b/ or
+		$isbn =~ /\b(\d{10})\b/ or 
+		$isbn =~ /\b(\d{9}X)\b/i
+	) {
+		return $1;
+	}
+	return undef;
+}
+
 # XISBN Stuff
 my $xisbn=$dat->{'isbn'};
 $xisbn =~ /(\d*[X]*)/;
 $template->param(amazonisbn => $1);		# FIXME: so it is OK if the ISBN = 'XXXXX' ?
-my ($clean, $amazonisbn);
-$amazonisbn = $1;
+my ($clean,$clean2);
 # these might be overkill, but they are better than the regexp above.
-if (
-	$amazonisbn =~ /\b(\d{13})\b/ or
-	$amazonisbn =~ /\b(\d{10})\b/ or 
-	$amazonisbn =~ /\b(\d{9}X)\b/i
-) {
-	$clean = $1;
-	$template->param(clean_isbn => $1);
+if ($clean = isbn_cleanup($xisbn)){
+	$template->param(clean_isbn => $clean);
 }
 
 if (C4::Context->preference("OPACFRBRizeEditions")==1) {
@@ -303,7 +309,11 @@ while (my $this_item = $sth_shelfbrowse_previous->fetchrow_hashref()) {
     $sth_get_biblio->execute($this_item->{biblionumber});
     while (my $this_biblio = $sth_get_biblio->fetchrow_hashref()) {
         $this_item->{'title'} = $this_biblio->{'title'};
-        $this_item->{'isbn'} = $this_biblio->{'isbn'};
+		if ($clean2 = isbn_cleanup($this_biblio->{'isbn'})) {
+        	$this_item->{'isbn'} = $clean2;
+		} else { 
+			$this_item->{'isbn'} = $this_biblio->{'isbn'};
+		}
     }
     unshift @previous_items, $this_item;
 }
@@ -317,7 +327,11 @@ while (my $this_item = $sth_shelfbrowse_next->fetchrow_hashref()) {
     $sth_get_biblio->execute($this_item->{biblionumber});
     while (my $this_biblio = $sth_get_biblio->fetchrow_hashref()) {
         $this_item->{'title'} = $this_biblio->{'title'};
-        $this_item->{'isbn'} = $this_biblio->{'isbn'};
+		if ($clean2 = isbn_cleanup($this_biblio->{'isbn'})) {
+        	$this_item->{'isbn'} = $clean2;
+		} else { 
+			$this_item->{'isbn'} = $this_biblio->{'isbn'};
+		}
     }
     push @next_items, $this_item;
 }
-- 
1.5.5.GIT




More information about the Koha-patches mailing list