Merge branch 'newui' of https://github.com/rajbot/bookreader into newui
[bookreader.git] / BookReaderIA / datanode / BookReaderPreview.php
index 7604f91..dacf075 100644 (file)
@@ -1,7 +1,8 @@
 <?
 /*
 
-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>
 
@@ -23,7 +24,6 @@ This file is part of BookReader.
     along with BookReader.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-require_once('BookReaderMeta.inc.php');
 require_once('BookReaderImages.inc.php');
 
 function BRfatal($message) {
@@ -33,96 +33,29 @@ function BRfatal($message) {
     die(-1);
 }
 
-$brm = new BookReaderMeta();
-try {
-    $metadata = $brm->buildMetadata($_REQUEST['id'], $_REQUEST['itemPath'], $_REQUEST['bookId'], $_REQUEST['server']);
-} catch (Exception $e) {
-    BRfatal($e->getMessage);
-}
+$allowedPages = array('title','cover','preview');
+$allowedPattern = '#^(' . join('|', $allowedPages) . ')#';
 
-$knownPages = array('title','cover','preview');
 $page = $_REQUEST['page'];
-if (! in_array($page, $knownPages) ) {
-    BRfatal("Bad or no page specified");
-}
-
-// Index of image to return
-$imageIndex = null;
 
-switch ($page) {
-    case 'title':
-        if (! array_key_exists('titleIndex', $metadata)) {
-            BRfatal("No title page asserted in book");
-        }
-        $imageIndex = $metadata['titleIndex'];
-        break;
-        
-    case 'cover':
-        if (! array_key_exists('coverIndices', $metadata)) {
-            BRfatal("No cover asserted in book");
-        }
-        $imageIndex = $metadata['coverIndices'][0]; // $$$ TODO add support for other covers
-        break;
-        
-    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'];
-            break;
-        }
-        if (array_key_exists('coverIndices', $metadata)) {
-            $imageIndex = $metadata['coverIndices'][0];
-            break;
-        }
-        
-        // First page
-        $imageIndex = 0;
-        break;
-        
-    default:
-        // Shouldn't be possible
-        BRfatal("Couldn't find page");
-        break;
+if (preg_match($allowedPattern, $page)) { 
+    // Return image data
+    $bri = new BookReaderImages();
+    
+    try {
+        $bri->serveLookupRequest($_REQUEST);
+    } catch (Exception $e) {
+        header("HTTP/1.0 404 Not Found");
+        header("Content-type: text/plain");
         
+        print "Error serving request:\n";
+        print "  " . $e->getMessage() . "\n\n";
+        print "Debugging information:\n";
+        echo $e->getTraceAsString();
+    }
+} else {
+    BRfatal("Bad or no page specified");
 }
 
-$leaf = $brm->leafForIndex($imageIndex, $metadata['leafNums']);
-
-$requestEnv = array(
-    'zip' => $metadata['zip'],
-    'file' => $brm->imageFilePath($leaf, $metadata['bookId'], $metadata['imageFormat']),
-    'ext' => 'jpg',
-);
-
-// Return image data - will check privs
-$bri = new BookReaderImages();
-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