--- trunk/lib/WebPAC/Input/Koha.pm 2010/02/02 18:03:17 1325 +++ trunk/lib/WebPAC/Input/Koha.pm 2010/02/02 19:30:48 1326 @@ -47,13 +47,16 @@ $arg->{dsn} ||= 'dbi:mysql:database=koha'; $arg->{user} ||= $ENV{KOHA_USER}; $arg->{passwd} ||= $ENV{KOHA_PASSWD}, - $arg->{sql} ||= 'select biblionumber as mfn, marc from biblioitems'; + $arg->{sql} ||= 'select biblionumber, marc from biblioitems order by biblionumber asc'; $arg->{sql} .= ' limit ' . $arg->{limit} if $arg->{limit}; $arg->{sql} .= ' offset ' . $arg->{offset} if $arg->{offset}; $log->info("opening Koha database '$arg->{dsn}'"); - $self->{_dbh} = DBI->connect( $arg->{dsn}, $arg->{user}, $arg->{passwd}, { RaiseError => 1 } ); + $self->{_dbh} = DBI->connect( $arg->{dsn}, $arg->{user}, $arg->{passwd}, { + RaiseError => 1, + #mysql_enable_utf8 => 1, # not really needed + } ); $self->{_sth} = $self->{_dbh}->prepare( $arg->{sql} ); $self->{_sth}->execute; $self->{_koha_size} = $self->{_sth}->rows; @@ -82,11 +85,22 @@ my $row = $self->{_sth}->fetchrow_hashref; + sub _error { + my ( $mfn, $error, $row ) = @_; + $self->_get_logger()->error( "MFN $mfn $error ", dump($row) ); + } + if ( my $fh = $self->{_koha_fh} ) { if ( my $marc = $row->{marc} ) { - print $fh $marc; + if ( length($marc) != substr( $marc, 0, 5 ) ) { + _error $mfn => "wrong length " . length($marc), $row; + } elsif ( $marc !~ /\x1E\x1D$/ ) { + _error $mfn => "wrong end", $row; + } else { + print $fh $marc; + } } else { - warn "MFN $mfn no marc in ",dump($row); + _error $mfn => "no marc",$row; } }