Difference between revisions of "API:EPrints/Repository"

From EPrints Documentation
Jump to: navigation, search
 
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
<!-- Pod2Wiki=_preamble_  
 
<!-- Pod2Wiki=_preamble_  
 
This page has been automatically generated from the EPrints 3.2 source. Any wiki changes made between the 'Pod2Wiki=*' and 'Edit below this comment' comments will be lost.
 
This page has been automatically generated from the EPrints 3.2 source. Any wiki changes made between the 'Pod2Wiki=*' and 'Edit below this comment' comments will be lost.
  -->{{API}}{{Pod2Wiki}}{{API:Source|file=EPrints/Repository.pm|package_name=EPrints::Repository}}[[Category:API|Repository]]<div><!-- Edit below this comment -->
+
  -->{{API}}{{Pod2Wiki}}{{API:Source|file=perl_lib/EPrints/Repository.pm|package_name=EPrints::Repository}}[[Category:API|REPOSITORY]][[Category:API:EPrints/Repository|REPOSITORY]]<div><!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki=_private_ --><!-- Pod2Wiki=head_name -->
 
<!-- Pod2Wiki=_private_ --><!-- Pod2Wiki=head_name -->
 
==NAME==
 
==NAME==
'''EPrints::Repository''' - Single connection to the EPrints system
+
EPrints::Repository - connection to a single repository instance
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_synopsis -->
<!-- Pod2Wiki=head_description -->
+
==SYNOPSIS==
==DESCRIPTION==
+
<source lang="perl">use EPrints;
This module is not really a session. The name is out of date, but hard to change.
 
  
EPrints::Repository represents a connection to the EPrints system. It connects to a single EPrints repository, and the database used by that repository. Thus it has an associated EPrints::Database and EPrints::Repository object.
+
$repo = EPrints->new->current_repository;
  
Each "session" has a "current language". If you are running in a  multilingual mode, this is used by the HTML rendering functions to choose what language to return text in.
+
$repo = EPrints->new->repository( "myrepo" );
  
The "session" object also knows about the current apache connection, if there is one, including the CGI parameters.  
+
$xml = $repo->xml;
 +
$cuser = $repo->current_user;
 +
$repo->log( "Got user " . $cuser->id );</source>
  
If the connection requires a username and password then it can also  give access to the EPrints::DataObj::User object representing the user who is causing this request.
 
 
The session object also provides many methods for creating XHTML  results which can be returned via the web interface.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_description -->
<!-- Pod2Wiki=head_methods -->
+
==DESCRIPTION==
==METHODS==
+
EPrints::Repository represents a connection to the EPrints system. It connects to a single EPrints repository, and the database used by that repository.
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_new -->
 
===new===
 
 
 
$repository = EPrints::Repository-&gt;new( $mode, [$repository_id], [$noise], [$nocheckdb] )
 
Create a connection to an EPrints repository which provides access  to the database and to the repository configuration.
 
 
 
This method can be called in two modes. Setting $mode to 0 means this is a connection via a CGI web page. $repository_id is ignored, instead the value is taken from the "PerlSetVar EPrints_ArchiveID" option in the apache configuration for the current directory.
 
  
If this is being called from a command line script, then $mode should be 1, and $repository_id should be the ID of the repository we want to connect to.
+
Each Repository has a "current language". If you are running in a multilingual mode, this is used by the HTML rendering functions to choose what language to return text in.
  
$mode : mode = 0    - We are online (CGI script) mode = 1    - We are offline (bin script) $repository_id is repository_id mode = 2    - We are online, but don't create a CGI query (so we
+
The Repository object also knows about the current apache connection, if there is one, including the CGI parameters.  
don't consume the data).
 
  
$noise is the level of debugging output. 0 - silent 1 - quietish 2 - noisy 3 - debug all SQL statements 4 - debug database connection
+
If the connection requires a username and password then it can also give access to the [[API:EPrints/DataObj/User|EPrints::DataObj::User]] object representing the user who is causing this request. See [[API:EPrints/Repository#current_user|current_user]].
   
 
Under normal conditions use "0" for online and "1" for offline.
 
  
$nocheckdb - if this is set to 1 then a connection is made to the database without checking that the tables exist.  
+
The Repository object provides access to the [[API:EPrints/XML|EPrints::XML]] and [[API:EPrints/XHTML|EPrints::XHTML]] class which contain methods for creating XHTML results which can be returned via the web interface.  
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_methods -->
<!-- Pod2Wiki=item_get_request -->
+
==METHODS==
===get_request===
+
<!-- Pod2Wiki=head_new -->
 +
===new===
  
$request = $repository-&gt;get_request;
+
<source lang="perl">$repository = EPrints::Repository->new( %opts )
Return the Apache request object (from mod_perl) or undefined if  this isn't a CGI script.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Creates and returns a new repository object. This is a utility object only and will only have the basic system configuration available.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_query -->
 
===query===
 
 
$query = $repository-&gt;query
 
Return the {{API:PodLink|file=CGI|package_name=CGI|section=|text=CGI}} object describing the current HTTP query, or  undefined if this isn't a CGI script.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_new -->
<!-- Pod2Wiki=item_terminate -->
+
===new===
===terminate===
 
  
$repository-&gt;terminate
+
<source lang="perl">$repository = EPrints::Repository->new( $repository_id, %opts )
Perform any cleaning up necessary, for example SQL cache tables which are no longer needed.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Create a connection to an EPrints repository $repository_id which provides access to the database and to the repository configuration.
<!-- Edit below this comment -->
 
  
 +
Options:
  
<!-- Pod2Wiki= -->
+
<pre>  db_connect - 1
</div>
+
  check_db - 1
<!-- Pod2Wiki=item_xml -->
+
  noise - 0</pre>
===xml===
 
  
$xml = $repo-&gt;xml
 
Return an XML object for working with XML.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_create_from_data -->
<!-- Pod2Wiki=item_xhtml -->
+
===create_from_data===
===xhtml===
 
  
$xhtml = $repo-&gt;xhtml
+
<source lang="perl">$repo = EPrints::Repository->create_from_data( $epdata )
Return an XHTML object for working with XHTML.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Create a new repository instance using $epdata.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_eprint -->
 
===eprint===
 
 
$eprint = $repository-&gt;eprint( $eprint_id );
 
Return the eprint with the given ID, or undef.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_delete -->
<!-- Pod2Wiki=item_user -->
+
===delete===
===user===
 
  
$user = $repository-&gt;user( $user_id );
+
<source lang="perl">$repo->delete()
Return the user with the given ID, or undef.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Destroy the repository and all its contents.
<!-- Edit below this comment -->
 
  
 +
To allow this method you must first set $EPrints::Repository::ALLOW_DELETE to 1.
  
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_user_by_username -->
 
===user_by_username===
 
 
$user = $repository-&gt;user_by_username( $username );
 
Return the user with the given username, or undef.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_query -->
<!-- Pod2Wiki=item_user_by_email -->
+
===query===
===user_by_email===
 
  
$user = $repository-&gt;user_by_email( $email );
+
<source lang="perl">$query = $repository->query
Return the user with the given email, or undef.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return the {{API:PodLink|file=CGI|package_name=CGI|section=|text=CGI}} object describing the current HTTP query, or  undefined if this isn't a CGI script.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_new_from_request -->
 
===new_from_request===
 
 
$repository = EPrints::RepositoryConfig-&gt;new_from_request( $request )
 
This creates a new repository object. It looks at the given Apache request object and decides which repository to load based on the  value of the PerlVar "EPrints_ArchiveID".
 
 
Aborts with an error if this is not possible.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_url_param -->
<!-- Pod2Wiki=item_get_language -->
+
===url_param===
===get_language===
 
  
$language = $repository-&gt;get_language( [$langid] )
+
<source lang="perl">$value or @values = $repository->url_param( $name )
Returns the EPrints::Language for the requested language id (or the default for this repository if $langid is not specified).
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Retrieve the UTF-8 value(s) of the query parameter $name for the current request.
<!-- Edit below this comment -->
 
  
 +
This will not cause the POST data to be read.
  
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_template_parts -->
 
===get_template_parts===
 
 
$template = $repository-&gt;get_template_parts( $langid, [$template_id] )
 
Returns an array of utf-8 strings alternating between XML and the id of a pin to replace. This is used for the faster template construction.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_param -->
<!-- Pod2Wiki=item_get_template -->
+
===param===
===get_template===
 
  
$template = $repository-&gt;get_template( $langid, [$template_id] )
+
<source lang="perl">$value or @values = $repository->param( $name )
Returns the DOM document which is the webpage template for the given language. Do not modify the template without cloning it first.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Passes through to CGI.pm param method.
<!-- Edit below this comment -->
 
  
 +
$value = $repository-&gt;param( $name ): returns the value of CGI parameter $name.
  
<!-- Pod2Wiki= -->
+
@values = $repository-&gt;param: returns an array of the names of all the CGI parameters in the current request.
</div>
 
<!-- Pod2Wiki=item_get_types -->
 
===get_types===
 
 
 
@type_ids = $repository-&gt;get_types( $type_set )
 
Return an array of keys for the named set. Comes from  /cfg/types/foo.xml
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_xml -->
<!-- Pod2Wiki=item_get_dataset_ids -->
+
===xml===
===get_dataset_ids===
 
  
@dataset_ids = $repository-&gt;get_dataset_ids()
+
<source lang="perl">$xml = $repo->xml
Returns a list of dataset ids in this repository.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return an [[API:EPrints/XML|EPrints::XML]] object for working with XML.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_sql_dataset_ids -->
 
===get_sql_dataset_ids===
 
 
@dataset_ids = $repository-&gt;get_sql_dataset_ids()
 
Returns a list of dataset ids that have database tables.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_xhtml -->
<!-- Pod2Wiki=item_get_sql_counter_ids -->
+
===xhtml===
===get_sql_counter_ids===
 
  
@counter_ids = $repository-&gt;get_sql_counter_ids()
+
<source lang="perl">$xhtml = $repo->xhtml
Returns a list of counter ids generated by the database.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return an [[API:EPrints/XHTML|EPrints::XHTML]] object for working with XHTML.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_dataset -->
 
===dataset===
 
 
$dataset = $repository-&gt;dataset( $setname )
 
Return a given dataset or undef if it doesn't exist.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_eprint -->
<!-- Pod2Wiki=item_get_plugin_factory -->
+
===eprint===
===get_plugin_factory===
 
 
 
$plugins = $repository-&gt;get_plugin_factory()
 
Return the plugins factory object.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_config -->
 
===config===
 
  
$confitem = $repository-&gt;config( $key, [@subkeys] )
+
<source lang="perl">$eprint = $repository->eprint( $eprint_id );
Returns a named configuration setting. Probably set in ArchiveConfig.pm
 
  
$repository-&gt;config( "stuff", "en", "foo" )
+
</source>
 
+
A convience method to return the [[API:EPrints/DataObj/EPrint|EPrints::DataObj::EPrint]] with  the given ID, or undef.
is equivalent to  
 
  
$repository-&gt;config( "stuff" )-&gt;{en}-&gt;{foo}
+
Equivent to $repository-&gt;dataset("eprint")-&gt;dataobj( $eprint_id )
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_current_language -->
<!-- Pod2Wiki=item_log -->
+
===current_language===
===log===
 
 
 
$repository-&gt;log( $msg )
 
Calls the log method from ArchiveConfig.pm for this repository with the  given parameters. Basically logs the comments wherever the site admin wants them to go. Printed to STDERR by default.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
<source lang="perl">$lang = $repository->current_language
  
<!-- Pod2Wiki= -->
+
</source>
</div>
+
Returns the current language.
<!-- Pod2Wiki=item_call -->
 
===call===
 
  
$result = $repository-&gt;call( $cmd, @params )
 
Calls the subroutine named $cmd from the configuration perl modules for this repository with the given params and returns the result.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_current_user -->
<!-- Pod2Wiki=item_can_call -->
+
===current_user===
===can_call===
 
  
$boolean = $repository-&gt;can_call( @cmd_conf_path )
+
<source lang="perl">$user = $repository->current_user
Return true if the given subroutine exists in this repository's config package.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return the current logged in [[API:EPrints/DataObj/User|EPrints::DataObj::User]] for this session.
<!-- Edit below this comment -->
 
  
 +
Return undef if there isn't one.
  
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_try_call -->
 
===try_call===
 
 
$result = $repository-&gt;try_call( $cmd, @params )
 
Calls the subroutine named $cmd from the configuration perl modules for this repository with the given params and returns the result.
 
 
If the subroutine does not exist then quietly returns undef.
 
 
This is used to call deprecated callback subroutines.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_user -->
<!-- Pod2Wiki=item_get_store_dirs -->
+
===user===
===get_store_dirs===
 
  
@dirs = $repository-&gt;get_store_dirs
+
<source lang="perl">$user = $repository->user( $user_id );
Returns a list of directories available for storing documents. These may well be symlinks to other hard drives.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
A convience method to return the [[API:EPrints/DataObj/User|EPrints::DataObj::User]] with  the given ID, or undef.
<!-- Edit below this comment -->
 
  
 +
Equivent to $repository-&gt;dataset("user")-&gt;dataobj( $user_id )
  
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_static_dirs -->
 
===get_static_dirs===
 
 
@dirs = $repository-&gt;get_static_dirs( $langid )
 
Returns a list of directories from which static files may be sourced.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_user_by_username -->
<!-- Pod2Wiki=item_get_store_dir_size -->
+
===user_by_username===
===get_store_dir_size===
 
  
$size = $repository-&gt;get_store_dir_size( $dir )
+
<source lang="perl">$user = $repository->user_by_username( $username );
Returns the current storage (in bytes) used by a given documents dir. $dir should be one of the values returned by $repository-&gt;get_store_dirs.
 
  
This should not be called if disable_df is set in SystemSettings.
+
</source>
 +
Return the user with the given username, or undef.
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_user_by_email -->
<!-- Pod2Wiki=item_parse_xml -->
+
===user_by_email===
===parse_xml===
 
  
$domdocument = $repository-&gt;parse_xml( $file, $no_expand );
+
<source lang="perl">$user = $repository->user_by_email( $email );
Turns the given $file into a XML DOM document. If $no_expand is true then load &amp;entities; but do not expand them to the values in the DTD.
 
  
This function also sets the path in which the Parser will look for  DTD files to the repository's config directory.
+
</source>
 +
Return the [[API:EPrints/DataObj/User|EPrints::DataObj::User]] with the given email, or undef.
  
Returns undef if an error occurs during parsing.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
 
 
This is a wiki comment.
 
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_template -->
<!-- Pod2Wiki=item_get_id -->
+
===template===
===get_id===
 
  
$id = $repository-&gt;get_id
+
<source lang="perl">$template = $repository->template( [ $id ] )
Returns the id string of this repository.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_dataset -->
<!-- Pod2Wiki=item_exec -->
+
===dataset===
===exec===
 
  
$returncode = $repository-&gt;exec( $cmd_id, %map )
+
<source lang="perl">$dataset = $repository->dataset( $setname )
Executes a system command. $cmd_id is the id of the command as set in SystemSettings and %map contains a list of things to "fill in the blanks" in the invocation line in SystemSettings.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return a given [[API:EPrints/DataSet|EPrints::DataSet]] or undef if it doesn't exist.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_invocation -->
 
===invocation===
 
 
$commandstring = $repository-&gt;invocation( $cmd_id, %map )
 
Finds the invocation for the specified command from SystemSetting and fills in the blanks using %map. Returns a string which may be executed as a system call.
 
 
All arguments are ESCAPED using quotemeta() before being used (i.e. don't pre-escape arguments in %map).
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_config -->
<!-- Pod2Wiki=item_get_field_defaults -->
+
===config===
===get_field_defaults===
 
  
$defaults = $repository-&gt;get_field_defaults( $fieldtype )
+
<source lang="perl">$confitem = $repository->config( $key, [@subkeys] )
Return the cached default properties for this metadata field type. or undef.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Returns a named configuration setting including those defined in archvies/&lt;archive_id&gt;/cfg/cfg.d/  
<!-- Edit below this comment -->
 
  
 +
$repository-&gt;config( "stuff", "en", "foo" )
  
<!-- Pod2Wiki= -->
+
is equivalent to
</div>
 
<!-- Pod2Wiki=item_set_field_defaults -->
 
===set_field_defaults===
 
  
$repository-&gt;set_field_defaults( $fieldtype, $defaults )
+
$repository-&gt;config( "stuff" )-&gt;{en}-&gt;{foo}
Cache the default properties for this metadata field type.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_log -->
<!-- Pod2Wiki=item_generate_dtd -->
+
===log===
===generate_dtd===
 
 
 
$success = $repository-&gt;generate_dtd
 
DEPRECATED
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
<source lang="perl">$repository->log( $msg [, $level ] )
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
</source>
 +
Log a plain text message $msg. If $level is given only logs if $level is greater than or equal to [[API:EPrints/Repository#noise|noise]].
  
<!-- Pod2Wiki= -->
+
To override where log messages are sent define the <code>log</code> callback:
</div>
 
<!-- Pod2Wiki=item_test_config -->
 
===test_config===
 
  
( $returncode, $output) = $repository-&gt;test_config
+
<pre>  $c-&gt;{log} = sub {
This runs "epadmin test" as an external script to test if the current configuraion on disk loads OK. This can be used by the web interface to test if changes to config. files may be saved, or not.
+
    my( $repo, $msg, $level ) = @_;
 
 
$returncode will be zero if everything seems OK.
 
 
 
If not, then $output will contain the output of epadmin test
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=head_language_related_methods -->
 
===Language Related Methods===
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_session_language -->
 
====get_session_language====
 
 
 
  $langid = EPrints::Repository::get_session_language( $repository, $request )
 
Given an repository object and a Apache (mod_perl) request object, this method decides what language the session should be.
 
 
 
First it looks at the HTTP cookie "eprints_lang", failing that it looks at the prefered language of the request from the HTTP header, failing that it looks at the default language for the repository.
 
 
 
The language ID it returns is the highest on the list that the given eprint repository actually supports.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_change_lang -->
 
====change_lang====
 
 
 
$repository-&gt;change_lang( $newlangid )
 
Change the current language of the session. $newlangid should be a valid country code for the current repository.
 
 
 
An invalid code will cause eprints to terminate with an error.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_html_phrase -->
 
====html_phrase====
 
 
 
$xhtml_phrase = $repository-&gt;html_phrase( $phraseid, %inserts )
 
Return an XHTML DOM object describing a phrase from the phrase files.
 
 
 
$phraseid is the id of the phrase to return. If the same ID appears in both the repository-specific phrases file and the system phrases file then the repository-specific one is used.
 
 
 
If the phrase contains &lt;ep:pin&gt; elements, then each one should have an entry in %inserts where the key is the "ref" of the pin and the value is an XHTML DOM object describing what the pin should be  replaced with.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_phrase -->
 
====phrase====
 
 
 
$utf8_text = $repository-&gt;phrase( $phraseid, %inserts )
 
Performs the same function as html_phrase, but returns plain text.
 
 
 
All HTML elements will be removed, &lt;br&gt; and &lt;p&gt; will be converted  into breaks in the text. &lt;img&gt; tags will be replaced with their  "alt" values.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_lang -->
 
====get_lang====
 
 
 
$language = $repository-&gt;get_lang
 
Return the EPrints::Language object for this sessions current  language.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_langid -->
 
====get_langid====
 
 
 
$langid = $repository-&gt;get_langid
 
Return the ID code of the current language of this session.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_best_language -->
 
====best_language====
 
 
 
$value = EPrints::Repository::best_language( $repository, $lang, %values )
 
$repository is the current repository. $lang is the prefered language.
 
 
 
%values contains keys which are language ids, and values which is text or phrases in those languages, all translations of the same  thing.
 
 
 
This function returns one of the values from %values based on the  following logic:
 
 
 
If possible, return the value for $lang.
 
 
 
Otherwise, if possible return the value for the default language of this repository.
 
 
 
Otherwise, if possible return the value for "en" (English).
 
 
 
Otherwise just return any one value.
 
 
 
This means that the view sees the best possible phrase.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_view_name -->
 
====get_view_name====
 
 
 
$viewname = $repository-&gt;get_view_name( $dataset, $viewid )
 
Return a UTF8 encoded string containing the human readable name of the /view/ section with the ID $viewid.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=head_accessor_methods -->
 
===Accessor Methods===
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_database -->
 
====get_database====
 
 
 
$db = $repository-&gt;get_database
 
Return the current EPrints::Database connection object.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_storage -->
 
====get_storage====
 
 
 
$store = $repository-&gt;get_storage
 
Return the storage control object.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_repository -->
 
====get_repository====
 
 
 
$repository = $repository-&gt;get_repository
 
Return the EPrints::Repository object associated with the Repository.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_current_url -->
 
====current_url====
 
 
 
$url = $repository-&gt;current_url( [ @OPTS ] [, $page] )
 
Utility method to get various URLs. See [[API:EPrints/URL|EPrints::URL]].
 
 
 
With no arguments returns the current full URL without any query part.
 
 
 
  # Return the current static path
 
  $repository-&gt;current_url( path =&gt; "static" );
 
 
 
  # Return the current cgi path
 
  $repository-&gt;current_url( path =&gt; "cgi" );
 
 
 
  # Return a full URL to the current cgi path
 
  $repository-&gt;current_url( host =&gt; 1, path =&gt; "cgi" );
 
 
 
  # Return a full URL to the static path under HTTP
 
  $repository-&gt;current_url( scheme =&gt; "http", host =&gt; 1, path =&gt; "static" );
 
 
    
 
    
  # Return a full URL to the image 'foo.png'
+
    ...
  $repository-&gt;current_url( host =&gt; 1, path =&gt; "images", "foo.png" );
+
   };</pre>
    
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_uri -->
 
====get_uri====
 
  
$uri = $repository-&gt;get_uri
 
Returns the URL of the current script. Or "undef".
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_call -->
<!-- Pod2Wiki=item_get_full_url -->
+
===call===
====get_full_url====
 
  
$uri = $repository-&gt;get_full_url
+
<source lang="perl">$result = $repository->call( $cmd, @params )
Returns the URL of the current script plus the CGI params.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Calls the subroutine named $cmd from the configuration perl modules for this repository with the given params and returns the result.
<!-- Edit below this comment -->
 
  
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_noise -->
 
====get_noise====
 
 
$noise_level = $repository-&gt;get_noise
 
Return the noise level for the current session. See the explaination under EPrints::Repository-&gt;new()
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_can_call -->
<!-- Pod2Wiki=item_get_online -->
+
===can_call===
====get_online====
 
  
$boolean = $repository-&gt;get_online
+
<source lang="perl">$boolean = $repository->can_call( @cmd_conf_path )
Return true if this script is running via CGI, return false if we're on the command line.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return true if the given subroutine exists in this repository's config package.
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_secure -->
 
====get_secure====
 
  
$secure = $repository-&gt;get_secure
 
Returns true if we're using HTTPS/SSL (checks get_online first).
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_try_call -->
<!-- Pod2Wiki=head_dom_related_methods -->
+
===try_call===
===DOM Related Methods===
 
These methods help build XML. Usually, but not always XHTML.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
<source lang="perl">$result = $repository->try_call( $cmd, @params )
  
<!-- Pod2Wiki= -->
+
</source>
</div>
+
Calls the subroutine named $cmd from the configuration perl modules for this repository with the given params and returns the result.
<!-- Pod2Wiki=item_make_element -->
 
====make_element====
 
  
$dom = $repository-&gt;make_element( $element_name, %attribs )
+
If the subroutine does not exist then quietly returns undef.
Return a DOM element with name ename and the specified attributes.
 
  
eg. $repository-&gt;make_element( "img", src =&gt; "/foo.gif", alt =&gt; "my pic" )
+
This is used to call deprecated callback subroutines.
  
Will return the DOM object describing:
 
 
&lt;img src="/foo.gif" alt="my pic" /&gt;
 
 
Note that in the call we use "=&gt;" not "=".
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_template_dirs -->
<!-- Pod2Wiki=item_make_indent -->
+
===template_dirs===
====make_indent====
 
  
$dom = $repository-&gt;make_indent( $width )
+
<source lang="perl">@dirs = $repository->template_dirs( $langid )
Return a DOM object describing a C.R. and then $width spaces. This is used to make nice looking XML for things like the OAI interface.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Returns a list of directories from which template files may be sourced, where the first matching template encountered is used.
<!-- Edit below this comment -->
 
  
 +
The directories searched are:
  
<!-- Pod2Wiki= -->
+
<pre> archives/[archiveid]/cfg/lang/[langid]/templates/
</div>
+
  archives/[archiveid]/cfg/templates/
<!-- Pod2Wiki=item_make_comment -->
+
  archives/[archiveid]/cfg/themes/[themeid]/lang/[langid]/templates/
====make_comment====
+
  archives/[archiveid]/cfg/themes/[themeid]/templates/
 +
  lib/themes/[themeid]/templates/
 +
  lib/lang/[langid]/templates/
 +
  lib/templates/</pre>
  
$dom = $repository-&gt;make_comment( $text )
 
Return a DOM object describing a comment containing $text.
 
 
eg.
 
 
&lt;!-- this is a comment --&gt;
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_get_static_dirs -->
<!-- Pod2Wiki=item_make_text -->
+
===get_static_dirs===
====make_text====
 
  
$DOM = $repository-&gt;make_text( $text )
+
<source lang="perl">@dirs = $repository->get_static_dirs( $langid )
Return a DOM object containing the given text. $text should be UTF-8 encoded.
 
  
Characters will be treated as _text_ including &lt; &gt; etc.
+
</source>
 +
Returns a list of directories from which static files may be sourced.
  
eg.
+
Directories are returned in order of importance, most important first:
  
$repository-&gt;make_text( "This is &lt;b&gt; an example" );
+
<pre>  archives/[archiveid]/cfg/lang/[langid]/static
 +
  archives/[archiveid]/cfg/static
 +
  archives/[archiveid]/themes/[themeid]/static
 +
  lib/themes/[themeid]/static
 +
  lib/lang/[langid]/static
 +
  lib/static</pre>
  
Would return a DOM object representing the XML:
 
 
"This is &amp;lt;b&amp;gt; an example"
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_id -->
<!-- Pod2Wiki=item_make_javascript -->
+
===id===
====make_javascript====
 
  
$DOM = $repository-&gt;make_javascript( $code, %attribs )
+
<source lang="perl">$id = $repository->id
Return a new DOM "script" element containing $code in javascript. %attribs will be added to the script element, similar to make_element().
 
  
E.g.
+
</source>
 +
Returns the id string of this repository.
  
  &lt;script type="text/javascript"&gt;
 
  // &lt;![CDATA[
 
  alert("Hello, World!");
 
  // ]]&gt;
 
  &lt;/script&gt;
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_exec -->
<!-- Pod2Wiki=item_make_doc_fragment -->
+
===exec===
====make_doc_fragment====
 
  
$fragment = $repository-&gt;make_doc_fragment
+
<source lang="perl">$returncode = $repository->exec( $cmd_id, %map )
Return a new XML document fragment. This is an item which can have XML elements added to it, but does not actually get rendered itself.
 
  
If appended to an element then it disappears and its children join the element at that point.
+
</source>
 +
Executes a system command. $cmd_id is the id of the command as set in SystemSettings and %map contains a list of things to "fill in the blanks" in the invocation line in SystemSettings.  
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_test_config -->
<!-- Pod2Wiki=head_xhtml_related_methods -->
+
===test_config===
===XHTML Related Methods===
 
These methods help build XHTML.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
<source lang="perl">( $returncode, $output) = $repository->test_config
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
</source>
 +
This runs "epadmin test" as an external script to test if the current configuraion on disk loads OK. This can be used by the web interface to test if changes to config. files may be saved, or not.
  
<!-- Pod2Wiki= -->
+
$returncode will be zero if everything seems OK.
</div>
 
<!-- Pod2Wiki=item_render_ruler -->
 
====render_ruler====
 
  
$ruler = $repository-&gt;render_ruler
+
If not, then $output will contain the output of epadmin test
Return an HR. in ruler.xml
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_nbsp -->
 
====render_nbsp====
 
 
 
$nbsp = $repository-&gt;render_nbsp
 
Return an XHTML &amp;nbsp; character.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_reload_config -->
<!-- Pod2Wiki=item_render_data_element -->
+
===reload_config===
====render_data_element====
 
 
 
$xhtml = $repository-&gt;render_data_element( $indent, $elementname, $value, [%opts] )
 
This is used to help render neat XML data. It returns a fragment  containing an element of name $elementname containing the value $value, the element is indented by $indent spaces.
 
  
The %opts describe any extra attributes for the element
+
<source lang="perl">$ok = $repository->reload_config
  
eg. $repository-&gt;render_data_element( 4, "foo", "bar", class=&gt;"fred" )
+
</source>
 +
Trigger a configuration reload on the next request/index.
  
would return a XML DOM object describing:
+
To reload the configuration right now just call [[API:EPrints/Repository#load_config|load_config]].
    &lt;foo class="fred"&gt;bar&lt;/foo&gt;
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_html_phrase -->
<!-- Pod2Wiki=item_render_link -->
+
===html_phrase===
====render_link====
 
  
$xhtml = $repository-&gt;render_link( $uri, [$target] )
+
<source lang="perl">$xhtml_phrase = $repository->html_phrase( $phraseid, %inserts )
Returns an HTML link to the given uri, with the optional $target if it needs to point to a different frame or window.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return an XHTML DOM object describing a phrase from the phrase files.
<!-- Edit below this comment -->
 
  
 +
$phraseid is the id of the phrase to return. If the same ID appears in both the repository-specific phrases file and the system phrases file then the repository-specific one is used.
  
<!-- Pod2Wiki= -->
+
If the phrase contains &lt;ep:pin&gt; elements, then each one should have an entry in %inserts where the key is the "ref" of the pin and the value is an XHTML DOM object describing what the pin should be  replaced with.
</div>
 
<!-- Pod2Wiki=item_render_row -->
 
====render_row====
 
  
$table_row = $repository-&gt;render_row( $key, @values );
 
Return the key and values in a DOM encoded HTML table row. eg.
 
 
&lt;tr&gt;&lt;th&gt;$key:&lt;/th&gt;&lt;td&gt;$value[0]&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_phrase -->
<!-- Pod2Wiki=item_render_language_name -->
+
===phrase===
====render_language_name====
 
  
$xhtml = $repository-&gt;render_language_name( $langid ) Return a DOM object containing the description of the specified languagein the current default language, or failing that from languages.xml
+
<source lang="perl">$utf8_text = $repository->phrase( $phraseid, %inserts )
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
</source>
 +
Performs the same function as html_phrase, but returns plain text.
  
<!-- Pod2Wiki= -->
+
All HTML elements will be removed, &lt;br&gt; and &lt;p&gt; will be converted  into breaks in the text. &lt;img&gt; tags will be replaced with their  "alt" values.
</div>
 
<!-- Pod2Wiki=item_render_type_name -->
 
====render_type_name====
 
  
$xhtml = $repository-&gt;render_type_name( $type_set, $type )
 
Return a DOM object containing the description of the specified type in the type set. eg. "eprint", "article"
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_noise -->
<!-- Pod2Wiki=item_get_type_name -->
+
===noise===
====get_type_name====
 
  
$string = $repository-&gt;get_type_name( $type_set, $type )
+
<source lang="perl">$noise_level = $repository->noise
As above, but return a utf-8 string. Used in &lt;option&gt; elements, for example.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
+
Return the noise level for the current session. See the explaination under EPrints::Repository-&gt;new()
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_name -->
 
====render_name====
 
 
 
$xhtml_name = $repository-&gt;render_name( $name, [$familylast] )
 
$name is a ref. to a hash containing family, given etc.
 
 
 
Returns an XML DOM fragment with the name rendered in the manner of the repository. Usually "John Smith".
 
 
 
If $familylast is set then the family and given parts are reversed, eg. "Smith, John"
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_option_list -->
 
====render_option_list====
 
 
 
$xhtml_select = $repository-&gt;render_option_list( %params )
 
This method renders an XHTML &lt;select&gt;. The options are complicated and may change, so it's better not to use it.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_single_option -->
 
====render_single_option====
 
 
 
$option = $repository-&gt;render_single_option( $key, $desc, $selected )
 
Used by render_option_list.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_hidden_field -->
 
====render_hidden_field====
 
 
 
$xhtml_hidden = $repository-&gt;render_hidden_field( $name, $value )
 
Return the XHTML DOM describing an &lt;input&gt; element of type "hidden" and name and value as specified. eg.
 
 
 
&lt;input type="hidden" name="foo" value="bar" /&gt;
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_upload_field -->
 
====render_upload_field====
 
 
 
$xhtml_uploda = $repository-&gt;render_upload_field( $name )
 
Render into XHTML DOM a file upload form button with the given name.
 
 
 
eg. &lt;input type="file" name="foo" /&gt;
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_action_buttons -->
 
====render_action_buttons====
 
 
 
$dom = $repository-&gt;render_action_buttons( %buttons )
 
Returns a DOM object describing the set of buttons.
 
 
 
The keys of %buttons are the ids of the action that button will cause, the values are UTF-8 text that should appear on the button.
 
 
 
Two optional additional keys may be used:
 
 
 
_order =&gt; [ "action1", "action2" ]
 
 
 
will force the buttons to appear in a set order.
 
 
 
_class =&gt; "my_css_class"
 
 
 
will add a class attribute to the &lt;div&gt; containing the buttons to  allow additional styling.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_internal_buttons -->
 
====render_internal_buttons====
 
 
 
$dom = $repository-&gt;render_internal_buttons( %buttons )
 
As for render_action_buttons, but creates buttons for actions which will modify the state of the current form, not continue with whatever process the form is part of.
 
 
 
eg. the "More Spaces" button and the up and down arrows on multiple type fields.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_form -->
 
====render_form====
 
 
 
$dom = $repository-&gt;render_form( $method, $dest )
 
Return a DOM object describing an HTML form element.
 
 
 
$method should be "get" or "post"
 
 
 
$dest is the target of the form. By default the current page.
 
 
 
eg.
 
 
 
$repository-&gt;render_form( "GET", "http://example.com/cgi/foo" );
 
 
 
returns a DOM object representing:
 
 
 
&lt;form method="get" action="http://example.com/cgi/foo" accept-charset="utf-8" /&gt;
 
 
 
If $method is "post" then an addition attribute is set: enctype="multipart/form-data"
 
 
 
This just controls how the data is passed from the browser to the CGI library. You don't need to worry about it.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_subjects -->
 
====render_subjects====
 
 
 
$ul = $repository-&gt;render_subjects( $subject_list, [$baseid], [$currentid], [$linkmode], [$sizes] )
 
Return as XHTML DOM a nested set of &lt;ul&gt; and &lt;li&gt; tags describing part of a subject tree.
 
 
 
$subject_list is a array ref of subject ids to render.
 
 
 
$baseid is top top level node to render the tree from. If only a single subject is in subject_list, all subjects up to $baseid will still be rendered. Default is the ROOT element.
 
 
 
If $currentid is set then the subject with that ID is rendered in &lt;strong&gt;
 
 
 
$linkmode can 0, 1, 2 or 3.
 
 
 
0. Don't link the subjects.
 
 
 
1. Links subjects to the URL which edits them in edit_subjects.
 
 
 
2. Links subjects to "subjectid.html" (where subjectid is the id of  the subject)
 
  
3. Links the subjects to "subjectid/".  $sizes must be set. Only  subjects with a size of more than one are linked.
 
 
4. Links the subjects to "../subjectid/".  $sizes must be set. Only  subjects with a size of more than one are linked.
 
 
$sizes may be a ref. to hash mapping the subjectid's to the number of items in that subject which will be rendered in brackets next to each subject.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_plugins -->
<!-- Pod2Wiki=item_render_error -->
+
===plugins===
====render_error====
 
  
$repository-&gt;render_error( $error_text, $back_to, $back_to_text )
+
<source lang="perl">@plugins = $repository->plugins( [ $params, ] %restrictions )
Renders an error page with the given error text. A link, with the text $back_to_text, is offered, the destination of this is $back_to, which should take the user somewhere sensible.
 
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
</source>
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_render_input_form -->
 
====render_input_form====
 
 
 
$dom = $repository-&gt;render_input_form( %params )
 
Return a DOM object representing an entire input form.
 
 
 
%params contains the following options:
 
 
 
dataset: The EPrints::Dataset to which the form relates, if any.
 
 
 
fields: a reference to an array of EPrint::MetaField objects, which describe the fields to be added to the form.
 
 
 
values: a set of default values. A reference to a hash where the keys are ID's of fields, and the values are the default values for those fields.
 
 
 
show_help: if true, show the fieldhelp phrase for each input  field.
 
 
 
show_name: if true, show the fieldname phrase for each input  field.
 
 
 
buttons: a description of the buttons to appear at the bottom of the form. See render_action_buttons for details.
 
 
 
top_buttons: a description of the buttons to appear at the top of the form (optional).
 
 
 
default_action: the id of the action to be performed by default,  ie. if the user pushes "return" in a text field.
 
 
 
dest: The URL of the target for this form. If not defined then the current URI is used.
 
 
 
type: if this form relates to a user or an eprint, the type of eprint/user can effect what fields are flagged as required. This param contains the ID of the eprint/user if any, and if relevant.
 
 
 
staff: if true, this form is being presented to repository staff  (admin, or editor). This may change which fields are required.
 
 
 
hidden_fields: reference to a hash. The keys of which are CGI keys and the values are the values they are set to. This causes hidden form elements to be set, so additional information can be passed.
 
 
 
object: The DataObj which this form is editing, if any.
 
 
 
comment: not yet used.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=head_methods_relating_to_the_current_xhtml_page -->
 
===Methods relating to the current XHTML page===
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_write_static_page -->
 
====write_static_page====
 
 
 
$repository-&gt;write_static_page( $filebase, $parts, [$page_id], [$wrote_files] )
 
Write an .html file plus a set of files describing the parts of the page for use with the dynamic template option.
 
 
 
File base is the name of the page without the .html suffix.
 
 
 
parts is a reference to a hash containing DOM trees.
 
 
 
If $wrote_files is defined then any filenames written are logged in it as keys.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_prepare_page -->
 
====prepare_page====
 
 
 
$repository-&gt;prepare_page( $parts, %options )
 
Create an XHTML page for this session.
 
 
 
$parts is a hash of XHTML elements to insert into the pins in the template. Usually: title, page. Maybe pagetop and head.
 
 
 
If template is set then an alternate template file is used.
 
 
 
This function only builds the page it does not output it any way, see the methods below for that.
 
 
 
Options include:
 
 
 
page_id=&gt;"id to put in body tag" template=&gt;"The template to use instead of default."
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_send_page -->
 
====send_page====
 
 
 
$repository-&gt;send_page( %httpopts )
 
Send a web page out by HTTP. Only relevant if this is a CGI script. build_page must have been called first.
 
 
 
See send_http_header for an explanation of %httpopts
 
 
 
Dispose of the XML once it's sent out.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_page_to_file -->
 
====page_to_file====
 
 
 
$repository-&gt;page_to_file( $filename, [$wrote_files] )
 
Write out the current webpage to the given filename.
 
 
 
build_page must have been called first.
 
 
 
Dispose of the XML once it's sent out.
 
 
 
If $wrote_files is set then keys are created in it for each file created.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_set_page -->
 
====set_page====
 
 
 
$repository-&gt;set_page( $newhtml )
 
Erase the current page for this session, if any, and replace it with the XML DOM structure described by $newhtml.
 
 
 
This page is what is output by page_to_file or send_page.
 
 
 
$newhtml is a normal DOM Element, not a document object.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_clone_for_me -->
 
====clone_for_me====
 
 
 
$copy_of_node = $repository-&gt;clone_for_me( $node, [$deep] )
 
XML DOM items can only be added to the document which they belong to.
 
 
 
A EPrints::Repository has it's own XML DOM DOcument.
 
 
 
This method copies an XML node from _any_ document. The copy belongs to this sessions document.
 
 
 
If $deep is set then the children, (and their children etc.), are  copied too.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_redirect -->
 
====redirect====
 
 
 
$repository-&gt;redirect( $url, [%opts] )
 
Redirects the browser to $url.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_not_found -->
 
====not_found====
 
 
 
$repository-&gt;not_found( [ $message ] )
 
Send a 404 Not Found header. If $message is undef sets message to 'Not Found' but does '''NOT''' print an error message, otherwise defaults to the normal 404 Not Found type response.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_send_http_header -->
 
====send_http_header====
 
 
 
$repository-&gt;send_http_header( %opts )
 
Send the HTTP header. Only makes sense if this is running as a CGI  script.
 
 
 
Opts supported are:
 
 
 
content_type. Default value is "text/html; charset=UTF-8". This sets the http content type header.
 
 
 
lang. If this is set then a cookie setting the language preference is set in the http header.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=head_input_methods -->
 
===Input Methods===
 
These handle input from the user, browser and apache.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_param -->
 
====param====
 
 
 
$value or @values = $repository-&gt;param( $name )
 
Passes through to CGI.pm param method.
 
 
 
$value = $repository-&gt;param( $name ): returns the value of CGI parameter $name.
 
 
 
$value = $repository-&gt;param( $name ): returns the value of CGI parameter $name.
 
 
 
@values = $repository-&gt;param: returns an array of the names of all the CGI parameters in the current request.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_have_parameters -->
 
====have_parameters====
 
 
 
$bool = $repository-&gt;have_parameters
 
Return true if the current script had any parameters (post or get)
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_current_user -->
 
====current_user====
 
 
 
$user = $repository-&gt;current_user
 
Return the current EPrints::DataObj::User for this session.
 
 
 
Return undef if there isn't one.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_seen_form -->
 
====seen_form====
 
 
 
$boolean = $repository-&gt;seen_form
 
Return true if the current request contains the values from a form generated by EPrints.
 
 
 
This is identified by a hidden field placed into forms named _seen with value "true".
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_internal_button_pressed -->
 
====internal_button_pressed====
 
 
 
$boolean = $repository-&gt;internal_button_pressed( $buttonid )
 
Return true if a button has been pressed in a form which is intended to reload the current page with some change.
 
 
 
Examples include the "more spaces" button on multiple fields, the  "lookup" button on succeeds, etc.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_action_button -->
 
====get_action_button====
 
 
 
$action_id = $repository-&gt;get_action_button
 
Return the ID of the eprint action button which has been pressed in a form, if there was one. The name of the button is "_action_"  followed by the id.
 
 
 
This also handles the .x and .y inserted in image submit.
 
 
 
This is designed to get back the name of an action button created by render_action_buttons.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_internal_button -->
 
====get_internal_button====
 
 
 
$button_id = $repository-&gt;get_internal_button
 
Return the id of the internal button which has been pushed, or  undef if one wasn't.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_client -->
 
====client====
 
 
 
$client = $repository-&gt;client
 
Return a string representing the kind of browser that made the  current request.
 
 
 
Options are GECKO, LYNX, MSIE4, MSIE5, MSIE6, ?.
 
 
 
GECKO covers mozilla and firefox.
 
 
 
? is what's returned if none of the others were matched.
 
 
 
These divisions are intended for modifying the way pages are rendered not logging what browser was used. Hence merging mozilla and firefox.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_http_status -->
 
====get_http_status====
 
 
 
$status = $repository-&gt;get_http_status
 
Return the status of the current HTTP request.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=head_methods_related_to_plugins -->
 
===Methods related to Plugins===
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_plugin -->
 
====plugin====
 
 
 
$plugin = $repository-&gt;plugin( $pluginid )
 
Return the plugin with the given pluginid, in this repository or, failing that, from the system level plugins.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_plugin_list -->
 
====plugin_list====
 
 
 
@plugin_ids  = $repository-&gt;plugin_list( %restrictions )
 
Return either a list of all the plugins available to this repository or return a list of available plugins which can accept the given  restrictions.
 
 
 
Restictions:
 
vary depending on the type of the plugin.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
 
 
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=item_get_plugins -->
 
====get_plugins====
 
 
 
@plugins = $repository-&gt;get_plugins( [ $params, ] %restrictions )
 
 
Returns a list of plugin objects that conform to %restrictions (may be empty).
 
Returns a list of plugin objects that conform to %restrictions (may be empty).
  
 
If $params is given uses that hash reference to initialise the plugins. Always passes this session to the plugin constructor method.
 
If $params is given uses that hash reference to initialise the plugins. Always passes this session to the plugin constructor method.
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=head_init_from_indexer -->
<!-- Pod2Wiki=head_other_methods -->
+
===init_from_indexer===
===Other Methods===
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
<source lang="perl">$repo->init_from_indexer( $daemon )
  
<!-- Pod2Wiki= -->
+
</source>
</div>
+
(Re)initialise the repository object for use by the indexer.
<!-- Pod2Wiki=item_microtime -->
 
====microtime====
 
  
$time = EPrints::Repository::microtime();
+
Calls [[API:EPrints/Repository#check_last_changed|check_last_changed]].
This function is currently buggy so just returns the time in seconds.
 
  
Return the time of day in seconds, but to a precision of microseconds.
+
<!-- Pod2Wiki=head_copyright -->
 +
==COPYRIGHT==
 +
Copyright 2000-2011 University of Southampton.
  
Accuracy depends on the operating system etc.
+
This file is part of EPrints http://www.eprints.org/.
  
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
+
EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
<span style='display:none'>User Comments</span>
 
<!-- Edit below this comment -->
 
  
 +
EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  
<!-- Pod2Wiki= -->
+
You should have received a copy of the GNU Lesser General Public License along with EPrints.  If not, see http://www.gnu.org/licenses/.
</div>
 
<!-- Pod2Wiki=item_mail_administrator -->
 
====mail_administrator====
 
  
$foo = $repository-&gt;mail_administrator( $subjectid, $messageid, %inserts )
 
Sends a mail to the repository administrator with the given subject and message body.
 
 
$subjectid is the name of a phrase in the phrase file to use for the subject.
 
 
$messageid is the name of a phrase in the phrase file to use as the basis for the mail body.
 
 
%inserts is a hash. The keys are the pins in the messageid phrase and the values the utf8 strings to replace the pins with.
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
  
  
 
<!-- Pod2Wiki= -->
 
<!-- Pod2Wiki= -->
</div>
+
<!-- Pod2Wiki=_postamble_ -->
<!-- Pod2Wiki=item_destroy -->
 
====destroy====
 
 
 
$repository-&gt;DESTROY
 
Destructor. Don't call directly.
 
 
 
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 
<span style='display:none'>User Comments</span>
 
 
<!-- Edit below this comment -->
 
<!-- Edit below this comment -->
 
 
<!-- Pod2Wiki= -->
 
</div>
 
<!-- Pod2Wiki=_postamble_ --><!-- Edit below this comment -->
 

Latest revision as of 14:39, 30 July 2013

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


API: Core API

Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki


NAME

EPrints::Repository - connection to a single repository instance


SYNOPSIS

use EPrints;

$repo = EPrints->new->current_repository;

$repo = EPrints->new->repository( "myrepo" );

$xml = $repo->xml;
$cuser = $repo->current_user;
$repo->log( "Got user " . $cuser->id );


DESCRIPTION

EPrints::Repository represents a connection to the EPrints system. It connects to a single EPrints repository, and the database used by that repository.

Each Repository has a "current language". If you are running in a multilingual mode, this is used by the HTML rendering functions to choose what language to return text in.

The Repository object also knows about the current apache connection, if there is one, including the CGI parameters.

If the connection requires a username and password then it can also give access to the EPrints::DataObj::User object representing the user who is causing this request. See current_user.

The Repository object provides access to the EPrints::XML and EPrints::XHTML class which contain methods for creating XHTML results which can be returned via the web interface.


METHODS

new

$repository = EPrints::Repository->new( %opts )

Creates and returns a new repository object. This is a utility object only and will only have the basic system configuration available.


new

$repository = EPrints::Repository->new( $repository_id, %opts )

Create a connection to an EPrints repository $repository_id which provides access to the database and to the repository configuration.

Options:

  db_connect - 1
  check_db - 1
  noise - 0


create_from_data

$repo = EPrints::Repository->create_from_data( $epdata )

Create a new repository instance using $epdata.


delete

$repo->delete()

Destroy the repository and all its contents.

To allow this method you must first set $EPrints::Repository::ALLOW_DELETE to 1.


query

$query = $repository->query

Return the CGI object describing the current HTTP query, or undefined if this isn't a CGI script.


url_param

$value or @values = $repository->url_param( $name )

Retrieve the UTF-8 value(s) of the query parameter $name for the current request.

This will not cause the POST data to be read.


param

$value or @values = $repository->param( $name )

Passes through to CGI.pm param method.

$value = $repository->param( $name ): returns the value of CGI parameter $name.

@values = $repository->param: returns an array of the names of all the CGI parameters in the current request.


xml

$xml = $repo->xml

Return an EPrints::XML object for working with XML.


xhtml

$xhtml = $repo->xhtml

Return an EPrints::XHTML object for working with XHTML.


eprint

$eprint = $repository->eprint( $eprint_id );

A convience method to return the EPrints::DataObj::EPrint with the given ID, or undef.

Equivent to $repository->dataset("eprint")->dataobj( $eprint_id )


current_language

$lang = $repository->current_language

Returns the current language.


current_user

$user = $repository->current_user

Return the current logged in EPrints::DataObj::User for this session.

Return undef if there isn't one.


user

$user = $repository->user( $user_id );

A convience method to return the EPrints::DataObj::User with the given ID, or undef.

Equivent to $repository->dataset("user")->dataobj( $user_id )


user_by_username

$user = $repository->user_by_username( $username );

Return the user with the given username, or undef.


user_by_email

$user = $repository->user_by_email( $email );

Return the EPrints::DataObj::User with the given email, or undef.


template

$template = $repository->template( [ $id ] )


dataset

$dataset = $repository->dataset( $setname )

Return a given EPrints::DataSet or undef if it doesn't exist.


config

$confitem = $repository->config( $key, [@subkeys] )

Returns a named configuration setting including those defined in archvies/<archive_id>/cfg/cfg.d/

$repository->config( "stuff", "en", "foo" )

is equivalent to

$repository->config( "stuff" )->{en}->{foo}


log

$repository->log( $msg [, $level ] )

Log a plain text message $msg. If $level is given only logs if $level is greater than or equal to noise.

To override where log messages are sent define the log callback:

  $c->{log} = sub {
    my( $repo, $msg, $level ) = @_;
  
    ...
  };


call

$result = $repository->call( $cmd, @params )

Calls the subroutine named $cmd from the configuration perl modules for this repository with the given params and returns the result.


can_call

$boolean = $repository->can_call( @cmd_conf_path )

Return true if the given subroutine exists in this repository's config package.


try_call

$result = $repository->try_call( $cmd, @params )

Calls the subroutine named $cmd from the configuration perl modules for this repository with the given params and returns the result.

If the subroutine does not exist then quietly returns undef.

This is used to call deprecated callback subroutines.


template_dirs

@dirs = $repository->template_dirs( $langid )

Returns a list of directories from which template files may be sourced, where the first matching template encountered is used.

The directories searched are:

  archives/[archiveid]/cfg/lang/[langid]/templates/
  archives/[archiveid]/cfg/templates/
  archives/[archiveid]/cfg/themes/[themeid]/lang/[langid]/templates/
  archives/[archiveid]/cfg/themes/[themeid]/templates/
  lib/themes/[themeid]/templates/
  lib/lang/[langid]/templates/
  lib/templates/


get_static_dirs

@dirs = $repository->get_static_dirs( $langid )

Returns a list of directories from which static files may be sourced.

Directories are returned in order of importance, most important first:

  archives/[archiveid]/cfg/lang/[langid]/static
  archives/[archiveid]/cfg/static
  archives/[archiveid]/themes/[themeid]/static
  lib/themes/[themeid]/static
  lib/lang/[langid]/static
  lib/static


id

$id = $repository->id

Returns the id string of this repository.


exec

$returncode = $repository->exec( $cmd_id, %map )

Executes a system command. $cmd_id is the id of the command as set in SystemSettings and %map contains a list of things to "fill in the blanks" in the invocation line in SystemSettings.


test_config

( $returncode, $output) = $repository->test_config

This runs "epadmin test" as an external script to test if the current configuraion on disk loads OK. This can be used by the web interface to test if changes to config. files may be saved, or not.

$returncode will be zero if everything seems OK.

If not, then $output will contain the output of epadmin test


reload_config

$ok = $repository->reload_config

Trigger a configuration reload on the next request/index.

To reload the configuration right now just call load_config.


html_phrase

$xhtml_phrase = $repository->html_phrase( $phraseid, %inserts )

Return an XHTML DOM object describing a phrase from the phrase files.

$phraseid is the id of the phrase to return. If the same ID appears in both the repository-specific phrases file and the system phrases file then the repository-specific one is used.

If the phrase contains <ep:pin> elements, then each one should have an entry in %inserts where the key is the "ref" of the pin and the value is an XHTML DOM object describing what the pin should be replaced with.


phrase

$utf8_text = $repository->phrase( $phraseid, %inserts )

Performs the same function as html_phrase, but returns plain text.

All HTML elements will be removed, <br> and <p> will be converted into breaks in the text. <img> tags will be replaced with their "alt" values.


noise

$noise_level = $repository->noise

Return the noise level for the current session. See the explaination under EPrints::Repository->new()


plugins

@plugins = $repository->plugins( [ $params, ] %restrictions )

Returns a list of plugin objects that conform to %restrictions (may be empty).

If $params is given uses that hash reference to initialise the plugins. Always passes this session to the plugin constructor method.


init_from_indexer

$repo->init_from_indexer( $daemon )

(Re)initialise the repository object for use by the indexer.

Calls check_last_changed.

COPYRIGHT

Copyright 2000-2011 University of Southampton.

This file is part of EPrints http://www.eprints.org/.

EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with EPrints. If not, see http://www.gnu.org/licenses/.