New sql tables:
- oai_sets: contains the list of sets, described by a spec and a name
- oai_sets_descriptions: contains a list of descriptions for each set
- oai_sets_mappings: conditions on marc fields to match for biblio to be
in a set
- oai_sets_biblios: list of biblionumbers for each set
New admin page: allow to configure sets:
- Creation, deletion, modification of spec, name and descriptions
- Define mappings which will be used for building oai sets
Implements OAI Sets in opac/oai.pl:
- ListSets, ListIdentifiers, ListRecords, GetRecord
New script misc/migration_tools/build_oai_sets.pl:
- Retrieve marcxml from all biblios and test if they belong to defined
sets. The oai_sets_biblios table is then updated accordingly
New system preference OAI-PMH:AutoUpdateSets. If on, update sets
automatically when a biblio is created or updated.
Use OPACBaseURL in oai_dc xslt
use encoding(UTF-8) rather than utf-8 for stricter
encoding
Marking output as ':utf8' only flags the data as utf8
using :encoding(UTF-8) also checks it as valid utf-8
see binmode in perlfunc for more details
In accordance with the robustness principle input
filehandles have not been changed as code may make
the undocumented assumption that invalid utf-8 is present
in the imput
Fixes errors reported by t/00-testcritic.t
Where feasable some filehandles have been made lexical rather than
reusing global filehandle vars
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
Based on patch by Tomás Cohen Arazi <tomascohen@gmail.com>,
revised to work regardless of the installation mode.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Magnus Enger <magnus@enger.priv.no>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
- Add preference OAI-PMH:ConfFile. I just add it in web-services.pref
and not in DB. It's enough. It's not an end-user preference. Without
this pref, OAI server operates as previously. And preferences editor
allow to add a new value to the DB if necessary.
- Fix response to ListMetadataFormats which was empty in extended mode.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Currently Koha OAI server returns records in two formats: marcxml and
oai_dc (Dublin Core). This patch adds a new mode of operation where as
many as necessary metadata formats can be added via XSLT.
Documentation: See the end of oai.pl file to have an explanation of
how it works.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
The optional description element of an Identify response
can't just be a string. Identify.description is a container
for one or more elements; see http://www.openarchives.org/OAI/2.0/guidelines.htm
For now, simply commenting it out.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
When retrieving a record via the OAI-PMH interface, if one of the fields used
to prepare the DC metadata is not defined in the MARC framework (e.g.,
biblioitems.publicationyear in the default MARC21 framework), an OAI GetRecord
can fail with the following error:
> Can't call method "as_string" on an undefined value at
> /usr/share/koha/opac/cgi-bin/opac/oai.pl line 59.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>