package C4::OAI::DC;
-use Encode;
use C4::OAI::DP;
use vars ('@ISA');
@ISA = ("C4::OAI::DP");
my $footer = "</oaidc:dc>\n";
my $metadata = '';
- $metadata = $header . encode("utf8", decode( "iso-8859-1",$self->{'utility'}->FormatXML($dc))) . $footer if( $dc );
+ $metadata = $header . $self->{'utility'}->FormatXML($dc) . $footer if( $dc );
$self->FormatRecord ($hashref->Identifier()->[0] ,
$hashref->DateStamp(),
# -----------------------------------------+-------------+-------------
# Virginia Polytechnic Institute and State University | www.vt.edu
# -------------------------------------------------------+-------------
+# January 2008
+# ------------------+--------------------------------------------------
+# Ph. Jaillon |
+# ------------------+----------------------+---------------------------
+# Department of Computer Science |
+# -----------------------------------------+-------------+-------------
+# Ecole Nationale Superieure des Mines de St-Etienne | www.emse.fr
+# -------------------------------------------------------+-------------
+
$VERSION = '1.0.0';
use CGI;
use C4::OAI::Utility;
+# setting binmode to utf8 (any characters printed on STDOUT are utf8 encoded)
+binmode(STDOUT, ":utf8");
# constructor
sub new
},
{
'title' => 'VTOAI Perl Data Provider',
- 'author' => {
- 'name' => 'Hussein Suleman',
- 'email' => 'hussein@vt.edu',
- 'institution' => 'Virginia Tech',
- 'mdorder' => [ qw ( name email institution ) ],
- },
+ 'author' => [
+ {
+ 'name' => 'Hussein Suleman',
+ 'email' => 'hussein@vt.edu',
+ 'institution' => 'Virginia Tech',
+ 'mdorder' => [ qw ( name email institution ) ],
+ },
+ {
+ 'name' => 'Philippe Jaillon',
+ 'email' => 'jaillon@emse.fr',
+ 'institution' => 'École Nationale Supérieure des Mines de Saint-Étienne',
+ 'mdorder' => [ qw ( name email institution ) ],
+ }
+ ],
'version' => '3.05',
- 'URL' => 'http://www.dlib.vt.edu/projects/OAI/',
+ 'URL' => [
+ 'http://www.dlib.vt.edu/projects/OAI/',
+ 'http://oai-pmh.emse.fr/'
+ ],
'mdorder' => [ qw ( title author version URL ) ]
- }
+ },
]]
};
push (@{$identity->{'description'}}, $desc);
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 {
\@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 );
}