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'));
}
......@@ -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