View | Details | Raw Unified | Return to bug 6539
Collapse All | Expand All

(-)a/C4/Search.pm (-47 / +3 lines)
Lines 33-39 use C4::Debug; Link Here
33
use C4::Items;
33
use C4::Items;
34
use YAML;
34
use YAML;
35
use URI::Escape;
35
use URI::Escape;
36
use POSIX;
36
use Business::ISBN;
37
37
38
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG);
38
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG);
39
39
Lines 1424-1430 sub searchResults { Link Here
1424
    #find branchname
1424
    #find branchname
1425
    #get branch information.....
1425
    #get branch information.....
1426
    my %branches;
1426
    my %branches;
1427
    my $bsth =$dbh->prepare("SELECT branchcode,branchname FROM branches ");                
1427
    my $bsth =$dbh->prepare("SELECT branchcode,branchname FROM branches ");                
1428
    $bsth->execute();
1428
    $bsth->execute();
1429
    while ( my $bdata = $bsth->fetchrow_hashref ) {
1429
    while ( my $bdata = $bsth->fetchrow_hashref ) {
1430
        $branches{ $bdata->{'branchcode'} } = $bdata->{'branchname'};
1430
        $branches{ $bdata->{'branchcode'} } = $bdata->{'branchname'};
Lines 1687-1692 sub searchResults { Link Here
1687
                    $item_in_transit_count++ if $transfertwhen ne '';
1695
                    $item_in_transit_count++ if $transfertwhen ne '';
1688
		    $item_onhold_count++     if $reservestatus eq 'Waiting';
1696
		    $item_onhold_count++     if $reservestatus eq 'Waiting';
1689
                    $item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan};
1697
                    $item->{status} = $item->{wthdrawn} . "-" . $item->{itemlost} . "-" . $item->{damaged} . "-" . $item->{notforloan};
1690
# can place hold on item ?
1698
# can place hold on item ?
1691
                   if ((!$item->{damaged} || C4::Context->preference('AllowHoldsOnDamagedItems'))
1699
                   if ((!$item->{damaged} || C4::Context->preference('AllowHoldsOnDamagedItems'))
1692
                     && !$item->{itemlost}
1700
                     && !$item->{itemlost}
1693
                     && !$item->{withdrawn}
1701
                     && !$item->{withdrawn}
1694
                   ) {
1702
                   ) {
1695
                       $can_place_holds = 1;
1703
                       $can_place_holds = 1;
1696
                   }
1704
                   }
1697
                   
1705
                   
1698
                    $other_count++;
1706
                    $other_count++;
1699
1707
1700
                    my $key = $prefix . $item->{status};
1708
                    my $key = $prefix . $item->{status};
Lines 2596-2604 $template->param ( MYLOOP => C4::Search::z3950_search_args($searchscalar) ) Link Here
2596
2614
2597
sub z3950_search_args {
2615
sub z3950_search_args {
2598
    my $bibrec = shift;
2616
    my $bibrec = shift;
2599
  
2617
    my $isbn = Business::ISBN->new($bibrec); 
2600
 
2618
 
2601
    if (validate_isbn($bibrec) == 1)
2619
    if (defined $isbn && $isbn->is_valid)
2602
    {
2620
    {
2603
    $bibrec = { isbn => $bibrec } if !ref $bibrec;
2621
    $bibrec = { isbn => $bibrec } if !ref $bibrec;
2604
}
2622
}
Lines 2644-2694 OR adds a new authority record Link Here
2644
=cut
2662
=cut
2645
2663
2646
2664
2647
=head
2648
BOOL validate_isbn($isbn_number)
2649
2665
2650
This function validates an isbn number by:
2651
2666
2652
1. Checking it is 10 or 13 characters long
2653
2. If it is 10 characters long, checks the lasd character is an 'X' and all other characters are digits
2654
3. If it is 13 characters long, checks it begins with '97' and all other characters are digits
2655
2656
=cut
2657
sub validate_isbn { 
2658
  my $isbn = shift; 
2659
    
2660
    # Handle ISBNs with spaces or hyphens in them 
2661
    $isbn =~ s/\s+//g;
2662
    $isbn =~ s/\-//g;
2663
    
2664
    # Is it the correct length ?
2665
         if (length($isbn) != 10 && length($isbn) != 13)
2666
         { return 0; } 
2667
                     else {   
2668
                         
2669
                         # Is the last char 'x' for ISBN10 ?  
2670
                            my @chars = split('', $isbn); 
2671
                              if (length($isbn) == 10 && uc($chars[9]) eq 'X')
2672
                               {
2673
                                    # Are all but the last characters digits ? 
2674
                                    if (isdigit(substr($isbn,0,length($isbn)-1)) )
2675
                                     { return 1;}
2676
                               }
2677
  
2678
                    # Is it 13 chars long and begin with '97' ?
2679
                   if ( ($chars[0] eq '9' && $chars[1] eq '7') && length($isbn) == 13)
2680
                   {
2681
                       # is it made up of digits? 
2682
                    if (isdigit($isbn))  
2683
                     { return 1;}
2684
         
2685
      
2686
                    }
2687
      
2688
                 } 
2689
     # If this function has not yet successfully returned the return failure
2690
     return 0;
2691
}
2692
2667
2693
sub BiblioAddAuthorities{
2668
sub BiblioAddAuthorities{
2694
  my ( $record, $frameworkcode ) = @_;
2669
  my ( $record, $frameworkcode ) = @_;
2695
- 

Return to bug 6539