r2829 Added basic infrastructure for exceptions
authorDenis Yeldandi <dyeldandi@gmail.com>
Fri, 5 Jun 2009 17:28:35 +0000 (17:28 +0000)
committerDenis Yeldandi <dyeldandi@gmail.com>
Fri, 5 Jun 2009 17:28:35 +0000 (17:28 +0000)
ajax.php
inc/interface.php
index.php
process.php
render_image.php

index 145686d9732a0cbc7b1b8ca0a5b25b4307d6d61b..e8be75a6ce41e3df6b15c71aabd0bb149a9dd300 100644 (file)
--- a/ajax.php
+++ b/ajax.php
@@ -1,4 +1,6 @@
 <?php
+ob_start();
+try {
 
 require 'inc/init.php';
 $_REQUEST['page'] = 'perms';
@@ -28,6 +30,13 @@ switch ($_REQUEST['ac'])
                        echo "NAK\n".$result['load'];
        break;
 }
+ob_end_flush();
+}
+catch (Exception $e)
+{
+       ob_end_clean();
+       printException($e);
+}
 
 
 ?>
index a4fc6bedc94654cf327a404d32056f4a1f564147..f634f1056bd8e8df23281ca1f214ff866b72456d 100644 (file)
@@ -6023,4 +6023,40 @@ function dynamic_title_decoder ($path_position)
        }
 }
 
+function dumpArray($arr)
+{
+        echo '<table class="exceptionParametersDump">';
+        foreach($arr as $key=>$value)
+        {
+                echo "<tr><th>$key</th><td>$value</td></tr>";
+        }
+        echo '</table>';
+}
+
+function printException($e)
+{
+        header("HTTP/1.1 500 Internal Server Error");
+        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n";
+        echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'."\n";
+        echo "<head><title> Exception </title>\n";
+        echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+        echo "<link rel=stylesheet type='text/css' href=pi.css />\n";
+        echo "<link rel=icon href='" . getFaviconURL() . "' type='image/x-icon' />";
+        echo '</head> <body>';
+        echo '<h2>Uncaught exception: '.get_class($e).'</h2><code>'.$e->getMessage().'</code> (<code>'.$e->getCode().'</code>)';
+        echo '<p>at file <code>'.$e->getFile().'</code>, line <code>'.$e->getLine().'</code></p><pre>';
+        print_r($e->getTrace());
+        echo '</pre>';
+        echo '<h2>Parameters:</h2>';
+        echo '<h3>GET</h3>';
+        dumpArray($_GET);
+        echo '<h3>POST</h3>';
+        dumpArray($_POST);
+        echo '<h3>COOKIE</h3>';
+        dumpArray($_COOKIE);
+        echo '</body></html>';
+
+}
+
+
 ?>
index 0716892a530aef2288e83b304e06bd881c8cba99..857edcb025c1b504bdb389cccb6ef554af8193e6 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,5 +1,6 @@
 <?php
-
+ob_start();
+try {
 require 'inc/init.php';
 // no ctx override is necessary
 fixContext();
@@ -110,3 +111,9 @@ else
        </table>
 </body>
 </html>
+<?php
+       ob_end_flush();
+} catch (Exception $e) {
+       ob_end_clean();
+       printException($e);
+}
index 0358e107554a3d928bf5fbe266649a6f946cfdda..525c73c0664fc82cbcca9ab040728cc406a8a8ca 100644 (file)
@@ -1,5 +1,6 @@
 <?php
-
+ob_start();
+try {
 // Include init after ophandlers, not before, so local.php can redefine things later.
 require 'inc/ophandlers.php';
 require 'inc/init.php';
@@ -29,5 +30,13 @@ else
        }
 }
 header ("Location: " . $location);
+ob_end_flush();
+}
+catch (Exception $e)
+{
+       ob_end_clean();
+       printException($e);
+}
+?>
 
 ?>
index 5f67d47af5c73356092d961b4a78fbfc90c62223..ad7e8aa60c457a28732c50232918e961b64316ca 100644 (file)
@@ -1,5 +1,8 @@
 <?php
 
+
+ob_start();
+try {
 require 'inc/init.php';
 
 assertStringArg ('img', __FILE__);
@@ -34,6 +37,16 @@ switch ($_REQUEST['img'])
                renderError();
 }
 
+ob_end_flush();
+}
+catch (Exception $e)
+{
+       ob_end_clean();
+       printException($e);
+}
+
+
+
 //------------------------------------------------------------------------
 function renderError ()
 {
@@ -181,5 +194,4 @@ function renderFilePreview ($file_id = 0)
        imagepng ($image);
        imagedestroy ($image);
 }
-
 ?>