Bug 12243: ensure that records with invalid ISBNs do not cause searches to fail
authorKyle M Hall <kyle@bywatersolutions.com>
Tue, 13 May 2014 11:20:39 +0000 (07:20 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Mon, 19 May 2014 15:42:56 +0000 (15:42 +0000)
Some types of invalid ISBNs, when run through C4::Koha::NormalizeISBN
can produce ISBN objects that contain invalid ISBNs. This can be
reproduced with an ISBN that has an invalid prefix, group code or
publisher code. An example ISBN would be "0788893777 (2 DVD 45th ed)".

When attempting to look up a record with such an ISBN, you will get an
error along the lines of: Can't call method "as_string" on an undefined
value

Instead of checking for the BAD_ISBN state, we should be checking for
the GOOD_ISBN state via the method is_valid.

Test Plan:
1) Edit a record, add the following ISBN to your record:
   0788893777 (2 DVD 45th ed)
2) When Koha redirects to the record, you should see the error message
   described
3) Apply this patch
4) Reload the page, you should now see your record

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
C4/Koha.pm

index 5988249..1061a78 100644 (file)
@@ -1595,7 +1595,7 @@ sub NormalizeISBN {
 
     my $isbn = Business::ISBN->new($string);
 
-    if ( $isbn && $isbn->error != Business::ISBN::BAD_ISBN ) {
+    if ( $isbn && $isbn->is_valid() ) {
 
         if ( $format eq 'ISBN-10' ) {
             $isbn = $isbn->as_isbn10();