# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
+use warnings;
+
use C4::Biblio;
use C4::Koha;
+use C4::Charset;
use MARC::File::USMARC;
use C4::ImportBatch;
-require Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-# set the version for version checking
-$VERSION = 0.01;
+BEGIN {
+ # set the version for version checking
+ $VERSION = 0.02;
+ require Exporter;
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&ImportBreeding &BreedingSearch);
+}
=head1 NAME
ImportBreeding import MARC records in the reservoir (import_records/import_batches tables).
the records can be properly encoded or not, we try to reencode them in utf-8 if needed.
works perfectly with BNF server, that sends UNIMARC latin1 records. Should work with other servers too.
- the FixEncoding sub is in Koha.pm, as it's a general usage sub.
-
-=cut
-
-@ISA = qw(Exporter);
-@EXPORT = qw(&ImportBreeding &BreedingSearch);
=head2 ImportBreeding
# FIXME -- not sure that this kind of checking is actually needed
my $searchbreeding = $dbh->prepare("select import_record_id from import_biblios where isbn=? and title=?");
- $encoding = C4::Context->preference("marcflavour") unless $encoding;
+# $encoding = C4::Context->preference("marcflavour") unless $encoding;
# fields used for import results
my $imported=0;
my $alreadyindb = 0;
my $notmarcrecord = 0;
my $breedingid;
for (my $i=0;$i<=$#marcarray;$i++) {
- my $marcrecord = FixEncoding($marcarray[$i]."\x1D");
-
+ my ($marcrecord, $charset_result, $charset_errors);
+ ($marcrecord, $charset_result, $charset_errors) =
+ MarcToUTF8Record($marcarray[$i]."\x1D", C4::Context->preference("marcflavour"), $encoding);
+
+# warn "$i : $marcarray[$i]";
# FIXME - currently this does nothing
my @warnings = $marcrecord->warnings();
# if isbn found and biblio does not exist, add it. If isbn found and biblio exists,
# overwrite or ignore depending on user choice
# drop every "special" char : spaces, - ...
- $oldbiblio->{isbn} =~ s/\(.*$//;
- $oldbiblio->{isbn} =~ tr/ -_//;
- $oldbiblio->{isbn} = uc $oldbiblio->{isbn};
+ $oldbiblio->{isbn} = C4::Koha::_isbn_cleanup($oldbiblio->{isbn}); # FIXME C4::Koha::_isbn_cleanup should be public
# search if biblio exists
my $biblioitemnumber;
if ($oldbiblio->{isbn}) {
=cut
sub BreedingSearch {
- my ($title,$isbn,$z3950random) = @_;
+ my ($search,$isbn,$z3950random) = @_;
my $dbh = C4::Context->dbh;
my $count = 0;
my ($query,@bind);
$query .= "z3950random = ?";
@bind=($z3950random);
} else {
+ $search =~ s/(\s+)/\%/g;
@bind=();
- if ($title) {
- $query .= "title like ?";
- push(@bind,"$title%");
+ if ($search) {
+ $query .= "title like ? OR author like ?";
+ push(@bind,"%$search%", "%$search%");
}
- if ($title && $isbn) {
+ if ($search && $isbn) {
$query .= " and ";
}
if ($isbn) {
return($count, @results);
} # sub breedingsearch
+1;
+__END__
-END { } # module clean-up code here (global destructor)