sub new { # Get a MAR::Record as parameter and bless it as MARC::Record::KOHADC
shift;
- bless shift;
+ my $marc = shift;
+ bless $marc if( ref( $marc ) );
}
sub subfield {
foreach my $kohafield ( @_ ) {
my ( $field, $subfield ) = ::GetMarcFromKohaField( $kohafield, '' );
+ next unless defined $field; # $kohafield not defined in framework
push( @result, $field < 10 ? $marc->field( $field )->as_string() : $marc->subfield( $field, $subfield ) );
}
# @result>1 ? \@result : $result[0];
\@result;
}
+sub XMLescape {
+my ($t) = shift;
+
+ foreach (@$t ) {
+ s/\&/\&/g; s/</</g;
+ }
+ $t;
+}
+
sub Status {
my $self = shift;
undef;
sub Title {
my $self = shift;
- $self->getfields('biblio.title');
+ &XMLescape( $self->getfields('biblio.title') );
}
sub Creator {
my $self = shift;
- $self->getfields('biblio.author');
+ &XMLescape( $self->getfields('biblio.author') );
}
sub Subject {
my $self = shift;
- $self->getfields('bibliosubject.subject');
+ &XMLescape( $self->getfields('bibliosubject.subject') );
}
sub DateStamp {
sub Type {
my $self = shift;
- $self->getfields('biblioitems.itemtype');
+ &XMLescape( $self->getfields('biblioitems.itemtype') );
}
sub Publisher {
my $self = shift;
- $self->getfields('biblioitems.publishercode');
+ &XMLescape( $self->getfields('biblioitems.publishercode') );
}
sub Set {
if( my $r = $sth->fetchrow_hashref() ) {
my $marc = new MARC::Record::KOHADC( ::GetMarcBiblio( $identifier ) );
- $marc->{'biblio.timestamp'} = $r->{'timestamp'};
- return $marc ;
+ if( $marc ) {
+ $marc->{'biblio.timestamp'} = $r->{'timestamp'};
+ return $marc ;
+ }
+ else {
+ warn("Archive_GetRecord : no MARC record for " . C4::Context->preference("OAI-PMH:archiveID") . ":" . $identifier);
+ }
}
$self->AddError ('idDoesNotExist', 'The value of the identifier argument is unknown or illegal in this repository');
($metadataPrefix, $offset, $from, $until ) = &parseResumptionToken($from, $until, $metadataPrefix, $resumptionToken);
-warn( "Archive_ListRecords : $set, $from, $until, $metadataPrefix, $resumptionToken\n");
+#warn( "Archive_ListRecords : $set, $from, $until, $metadataPrefix, $resumptionToken\n");
$sth->execute( $from,$until,$self->{'MaxCount'}?$self->{'MaxCount'}:100000, $offset );
while( my $r = $sth->fetchrow_hashref() ) {
my $marc = new MARC::Record::KOHADC( ::GetMarcBiblio( $r->{'biblionumber'} ) );
+ unless( $marc ) { # somme time there is problems within koha, and we can't get valid marc record
+ warn("Archive_ListRecords : no MARC record for " . C4::Context->preference("OAI-PMH:archiveID") .":" . $r->{'biblionumber'} );
+ next;
+ }
$marc->{'biblio.timestamp'} = $r->{'timestamp'};
push( @allrows, $marc );
}