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

(-)a/Koha/OAI/Server/Record.pm (-6 / +14 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 '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 (-22 / +10 lines)
Lines 31-43 use Koha::OAI::Server::GetRecord; Link Here
31
use Koha::OAI::Server::ListRecords;
31
use Koha::OAI::Server::ListRecords;
32
use Koha::OAI::Server::ListIdentifiers;
32
use Koha::OAI::Server::ListIdentifiers;
33
use XML::SAX::Writer;
33
use XML::SAX::Writer;
34
use XML::LibXML;
35
use XML::LibXSLT;
36
use YAML::Syck qw( LoadFile );
34
use YAML::Syck qw( LoadFile );
37
use CGI qw/:standard -oldstyle_urls/;
35
use CGI qw/:standard -oldstyle_urls/;
38
use C4::Context;
36
use C4::Context;
39
use C4::Biblio;
37
use C4::Biblio;
40
38
use Koha::XSLT_Handler;
41
39
42
=head1 NAME
40
=head1 NAME
43
41
Lines 100-106 sub new { Link Here
100
    $self->{ koha_identifier      } = C4::Context->preference("OAI-PMH:archiveID");
98
    $self->{ koha_identifier      } = C4::Context->preference("OAI-PMH:archiveID");
101
    $self->{ koha_max_count       } = C4::Context->preference("OAI-PMH:MaxCount");
99
    $self->{ koha_max_count       } = C4::Context->preference("OAI-PMH:MaxCount");
102
    $self->{ koha_metadata_format } = ['oai_dc', 'marcxml'];
100
    $self->{ koha_metadata_format } = ['oai_dc', 'marcxml'];
103
    $self->{ koha_stylesheet      } = { }; # Build when needed
101
    $self->{ xslt_engine          } = Koha::XSLT_Handler->new;
104
102
105
    # Load configuration file if defined in OAI-PMH:ConfFile syspref
103
    # Load configuration file if defined in OAI-PMH:ConfFile syspref
106
    if ( my $file = C4::Context->preference("OAI-PMH:ConfFile") ) {
104
    if ( my $file = C4::Context->preference("OAI-PMH:ConfFile") ) {
Lines 157-179 sub get_biblio_marcxml { Link Here
157
155
158
sub stylesheet {
156
sub stylesheet {
159
    my ( $self, $format ) = @_;
157
    my ( $self, $format ) = @_;
160
158
    my $xsl_file = $self->{ conf }
161
    my $stylesheet = $self->{ koha_stylesheet }->{ $format };
159
        ? $self->{ conf }->{ format }->{ $format }->{ xsl_file }
162
    unless ( $stylesheet ) {
160
        : ( C4::Context->config('intrahtdocs') .
163
        my $xsl_file = $self->{ conf }
161
            '/prog/en/xslt/' .
164
                       ? $self->{ conf }->{ format }->{ $format }->{ xsl_file }
162
            C4::Context->preference('marcflavour') .
165
                       : ( C4::Context->config('intrahtdocs') .
163
            'slim2OAIDC.xsl'
166
                         '/prog/en/xslt/' .
164
    );
167
                         C4::Context->preference('marcflavour') .
165
    return $xsl_file;
168
                         'slim2OAIDC.xsl' );
169
        my $parser = XML::LibXML->new();
170
        my $xslt = XML::LibXSLT->new();
171
        my $style_doc = $parser->parse_file( $xsl_file );
172
        $stylesheet = $xslt->parse_stylesheet( $style_doc );
173
        $self->{ koha_stylesheet }->{ $format } = $stylesheet;
174
    }
175
176
    return $stylesheet;
177
}
166
}
178
167
179
1;
168
1;
180
- 

Return to bug 17807