2013-05-07 19:48:37 +02:00
< ? php
/*! \mainpage notitle
*
* \section intro_sec Introduction
*
* This is an implementation for an OAI - PMH 2.0 Data Provider ( sometimes , repository is used exchangeablly ) written in PHP .
*
* This implementation completely complies to OAI - PMH 2.0 , including
* the support of on - the - fly output compression which may significantly
* reduce the amount of data being transfered .
*
2013-05-14 23:24:59 +02:00
* This package has been inspired by PHP OAI Data Provider developed by Heinrich Stamerjohanns at University of Oldenburg .
2013-05-07 19:48:37 +02:00
* Some of the functions and algorithms used in this code were transplanted from his implementation at http :// physnet . uni - oldenburg . de / oai /.
*
2013-05-14 23:24:59 +02:00
* Database support is supported through PDO ( PHP Data Objects included in
* the PHP distribution ), so almost any popular SQL - database can be
2013-05-07 19:48:37 +02:00
* used without any change in the code . Only thing need to do is to configure
* database connection and define a suitable data structure .
*
2013-05-14 23:24:59 +02:00
* The repository can be quite easily configured by just editing
2013-05-07 19:48:37 +02:00
* oaidp - config . php , most possible values and options are explained .
*
* \section req_sec Requirements
* - A running web server + PHP version 5.0 or above .
2013-05-14 23:24:59 +02:00
* - A databse can be connected by PDO .
2013-05-07 19:48:37 +02:00
*
* \section install_sec Installation
*
*- Copy the the files in source package to a location under your
* document root of your web server . The directory structure should be
2013-05-14 23:24:59 +02:00
* preserved .
2013-05-07 19:48:37 +02:00
*- Change to that directory ( e . g . cd / var / www / html / oai ) .
*- Allow your webserver to write to the token directory .
* The default token directory is / tmp which does not need any attention .
2013-05-14 23:24:59 +02:00
*- Edit oaidp - config . php . Almost all possible options are
* explained . It is assumed that basic elements of a record are stored in
2013-05-07 19:48:37 +02:00
* one simple table . You can find sql examples of table definition in doc folder .
2013-05-14 23:24:59 +02:00
* If your data is organized differently , you have to adjust the < i > Query </ i > functions
2013-05-07 19:48:37 +02:00
* to reflect it and even develop your own code .
*- Check your oai site through a web browser . e . g . : \code http :// localhost / oai / \endcode
*- SELinux needs special treatments for database connection and other permission .
*
* \section struct_sec Structure
The system includes files for individual functionality and utility classes and functions to get it work .
- Controller
- oai2 . php
- Individual functionalities :
- identify . php : identifies the data provider . Responses to < B > Identify </ B >.
- listmetadataformats . php : lists supported metadata formats , e . g . dc or rif - cs . Responses to < B > ListMetadataFormats </ B >.
- listsets . php : lists supported sets , e . g . Activity , Collection or Party . Responses to < B > ListSets </ B >.
- listrecords . php : lists a group of records without details . Responses to < B > ListRecords </ B >. It also serves to < B > ListIdentifiers </ B > which only returns identifiers .
- getrecord . php : gets an individual record . Responses to < B > GetRecord </ B >.
- Utility classes
- xml_creater . php which includes classess ANDS_XML , ANDS_Error_XML , ANDS_Response_XML
- Utility functions
- oaidp - util . php
- Support to different metadataformats in your own systems . Two examples provided with the package are : record_dc . php and record_rif . php . They are helpers and need information from the real records . They need to be devloped for your particular system .
- Configurations
- oaidp - config . php
*
* \author Jianfeng Li
* \version 1.1
* \date 2010 - 2011
*/
/**
* \file
* \brief
* Default starting point of OAI Data Provider for a human to check .
*
* OAI Data Provider is not designed for human to retrieve data but it is possible to use this page to test and check the functionality of current implementation .
* This page provides a summary of the OAI - PMH and the implementation .
*
*/
$MY_URI = 'http://' . $_SERVER [ 'SERVER_NAME' ] . $_SERVER [ 'SCRIPT_NAME' ];
$pos = strrpos ( $MY_URI , '/' );
$MY_URI = substr ( $MY_URI , 0 , $pos ) . '/oai2.php' ;
?>
< html >
< head >
< title > php - oai2 Data Provider </ title >
</ head >
< body >
< h3 > php - oai2 Data Provider </ h3 >
< p > This is an implementation of an < a href = " http://www.openarchives.org/OAI/openarchivesprotocol.html " target = " _blank " > OAI - PMH 2.0 Data Provider </ a > , written in < a href = " http://www.php.net " title = " PHP's website " target = " _blank " > PHP </ a > and has been tested with version 5.3 .</ p >
< p > This implementation completely complies to < a href = " http://www.openarchives.org/OAI/openarchivesprotocol.html " target = " _blank " > OAI - PMH 2.0 </ a > , including the support of on - the - fly output compression which may significantly
reduce the amount of data being transfered .</ p >
2013-05-14 23:24:59 +02:00
< p > This package has been inspired by < a href = 'http://physnet.uni-oldenburg.de/oai/' target = " _blank " > PHP OAI Data Provider </ a > developed by Heinrich Stamerjohanns at University of Oldenburg .
2013-05-07 19:48:37 +02:00
Some of the functions and algorithms used in this code were transplanted from his implementation .< p >
2013-05-14 23:24:59 +02:00
< p > Database is supported through < a href = " http://www.php.net/manual/en/book.pdo.php " target = " _blank " >< dfn >< abbr title = " PHP Data Objects " > PDO </ abbr ></ dfn ></ a > , so almost any popular SQL - database which has PDO driver can be used without any change in the code .</ p >
2013-05-07 19:48:37 +02:00
< p > It uses < dfn > DOM extension </ dfn > , an extension included in every PHP installation since version 5 , for generating XML files . With PHP 5 or above no extra extension is needed .</ p >
2013-05-14 23:24:59 +02:00
< p > The repository can be quite easily configured by just editing oai2 / oaidp - config . php , most possible values and options are explained .
2013-05-07 19:48:37 +02:00
For requirements and instructions to install and configure , please reference < a href = " doc/index.html " > the documentation </ a >.</ p >
< p > Once you have setup your Data Provider , you can the easiliy check the generated answers ( it will be XML ) of your Data Provider
by clicking on the < a href = " #tests " > test links below </ a >. </ p >
< p > For simple visual tests set < em > $SHOW_QUERY_ERROR </ em > to < em > TRUE </ em > and < em > $CONTENT_TYPE </ em > to < em > text / plain </ em > , so you can easily read the generated XML responses in your browser . </ p >
2013-05-14 23:24:59 +02:00
< p >< strong > Remember </ strong > , < em > GetRecord </ em > needs < b >< i > identifier </ i ></ b > to work .
2013-05-07 19:48:37 +02:00
So please change it use your own or you should see a response with error message .</ p >
< p >
< dl >
< dt > Example Tables
< dd >< a href = " doc/oai_records_mysql.sql " > OAI Records ( mysql ) </ a ></ dd >
< dd >< a href = " doc/oai_records_pgsql.sql " > OAI Records ( pgsql ) </ a ></ dd >
</ dt >
< dt > Query and check your Data - Provider </ dt >
< dd >< a href = " <?php echo $MY_URI ; ?>?verb=Identify " > Identify </ a ></ dd >
< dd >< a href = " <?php echo $MY_URI ; ?>?verb=ListMetadataFormats " > ListMetadataFormats </ a ></ dd >
< dd >< a href = " <?php echo $MY_URI ; ?>?verb=ListSets " > ListSets </ a ></ dd >
< dd >< a href = " <?php echo $MY_URI ; ?>?verb=ListIdentifiers&metadataPrefix=rif " > ListIdentifiers </ a ></ dd >
< dd >< a href = " <?php echo $MY_URI ; ?>?verb=ListRecords&metadataPrefix=rif " > ListRecords </ a ></ dd >
< dd >< a href = " <?php echo $MY_URI ; ?>?verb=GetRecord&metadataPrefix=rif&identifier=8b1fcb90-872d-4d7d-a745-fbc37d4561b8 " > GetRecord </ a ></ dd >
</ dt >
</ dl >
</ p >
< p >
For other tests on your own provider or other providers , please use the < a href = " http://re.cs.uct.ac.za/ " title = " OAI Repository Explorer " target = " _blank " > Repository Explorer </ a >.
</ p >
< p >
Jianfeng Li < br >
The Plant Accelerator < br >
University of Adelaide
</ p >
</ body >
</ html >