Bugzilla – Attachment 4528 Details for
Bug 6539
Z39.50 Search ISBN Field Populated with title
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Proposed Patch for this bug
0001-Bug-6539-Creates-a-function-to-validate-an-isbn-and-.patch (text/plain), 4.94 KB, created by
Peter Lorimer
on 2011-06-29 13:51:43 UTC
(
hide
)
Description:
Proposed Patch for this bug
Filename:
MIME Type:
Creator:
Peter Lorimer
Created:
2011-06-29 13:51:43 UTC
Size:
4.94 KB
patch
obsolete
>From af1db4e3223749b01b653436d0c7ca32b759aefc Mon Sep 17 00:00:00 2001 >From: Peter Lorimer <peter@oslo.ie> >Date: Wed, 29 Jun 2011 14:11:37 +0100 >Subject: [PATCH] Bug 6539: Creates a function to validate an isbn and uses it to populate the Z3950 search popup isbn with this value, the the value is not an isbn number the title field is populated. >Content-Type: text/plain; charset="utf-8" > >To Test: >Performa a catalogue search then hit the Z39.50 search button and your search term should populate the Title field in the pop up window. Now perform a search on a valid ISBN (10 or 13) number and the term you searched for should populate the ISBN field on the popup window. >--- > C4/Search.pm | 73 ++++++++++++++++++++++++++++++++++++++++++++++++--------- > 1 files changed, 61 insertions(+), 12 deletions(-) > >diff --git a/C4/Search.pm b/C4/Search.pm >index c3cff65..be96946 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -33,6 +33,7 @@ use C4::Debug; > use C4::Items; > use YAML; > use URI::Escape; >+use POSIX; > > use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG); > >@@ -1423,7 +1424,7 @@ sub searchResults { > #find branchname > #get branch information..... > my %branches; >- my $bsth =$dbh->prepare("SELECT branchcode,branchname FROM branches"); # FIXME : use C4::Branch::GetBranches >+ my $bsth =$dbh->prepare("SELECT branchcode,branchname FROM branches "); > $bsth->execute(); > while ( my $bdata = $bsth->fetchrow_hashref ) { > $branches{ $bdata->{'branchcode'} } = $bdata->{'branchname'}; >@@ -1671,7 +1672,7 @@ sub searchResults { > ($reservestatus, $reserveitem) = C4::Reserves::CheckReserves($item->{itemnumber}); > } > >- # item is withdrawn, lost, damaged, not for loan, reserved or in transit >+ # item is withdrawn, lost or damaged > if ( $item->{wthdrawn} > || $item->{itemlost} > || $item->{damaged} >@@ -1686,15 +1687,6 @@ sub searchResults { > $item_in_transit_count++ if $transfertwhen ne ''; > $item_onhold_count++ if $reservestatus eq 'Waiting'; > $item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan}; >- >- # can place hold on item ? >- if ((!$item->{damaged} || C4::Context->preference('AllowHoldsOnDamagedItems')) >- && !$item->{itemlost} >- && !$item->{withdrawn} >- ) { >- $can_place_holds = 1; >- } >- > $other_count++; > > my $key = $prefix . $item->{status}; >@@ -2599,9 +2591,20 @@ $template->param ( MYLOOP => C4::Search::z3950_search_args($searchscalar) ) > > =cut > >+ >+ >+ > sub z3950_search_args { > my $bibrec = shift; >- $bibrec = { title => $bibrec } if !ref $bibrec; >+ >+ >+ if (validate_isbn($bibrec) == 1) >+ { >+ $bibrec = { isbn => $bibrec } if !ref $bibrec; >+} >+else { >+ $bibrec = { title => $bibrec } if !ref $bibrec; >+} > my $array = []; > for my $field (qw/ lccn isbn issn title author dewey subject /) > { >@@ -2641,6 +2644,52 @@ OR adds a new authority record > =cut > > >+=head >+BOOL validate_isbn($isbn_number) >+ >+This function validates an isbn number by: >+ >+1. Checking it is 10 or 13 characters long >+2. If it is 10 characters long, checks the lasd character is an 'X' and all other characters are digits >+3. If it is 13 characters long, checks it begins with '97' and all other characters are digits >+ >+=cut >+sub validate_isbn { >+ my $isbn = shift; >+ >+ # Handle ISBNs with spaces or hyphens in them >+ $isbn =~ s/\s+//g; >+ $isbn =~ s/\-//g; >+ >+ # Is it the correct length ? >+ if (length($isbn) != 10 && length($isbn) != 13) >+ { return 0; } >+ else { >+ >+ # Is the last char 'x' for ISBN10 ? >+ my @chars = split('', $isbn); >+ if (length($isbn) == 10 && uc($chars[9]) eq 'X') >+ { >+ # Are all but the last characters digits ? >+ if (isdigit(substr($isbn,0,length($isbn)-1)) ) >+ { return 1;} >+ } >+ >+ # Is it 13 chars long and begin with '97' ? >+ if ( ($chars[0] eq '9' && $chars[1] eq '7') && length($isbn) == 13) >+ { >+ # is it made up of digits? >+ if (isdigit($isbn)) >+ { return 1;} >+ >+ >+ } >+ >+ } >+ # If this function has not yet successfully returned the return failure >+ return 0; >+} >+ > sub BiblioAddAuthorities{ > my ( $record, $frameworkcode ) = @_; > my $dbh=C4::Context->dbh; >-- >1.7.4.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6539
:
4528
|
4529
|
4530
|
4539
|
4643
|
7328