API:EPrints
EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects
Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki
NAME
EPrints - Institutional Repository software
SYNOPSIS
#!/usr/bin/perl -w -I/opt/eprints3/perl_lib use EPrints; use strict; # cgi script my $handle = EPrints->get_handle(); exit( 1 ) unless( defined $handle ); # bin script my $handle = EPrints->get_handle( repository => $repository_id, noise => $noise ); exit( 1 ) unless( defined $handle ); $eprint = $handle->get_eprint( $eprintid ); my $title = $eprint->get_value( 'title' ); $eprint->set_value( 'creators', [ { name => { given=>'John', family=>'Smith' }, id => 'js@example.com', }, { name => { given=>'Marvin', family=>'Fenderson' }, id => 'marvin@totl.net', }, ] ); $eprint->commit; my $eprint_ds = $handle->get_dataset( "eprint" ); my $new_eprint = $eprint_ds->create_object( $handle, { title=>"My new EPrint!" } ); my $archive_ds = $handle->get_dataset( "archive" ); my $search = new EPrints::Search( handle => $handle, dataset => $archive_ds ); my $date_mf = $archive_ds->get_field( "date" ); $search->add_field( $date_mf, "2000-2003" ); my $list = $search->perform_search; $list->map( sub { my( $handle, $dataset, $eprint, $info ) = @_; printf( "%s: %s\n", $eprint->get_value( "date" ), $eprint->get_value( "title" ) ); } ); $list->dispose(); $handle->log( "We did some stuff." ); if( some_test() ) { EPrints::abort( "Something bad happened" ); } $handle->terminate;
DESCRIPTION
Using this module will cause all the other EPrints modules to be used also.
See http://www.eprints.org/ for more information about EPrints. Much more documentation can be found at http://wiki.eprints.org/w/Documentation
Key API EPrints Modules
EPrints
This module! Used to load the other modules.
EPrints::DataObj
Abstract object representing a single record in a DataSet. Has one subclass for each type of DataSet. The most important subclasses are listed below. This module documents generic functions which work on all (or most) data objects. Every DataObj has a unique ID within the dataset (an integer, with the exception of Subject). Every DataObj is given a URI of the form repository_url/id/datasetid/dataobj_id
EPrints::DataObj::Document
Represents a single document. A document is a set of metadata plus files. It *may* have some repository configuraed metadata in addition to the default. The metadata describes the document and is mostly concerned with formats, and rights. Documents belong to exactly one EPrints::DataObj::EPrint are are destroyed if it is destroyed. A document has one or more file. If there's more than one file then they are related, like a .css file for a .html
EPrints::DataObj::EPrint
Represents a single submission to the repository. May have 0+ documents as sub-objects. Has both system defined metafields plus many defined in the repository configuration.
EPrints::DataSet
This object represents a set of objects of the same time, and has associated MetaFields and database tables. A dataset may represent a subset of another dataset. For example, "eprint" represents all EPrints::DataObj::EPrint objects, but the "buffer" dataset only represents those which are "under review".
EPrints::Handle
the core of the EPrints API. This object represents a connection between the configuration for a repository, the database connection and either the CGI (web) or CLI (command line) interface.
Handle has a large number of methods, which are documented in more than one file:
EPrints::Handle::Language
Handle methods for i18n.
EPrints::Handle::Render
Handle methods for generating XHTML as XML::DOM objects.
EPrints::Handle::CGI
Handle methods for working with the mod_perl connection.
EPrints::Handle::Page
Handle methods for generating and serving XHTML web pages.
EPrints::Handle::XML
Handle methods for creating XML::DOM objects.
EPrints::List
A list of zero or more data-objects in a single dataset. It can be constructed from a list of ID's or returned as the result of a search.
EPrints::MetaField
A single field in a dataset. It has many subclasses, one for each type of field.
EPrints::Repository
Represents the configuration, datasets and dataobjects of a single repository. It is loaded from the configuration files and is essentially read-only.
EPrints::Search
The search object takes parameters and returns a List object of matching dataobjs from a given dataset. It can also be used it reverse to test if a dataobj matches it's parameters.
Other API EPrints Modules
EPrints::Box
A utitility module to render HTML boxes with style and javascript roll-up animations.
EPrints::Database
An object representing a connection to the database for a repository. This is an abstraction over sub-objects which connect to MySQL or Oracle.
EPrints::DataObj::File
Represents a single file in a document with some basic metadata such as checksums.
EPrints::DataObj::User
Represents a single registered user of the repository. Used for keeping track of preferences, profile information and rights management.
EPrints::DataObj::Subject
This dataset is used to store the structure of heierachichal(sp?) sets, used by the "Subject" metafield type.
EPrints::Email
Tool for sending email.
EPrints::Paginate
Tools for rendering an EPrint::List as paginated HTML.
EPrints::Paginate::Columns
An extension to EPrints::Paginate which shows the results in sortable columns, as seen in Items and Review screens.
EPrints::Storage
Methods to abstract the process of reading and writing files. EPrints 3.2 introduced the possibility of storing files in the cloud, or in other storage devices, and this module is the interface to that.
EPrints::TempDir
Tools for creating and destorying temporary directories.
EPrints::Time
A set of methods for handling time and converting between time formats.
EPrints::URL
Utility methods for generating and getting URLs, relative paths etc.
EPrints::Utils
Misc. utility methods.
EPrints::XML
Utility methods for working with XML and DOM. This papers over the cracks between the 3 different XML DOM libraries EPrints supports.
Available Symbols
You can pass options to the EPrints package that effect the EPrints initialisation e.g.
use EPrints qw( no_check_user );
no_check_user
Do not check the current user/group is the same as the user/group in Systemsettings.
Debugging Slow Processes
This module installs a signal handler that will print a stack trace if given a USR2 signal (if your system supports this signal). To print a stack trace to the error log execute:
$ kill -USR2 PID
Where PID is the id number of the stalled process.
A shell script will print the stack trace to the console.
METHODS
EPrints::abort( $msg )
Print an error message and exit. If running under mod_perl then print the error as a webpage and exit.
This subroutine is loaded before other modules so that it may be used to report errors when initialising modules.
$handle = EPrints->get_handle( %options )
Return an EPrints::Handle object joining a web request or script to a database connection, and the configuration and data for a single repository.
The main options are:
repository => $repository_id: This is required for command line scripts. CGI scripts will obtain the repository ID from the context of the request.
noise => [0..4]: The level of debug info. 0 - silent, 1 - quietish (default), 2 - noisy, 3 - debug all SQL statements, 4 - debug database connection.
The following advanced options are also available but are less likely to be useful:
consume_post_data => [0,1]: Default 1. Only meaningful when running as a web-request. Setting this to "0" will stop the session parsing the POST data which comes in via STDIN. This may be useful if writing apache handlers which make decisions before the main $handle is created. If you don't set it they consume the POST data, and the main handle doesn't get to see it.
check_database => [0,1]: Default 1. By default a session checks the database structure is compatible with the EPrints database module version. Setting this to "0" will supress this check. =cut ######################################################################
sub get_handle { my( $class, %options ) = @_;
return EPrints::Handle->new( %options ); }
- =pod
$repository = EPrints->get_repository( $repository_id )
Return an EPrints::Repository object representing the configuration of the named repository.
SEE ALSO
COPYRIGHT
__COPYRIGHT__
Copyright 2000-2008 University of Southampton. All Rights Reserved.
__LICENSE__