Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
buechereielektrik:unapi:coins.php [2010-01-27 20:23] – Added link in copyright rosenke | buechereielektrik:unapi:coins.php [2010-05-02 18:29] – Corrected a comment strols |
---|
* Purpose | * Purpose |
* | * |
* This is an implementation of an unAPI for PICA-LBSs. | * Take an unique identifier as id-parameter and return bibliographic data |
* It uses the XML-interface of the OPC4 for extracting bibliographic | * as COinS wrapped in JavaScript. |
* data. | * For the specification of COinS, see <http://ocoins.info/>. |
* For the specification of unAPI, see <http://unapi.info/specs/>. | |
*/ | */ |
| |
* | * |
* Copyright 2008 2009 Goetz Hatop <hatop@ub.uni-marburg.de>. | * Copyright 2008 2009 Goetz Hatop <hatop@ub.uni-marburg.de>. |
* Goetz Hatop's original Version can be found at | |
* <ftp://ftp.ub.uni-marburg.de/pub/research/unapi.tar.gz>. | |
* | * |
* Copyright 2009 2010 Stephan Rosenke <rosenke@ulb.tu-darmstadt.de> or | * Copyright 2009 2010 Stephan Rosenke <rosenke@ulb.tu-darmstadt.de> or |
* Changelog | * Changelog |
* | * |
| * 20100502: Corrected a comment. |
* 20100127: Added link in copyright. | * 20100127: Added link in copyright. |
* 20100111: Added openurl-kev as format. | * 20100111: stripped Bibsonomy.php for use as COinS-Generator. |
* 20100110: Some style improvements, added comments, removed some old code. | |
* 20100109: Some style improvements, added comments. | |
* 20091216: Some minor style and other corrections. | |
* 20091215: Added JSON as format. | |
* 20091214: s/require/require_once/. | |
* Made last switch() more validator compliant. | |
* 20091211: Added HTTP-Response-Codes to some cases in the last switch. | |
* Corrected answer if format=''. | |
* Added BibTex as format. | |
* 20091210: Put class Picappn to PicaRecord.php. | |
* Inserted conditional for textual output of array. | |
* Ordered final switch() alphabetically. | |
* Added format "plain", renamed "picaplus" to "extpp". | |
* Put header() in the case-loops in final switch(). | |
* 20091210: Started with Goetz Hatop's version of 2009-12-08. | |
*/ | */ |
| |
| /* |
| * Readme |
| * |
| * For generating COinS using this script include it in a HTML-file by these |
| * lines: |
| * <script src="http://example.com/Coins.php?id=123" type="text/javascript" |
| * language="JavaScript"></script> |
| */ |
| |
| /* |
| * set some user-defineable variables |
| */ |
| |
| // Default text for COinS |
| $text = ''; |
| |
/* | /* |
| |
// make some GET-variables a little bit handier | // make some GET-variables a little bit handier |
$format = $_GET['format']; | |
$id = $_GET['id']; | $id = $_GET['id']; |
| |
/* | // check if $id is not empty |
* Output if no id-parameter or no parameter at all is given. | |
* Plain-format is not announced. | |
*/ | |
$noparam = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> | |
<formats> | |
<format name=\"bibtex\" type=\"text/plain\" /> | |
<format name=\"dc\" type=\"application/xml\" /> | |
<format name=\"extpp\" type=\"application/xml\" /> | |
<format name=\"json\" type=\"application/json\" /> | |
<format name=\"openurl-kev\" type=\"text/plain\" /> | |
<format name=\"rdf\" type=\"application/xml\" /> | |
<format name=\"text\" type=\"text/plain\" /> | |
<format name=\"xml\" type=\"application/xml\" /> | |
</formats> | |
"; | |
| |
/* | |
* check if $id is not empty, if it's empty show | |
* available formats. | |
*/ | |
if (!isset($id) || $id == '') { | if (!isset($id) || $id == '') { |
header('Content-type: application/xml'); | header('HTTP/1.0 406 Not Acceptable'); |
echo "$noparam"; | echo "406: Not Acceptable"; |
return; | return; |
} | } |
$pica->setPpn($id); | $pica->setPpn($id); |
| |
/* | // get OpenURL in KEV format |
* This is no part of the unAPI but for debugging. | $res = $pica->getOpenUrlKev(); |
* It is triggered by supplying "array" as $format and print_rs the | |
* pica-data as array. | |
*/ | |
if ($format == "array") { | |
echo "<head></head>\n<body>\n <pre>\n"; | |
print_r($pica->getArray()); | |
echo " </pre>\n</body>\n"; | |
die(0); | |
} | |
| |
// Final switch for printing result according to $format | // check if $res is not empty and return COinS with JavaScript |
switch ($format) { | if (!isset($res) || $res == '') { |
// BibTeX | header('HTTP/1.0 406 Not Acceptable'); |
case 'bibtex': | return; |
$res = $pica->getBibTex(); | } else { |
final_result($res, 'text/plain'); | echo 'document.write("<span class=\"Z3988\" title=\"'.$res.'\">'.$text. |
break; | '</span>")'; |
// Dublin Core | |
case 'dc': | |
$res = $pica->getDublinCore(); | |
final_result($res, 'application/xml'); | |
break; | |
// External PICA+ | |
case 'extpp': | |
$res = $pica->getPicaPlus(); | |
final_result($res, 'application/xml'); | |
break; | |
// JSON | |
case 'json': | |
$res = $pica->getJson(); | |
final_result($res, 'application/json'); | |
break; | |
// OpenURL-KEV | |
case 'openurl-kev': | |
$res = $pica->getOpenUrlKev(); | |
final_result($res, 'text/plain'); | |
break; | |
// pseudo-XML | |
case 'plain': | |
$res = $pica->getPlain(); | |
break; | |
// RDF | |
case 'rdf': | |
$res = $pica->getDublinCoreRDF(); | |
final_result($res, 'application/xml'); | |
break; | |
// plain text | |
case 'text': | |
$res = $pica->getText(); | |
final_result($res, 'text/plain'); | |
break; | |
// XML | |
case 'xml': | |
$res = $pica->getXmlData(); | |
final_result($res, 'application/xml'); | |
break; | |
// if no $format is given but $id is set | |
case '': | |
header('HTTP/1.0 300 Multiple Choices'); | |
header('Content-type: application/xml'); | |
echo "$noparam"; | |
break; | |
// for all other values of $format | |
default: | |
header('HTTP/1.0 406 Not Acceptable'); | |
break; | |
} | } |
| |
?> | ?> |
</code> | </code> |