function exception(Exception $e) { if (ob_get_length() != false) { @ob_end_clean(); } $et = typeOf($e); if ($et == 'FileNotFoundException' || $et == 'NavigationException') { response::setStatus(404); header('HTTP/1.1 404 Not Found', true); printf("<h1>404: Not Found</h1>"); return; } if ($et == 'HttpException') { response::setStatus($e->getCode()); $code = $e->getMessage(); list($code) = explode(':', $code); $code = str_replace('Error ', '', $code); $msg = HttpException::getHttpMessage($code); header('HTTP/1.1 ' . $code . ' ' . $msg . ' ' . $msg); printf("<h1>%s: %s</h1>\n<pre>%s</pre>", $code, $msg, $msg); return; } response::setStatus(500); logger::emerg("Unhandled exception: (%s) %s in %s:%d", get_class($e), $e->getMessage(), str_replace(BASE_PATH, '', $e->getFile()), $e->getLine()); header('HTTP/1.1 501 Server Error', true); $id = uniqid(); $dbg = sprintf("Unhandled exception: (%s) %s\n in %s:%d", get_class($e), $e->getMessage(), str_replace(SYS_PATH, '', $e->getFile()), $e->getLine()) . Console::backtrace(0, $e->getTrace(), true) . "\n" . "Loaded modules:\n" . ModuleManager::debug() . "\n" . request::getDebugInformation(); logger::emerg($dbg); if (config::get('lepton.mvc.exception.log', false) == true) { $logfile = config::get('lepton.mvc.exception.logfile', "/tmp/" . $_SERVER['HTTP_HOST'] . "-debug.log"); $log = "=== Unhandled Exception ===\n\n" . $dbg . "\n"; $lf = @fopen($logfile, "a+"); if ($lf) { fputs($lf, $log); fclose($lf); } } $ico_error = resource::get('warning.png'); header('content-type: text/html; charset=utf-8'); echo '<html><head><title>Unhandled Exception</title>' . self::$css . self::$js . '</head><body>' . '<div id="box"><div id="left"><img src="' . $ico_error . '" width="32" height="32"></div><div id="main">' . '<h1>An Unhandled Exception Occured</h1>' . '<hr noshade>' . '<p>This means that something didn\'t go quite go as planned. This could be ' . 'caused by one of several reasons, so please be patient and try ' . 'again in a little while.</p>'; if (config::get('lepton.mvc.exception.feedback', false) == true) { echo '<p>The administrator of the website has been notified about this error. You ' . 'can help us find and fix the problem by writing a line or two about what you were doing when this ' . 'error occured.</p>'; echo '<p id="feedbacklink"><a href="javascript:doFeedback();">If you would like to assist us with more information, please click here</a>.</p>'; echo '<div id="feedback" style="display:none;"><p>Describe in a few short lines what you were doing right before you encountered this error:</p><form action="/errorevent.feedback/' . $id . '" method="post"><div><textarea name="text" style="width:100%; height:50px;"></textarea></div><div style="padding-top:5px; text-align:right;"><input type="button" value=" Close " onclick="closeFeedback();"> <input type="submit" value=" Submit Feedback "></div></form></div>'; } if (config::get('lepton.mvc.exception.showdebug', false) == true) { echo '<hr noshade>' . '<a href="javascript:toggleAdvanced();">Details »</a>' . '<pre id="advanced" style="display:none; height:300px;">' . $dbg . '</pre>'; } echo '<div>' . '</body></html>'; }
/** * */ static function run($class) { static $ic = 0; $args = func_get_args(); $args = array_slice($args, 1); Console::debugEx(LOG_EXTENDED, __CLASS__, "Inspecting environment module state:\n%s", ModuleManager::debug()); $ic++; if (class_exists($class)) { $rv = 0; $apptimer = new Timer(); try { $instance = new $class(); if (!$instance instanceof IApplication) { console::warn("FATAL: Application is not instance of IApplication"); return RETURN_ERROR; } Console::debugEx(LOG_BASIC, __CLASS__, "Invoking application instance from %s.", $class); $apptimer->start(); if (is_callable(array($instance, 'run'))) { $rv = call_user_func_array(array($instance, 'run'), $args); } else { console::writeLn("Requested application class %s is not runnable.", $class); } $apptimer->stop(); unset($instance); Console::debugEx(LOG_BASIC, __CLASS__, "Main method exited with code %d after %.2f seconds.", $rv, $apptimer->getElapsed()); } catch (Exception $e) { throw $e; } $ic--; if ($ic == 0) { return $rv; } } else { $ic--; if ($ic == 0) { Console::warn('FATAL: Application class %s not found!', $class); exit(RETURN_ERROR); } else { Console::warn('Application class %s not found!', $class); } } }
function load($module = null) { if ($module) { if (ModuleManager::load($module)) { Console::writeLn(__astr("\\b{load}: Module %s loaded"), $module); } else { Console::writeLn(__astr("\\b{load}: Module %s failed to load!"), $module); } } Console::writeLn(__astr("\\b{Loaded modules:}")); Console::writeLn("%s", ModuleManager::debug()); }