<?
require_once $_SERVER['DOCUMENT_ROOT'] ."/lib/classes/XSLT.php";
ob_start();
if (!defined("DEV")) {
if (eregi("^dev\.", getenv("HTTP_HOST"))) {
define("DEV", true);
} else {
define("DEV", false);
}
}
if (!defined("GOD")) {
if (eregi("192\.168\.100\.|127\.0\.0\.1", getenv("REMOTE_ADDR"))) {
define("GOD", '1');
} else {
define("GOD", '0');
}
}
$_the_handler = new ErrorHandler();
set_error_handler(array($_the_handler, 'handleError'));
set_exception_handler(array($_the_handler, 'handleException'));
class FormFieldException extends Exception {} //-= For server side sanity checker
class ErrorHandler {
function handleException($exception) {
if (DEV | GOD) {
//-= Clear buffer, dump your guts....
ob_get_clean();
ob_start();
echo "file: ". $exception->getFile() ." \n";
echo "line: ". $exception->getLine() ." \n";
$exception->getMessage() ."\n";
debug_print_backtrace();
phpinfo(INFO_VARIABLES);
$page = ob_get_clean();
#mail("you@mail.com", "php error", $page, "Content-Type: text/html; charset=utf8");
echo $page;
} else {
ob_get_clean();
ob_start();
//-= TODO use instanceof to decide whether or not to pass through the exeption in a pretty way...
if ($exception instanceof FormFieldException) {
$xslt = new XSLT();
header("Content-type: text/html; charset=UTF-8");
$xslt->setXSL($_SERVER['DOCUMENT_ROOT'] .'/xsl/form-exception.xsl');
$xslt->setXML("<error code=\"\">". $exception->getMessage() ."</error>");
echo $xslt->transform();
exit;
} else {
header("HTTP/1.1 500 Internal Error");
$xslt = new XSLT();
header("Content-type: text/html; charset=UTF-8");
$xslt->setXSL($_SERVER['DOCUMENT_ROOT'] .'/xsl/500.xsl');
$xslt->setXML("<error/>");
echo $xslt->transform();
$page = ob_get_clean();
echo $page;
ob_start();
echo "file: ". $exception->getFile() ." \n";
echo "line: ". $exception->getLine() ." \n";
$exception->getMessage() ."\n";
debug_print_backtrace();
phpinfo(INFO_VARIABLES);
$page = ob_get_clean();
#mail("you@mail.com", "php error 500", $page, "Content-Type: text/html; charset=utf8");
exit;
}
}
}
function handleError($errno, $errstr, $errfile, $errline) {
if ($errno & E_NOTICE) return;
if (DEV | GOD) {
//-= Clear buffer, dump your guts....
ob_get_clean();
ob_start();
echo "file: $errfile \n";
echo "line: $errline \n";
echo "$errstr\n";
debug_print_backtrace();
phpinfo(INFO_VARIABLES);
$page = ob_get_clean();
#mail("you@mail.com", "php error", $page, "Content-Type: text/html; charset=utf8");
echo $page;
exit;
} else {
ob_get_clean();
ob_start();
header("HTTP/1.1 500 Internal Error");
$xslt = new XSLT();
header("Content-type: text/html; charset=UTF-8");
$xslt->setXSL($_SERVER['DOCUMENT_ROOT'] .'/xsl/500.xsl');
$xslt->setXML("<error/>");
echo $xslt->transform();
$page = ob_get_clean();
echo $page;
ob_start();
echo "file: $errfile \n";
echo "line: $errline \n";
echo "$errstr\n";
debug_print_backtrace();
phpinfo(INFO_VARIABLES);
$page = ob_get_clean();
#mail("you@mail.com", "S4S error 500", $page, "Content-Type: text/html; charset=utf8");
exit;
}
}
}
if (basename($_SERVER['PHP_SELF']) == basename(__FILE__)) {
echo "!!!";
try {
echo 1/0;
} catch (Exception $e) {
}
}
?>