We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit aa06d760 authored by Evan Prodromou's avatar Evan Prodromou

Index and Action use Exceptions

Main Web entry point accepts exceptions, and main code in Action
throws them.
parent 9152c0bd
......@@ -47,7 +47,11 @@ if (!$user && common_config('site', 'private') &&
$actionfile = INSTALLDIR."/actions/$action.php";
if (file_exists($actionfile)) {
if (!file_exists($actionfile)) {
$cac = new ClientErrorAction();
$cac->handle(array('code' => 404,
'message' => _('Unknown action')));
} else {
include_once $actionfile;
......@@ -66,9 +70,22 @@ if (file_exists($actionfile)) {
}
$config['db']['database'] = $mirror;
}
if (call_user_func(array($action_obj, 'prepare'), $_REQUEST)) {
call_user_func(array($action_obj, 'handle'), $_REQUEST);
try {
if ($action_obj->prepare($_REQUEST)) {
$action_obj->handle($_REQUEST);
}
} catch (ClientException cex) {
$cac = new ClientErrorAction();
$cac->handle(array('code' => $cex->code,
'message' => $cex->message));
} catch (ServerException sex) { // snort snort guffaw
$sac = new ServerErrorAction();
$sac->handle(array('code' => $sex->code,
'message' => $sex->message));
} catch (Exception ex) {
$sac = new ServerErrorAction();
$sac->handle(array('code' => 500,
'message' => $ex->message));
}
} else {
common_user_error(_('Unknown action'));
}
\ No newline at end of file
}
......@@ -789,11 +789,12 @@ class Action extends HTMLOutputter // lawsuit
*
* @return nothing
*/
function serverError($msg, $code=500)
{
$action = $this->trimmed('action');
common_debug("Server error '$code' on '$action': $msg", __FILE__);
common_server_error($msg, $code);
throw new ServerException($msg, $code);
}
/**
......@@ -804,11 +805,12 @@ class Action extends HTMLOutputter // lawsuit
*
* @return nothing
*/
function clientError($msg, $code=400)
{
$action = $this->trimmed('action');
common_debug("User error '$code' on '$action': $msg", __FILE__);
common_user_error($msg, $code);
throw new ClientException($msg, $code);
}
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment