View | Details | Raw Unified | Return to bug 17807
Collapse All | Expand All

(-)a/Koha/OAI/Server/Record.pm (-7 / +15 lines)
Lines 21-26 package Koha::OAI::Server::Record; Link Here
21
use Modern::Perl;
21
use Modern::Perl;
22
use HTTP::OAI;
22
use HTTP::OAI;
23
use HTTP::OAI::Metadata::OAI_DC;
23
use HTTP::OAI::Metadata::OAI_DC;
24
use XML::LibXML;
24
25
25
use base ("HTTP::OAI::Record");
26
use base ("HTTP::OAI::Record");
26
27
Lines 40-53 sub new { Link Here
40
        $self->header->setSpec($setSpec);
41
        $self->header->setSpec($setSpec);
41
    }
42
    }
42
43
43
    my $parser = XML::LibXML->new();
44
    my $format = $args{metadataPrefix};
44
    my $record_dom = $parser->parse_string( $marcxml );
45
    my $record_dom;
45
    my $format =  $args{metadataPrefix};
46
    if ( $format ne 'marcxml' ) {
46
    if ( $format ne 'marc21' && $format ne 'marcxml' ) {
47
        my $args = {
47
        my %args = (
48
            OPACBaseURL => "'" . C4::Context->preference('OPACBaseURL') . "'"
48
            OPACBaseURL => "'" . C4::Context->preference('OPACBaseURL') . "'"
49
        );
49
        };
50
        $record_dom = $repository->stylesheet($format)->transform($record_dom, %args);
50
        # call Koha::XSLT_Handler now
51
        $record_dom = $repository->{xslt_engine}->transform({
52
            xml        => $marcxml,
53
            file       => $repository->stylesheet($format),
54
            parameters => $args,
55
            format     => 'xmldoc',
56
        });
57
    } else {
58
        $record_dom = XML::LibXML->new->parse_string( $marcxml );
51
    }
59
    }
52
    $self->metadata( HTTP::OAI::Metadata->new( dom => $record_dom ) );
60
    $self->metadata( HTTP::OAI::Metadata->new( dom => $record_dom ) );
53
61
(-)a/Koha/OAI/Server/Repository.pm (-23 / +10 lines)
Lines 32-44 use Koha::OAI::Server::GetRecord; Link Here
32
use Koha::OAI::Server::ListRecords;
32
use Koha::OAI::Server::ListRecords;
33
use Koha::OAI::Server::ListIdentifiers;
33
use Koha::OAI::Server::ListIdentifiers;
34
use XML::SAX::Writer;
34
use XML::SAX::Writer;
35
use XML::LibXML;
36
use XML::LibXSLT;
37
use YAML::Syck qw( LoadFile );
35
use YAML::Syck qw( LoadFile );
38
use CGI qw/:standard -oldstyle_urls/;
36
use CGI qw/:standard -oldstyle_urls/;
39
use C4::Context;
37
use C4::Context;
40
use C4::Biblio;
38
use C4::Biblio;
41
39
use Koha::XSLT_Handler;
42
40
43
=head1 NAME
41
=head1 NAME
44
42
Lines 106-112 sub new { Link Here
106
    $self->{ koha_identifier      } = C4::Context->preference("OAI-PMH:archiveID");
104
    $self->{ koha_identifier      } = C4::Context->preference("OAI-PMH:archiveID");
107
    $self->{ koha_max_count       } = C4::Context->preference("OAI-PMH:MaxCount");
105
    $self->{ koha_max_count       } = C4::Context->preference("OAI-PMH:MaxCount");
108
    $self->{ koha_metadata_format } = ['oai_dc', 'marc21', 'marcxml'];
106
    $self->{ koha_metadata_format } = ['oai_dc', 'marc21', 'marcxml'];
109
    $self->{ koha_stylesheet      } = { }; # Build when needed
107
    $self->{ xslt_engine          } = Koha::XSLT_Handler->new;
110
108
111
    # Load configuration file if defined in OAI-PMH:ConfFile syspref
109
    # Load configuration file if defined in OAI-PMH:ConfFile syspref
112
    if ( my $file = C4::Context->preference("OAI-PMH:ConfFile") ) {
110
    if ( my $file = C4::Context->preference("OAI-PMH:ConfFile") ) {
Lines 167-190 sub get_biblio_marcxml { Link Here
167
165
168
sub stylesheet {
166
sub stylesheet {
169
    my ( $self, $format ) = @_;
167
    my ( $self, $format ) = @_;
170
168
    my $xsl_file = $self->{ conf }
171
    my $stylesheet = $self->{ koha_stylesheet }->{ $format };
169
        ? $self->{ conf }->{ format }->{ $format }->{ xsl_file }
172
    unless ( $stylesheet ) {
170
        : ( C4::Context->config('intrahtdocs') .
173
        my $xsl_file = $self->{ conf }
171
            '/prog/en/xslt/' .
174
                       ? $self->{ conf }->{ format }->{ $format }->{ xsl_file }
172
            C4::Context->preference('marcflavour') .
175
                       : ( C4::Context->config('intrahtdocs') .
173
            'slim2OAIDC.xsl'
176
                         '/prog/en/xslt/' .
174
    );
177
                         C4::Context->preference('marcflavour') .
175
    return $xsl_file;
178
                         'slim2OAIDC.xsl' );
179
        $xsl_file || die( "No stylesheet found for $format" );
180
        my $parser = XML::LibXML->new();
181
        my $xslt = XML::LibXSLT->new();
182
        my $style_doc = $parser->parse_file( $xsl_file );
183
        $stylesheet = $xslt->parse_stylesheet( $style_doc );
184
        $self->{ koha_stylesheet }->{ $format } = $stylesheet;
185
    }
186
187
    return $stylesheet;
188
}
176
}
189
177
190
178
191
- 

Return to bug 17807