Lines 22-28
use strict;
Link Here
|
22 |
use warnings; |
22 |
use warnings; |
23 |
|
23 |
|
24 |
use C4::Biblio; |
24 |
use C4::Biblio; |
25 |
use C4::Koha qw( GetNormalizedISBN ); |
25 |
use C4::Koha qw( GetVariationsOfISBNs ); |
26 |
use C4::Charset qw( MarcToUTF8Record SetUTF8Flag ); |
26 |
use C4::Charset qw( MarcToUTF8Record SetUTF8Flag ); |
27 |
use MARC::File::USMARC; |
27 |
use MARC::File::USMARC; |
28 |
use MARC::Field; |
28 |
use MARC::Field; |
Lines 56-64
cataloguing reservoir features.
Link Here
|
56 |
|
56 |
|
57 |
=head2 BreedingSearch |
57 |
=head2 BreedingSearch |
58 |
|
58 |
|
59 |
($count, @results) = &BreedingSearch($title,$isbn); |
59 |
($count, @results) = &BreedingSearch($term); |
60 |
C<$title> contains the title, |
60 |
C<$term> contains the term to search, it will be searched as title,author, or isbn |
61 |
C<$isbn> contains isbn or issn, |
|
|
62 |
|
61 |
|
63 |
C<$count> is the number of items in C<@results>. C<@results> is an |
62 |
C<$count> is the number of items in C<@results>. C<@results> is an |
64 |
array of references-to-hash; the keys are the items from the C<import_records> and |
63 |
array of references-to-hash; the keys are the items from the C<import_records> and |
Lines 67-100
C<import_biblios> tables of the Koha database.
Link Here
|
67 |
=cut |
66 |
=cut |
68 |
|
67 |
|
69 |
sub BreedingSearch { |
68 |
sub BreedingSearch { |
70 |
my ($search,$isbn) = @_; |
69 |
my ($term) = @_; |
71 |
my $dbh = C4::Context->dbh; |
70 |
my $dbh = C4::Context->dbh; |
72 |
my $count = 0; |
71 |
my $count = 0; |
73 |
my ($query,@bind); |
72 |
my ($query,@bind); |
74 |
my $sth; |
73 |
my $sth; |
75 |
my @results; |
74 |
my @results; |
76 |
|
75 |
|
|
|
76 |
my $authortitle = $term; |
77 |
$authortitle =~ s/(\s+)/\%/g; #Replace spaces with wildcard |
78 |
$authortitle = "%" . $authortitle . "%"; #Add wildcard to start and end of string |
77 |
# normalise ISBN like at import |
79 |
# normalise ISBN like at import |
78 |
$isbn = C4::Koha::GetNormalizedISBN($isbn); |
80 |
my @isbns = C4::Koha::GetVariationsOfISBNs($term); |
79 |
|
81 |
|
80 |
$query = "SELECT import_record_id, file_name, isbn, title, author |
82 |
$query = "SELECT import_record_id, file_name, isbn, title, author |
81 |
FROM import_biblios |
83 |
FROM import_biblios |
82 |
JOIN import_records USING (import_record_id) |
84 |
JOIN import_records USING (import_record_id) |
83 |
JOIN import_batches USING (import_batch_id) |
85 |
JOIN import_batches USING (import_batch_id) |
84 |
WHERE "; |
86 |
WHERE title LIKE ? OR author LIKE ? OR isbn IN (" . join(',',('?') x @isbns) . ")"; |
85 |
@bind=(); |
87 |
@bind=( $authortitle, $authortitle, @isbns ); |
86 |
if (defined($search) && length($search)>0) { |
|
|
87 |
$search =~ s/(\s+)/\%/g; |
88 |
$query .= "title like ? OR author like ?"; |
89 |
push(@bind,"%$search%", "%$search%"); |
90 |
} |
91 |
if ($#bind!=-1 && defined($isbn) && length($isbn)>0) { |
92 |
$query .= " and "; |
93 |
} |
94 |
if (defined($isbn) && length($isbn)>0) { |
95 |
$query .= "isbn like ?"; |
96 |
push(@bind,"$isbn%"); |
97 |
} |
98 |
$sth = $dbh->prepare($query); |
88 |
$sth = $dbh->prepare($query); |
99 |
$sth->execute(@bind); |
89 |
$sth->execute(@bind); |
100 |
while (my $data = $sth->fetchrow_hashref) { |
90 |
while (my $data = $sth->fetchrow_hashref) { |