<?
/*
-Provides access to preview images of book.
+Provides access to preview images of book. It is run with privileges and provides a reduced
+access wrapper around BookReaderImages.
Michael Ang <http://github.com/mangtronix>
function BRfatal($message) {
header("HTTP/1.0 404 Not Found");
+ header("Content-type: text/plain");
print $message;
- exit();
+ die(-1);
}
$brm = new BookReaderMeta();
-$metadata = $brm->buildMetadata($_REQUEST['id'], $_REQUEST['itemPath'], $_REQUEST['bookId'], $_REQUEST['server']);
+try {
+ $metadata = $brm->buildMetadata($_REQUEST['id'], $_REQUEST['itemPath'], $_REQUEST['subPrefix'], $_REQUEST['server']);
+} catch (Exception $e) {
+ BRfatal($e->getMessage);
+}
+// $$$ allow size information
$knownPages = array('title','cover','preview');
$page = $_REQUEST['page'];
if (! in_array($page, $knownPages) ) {
case 'preview':
// Preference is:
+ // Cover page if book was published >= 1950
// Title page
// Cover page
// Page 0
+
+ /*
+ header('Content-type: text/plain');
+ print 'Date ' . $metadata['date'];
+ print 'Year ' . $brm->parseYear($metadata['date']);
+ */
+
+ if ( array_key_exists('date', $metadata) && array_key_exists('coverIndices', $metadata) ) {
+ if ($brm->parseYear($metadata['date']) >= 1950) {
+ $imageIndex = $metadata['coverIndices'][0];
+ break;
+ }
+ }
if (array_key_exists('titleIndex', $metadata)) {
$imageIndex = $metadata['titleIndex'];
- } else if (array_key_exists('coverIndices', $metadata)) {
+ break;
+ }
+ if (array_key_exists('coverIndices', $metadata)) {
$imageIndex = $metadata['coverIndices'][0];
- } else {
- $imageIndex = 0;
+ break;
}
+
+ // First page
+ $imageIndex = 0;
break;
default:
// Shouldn't be possible
BRfatal("Couldn't find page");
break;
+
}
$leaf = $brm->leafForIndex($imageIndex, $metadata['leafNums']);
$requestEnv = array(
'zip' => $metadata['zip'],
- 'file' => $brm->imageFilePath($leaf, $metadata['bookId'], $metadata['imageFormat']),
+ 'file' => $brm->imageFilePath($leaf, $metadata['subPrefix'], $metadata['imageFormat']),
'ext' => 'jpg',
- 'reduce' => 2, // XXX
);
// Return image data - will check privs
$bri = new BookReaderImages();
-$bri->serveRequest($requestEnv);
+try {
+ $bri->serveRequest($requestEnv);
+} catch (Exception $e) {
+ header("HTTP/1.0 404 Not Found");
+ header("Content-type: text/plain");
+ print "Error serving request:";
+ print " " . $e->getMessage();
+ print "Debugging information:";
+ echo $e->getTraceAsString();
+ die(-1);
+}
?>
\ No newline at end of file