<?php
/*
* This script serves up readings from the ESV. It takes a
* single parameter "passage=XXX" where XXX is the Bible text
* to display.
*
* Version 1.0 BPE 29/07/2003
* Version 2.0 BPE 18/12/2008 Expunge SOAP interface
*
*/
$local = preg_match('/\.local$/',$_SERVER['SERVER_NAME']);
if ($local) {
include('anglicise.inc');
}
if(isset($_GET['passage']) && $_GET['passage']) {
$passage = $_GET['passage'];
} else {
$passage = 'John 3:16';
}
// -1- Retrieve the passage ------------------------------------ //
$key = 'TEST';
include('../../inc/esv_key.inc'); // defines $key
$xml_content = file_get_contents("http://www.esvapi.org/v2/rest/passageQuery?key=".$key."&passage=".urlencode($passage)."&output-format=crossway-xml-1.0");
// -2- Convert from XML to XHTML ------------------------------- //
if ($xml_content) {
// I can't get the ESV DTD to work, so define the entities here
$doctype = <<<EOT
<!DOCTYPE crossway-bible [
<!ENTITY ldblquot "“">
<!ENTITY rdblquot "”">
<!ENTITY lquot "‘">
<!ENTITY rquot "’">
<!ENTITY apos "'">
<!ENTITY emdash "—">
<!ENTITY endash "–">
<!ENTITY ellipsis " . . .">
<!ENTITY ellipsis4 ". . . .">
]>
EOT;
$xml_content = $doctype.preg_replace('/<!DOCTYPE.*>/','',$xml_content);
$xsl_content = implode('',file('esv.xsl'));
$style = 'grey.css';
$params = array(
'style' => $style
);
$xsl = new DomDocument();
$xsl->loadXML($xsl_content);
$xml = new DomDocument();
$xml->substituteEntities = TRUE;
$xml->loadXML($xml_content);
$proc = new XsltProcessor();
$proc->importStylesheet($xsl);
$proc->setParameter(null, $params);
$domout = $proc->transformToDoc($xml);
$out = $domout->saveXML();
} else {
$out = '<p>There was a problem getting the passage in XML</p>';
}
// Anglicise the text: but for my local server only: it would violate
// copyright to do this for public access.
if ($local) {
$out = anglicise($out);
}
// -3- Output the XHTML ---------------------------------------- //
header("Content-Type: text/html; charset=UTF-8");
print $out;
?>