]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - index.php
Merge branch 'master' of git://gitorious.org/laconica/mainline
[quix0rs-gnu-social.git] / index.php
index 387b642e2c6a2e8a81772bbbf8b29f36b1c1ffcc..e62d9469ab553924bc9d02aa24c5492bbf8b1a46 100644 (file)
--- a/index.php
+++ b/index.php
@@ -22,6 +22,8 @@ define('LACONICA', true);
 
 require_once INSTALLDIR . '/lib/common.php';
 
+// XXX: we need a little more structure in this script
+
 // get and cache current user
 
 $user = common_current_user();
@@ -45,16 +47,16 @@ if (!$user && common_config('site', 'private') &&
     common_redirect(common_local_url('login'));
 }
 
-$actionfile = INSTALLDIR."/actions/$action.php";
-
-if (file_exists($actionfile)) {
-
-    include_once $actionfile;
-
-    $action_class = ucfirst($action).'Action';
+$action_class = ucfirst($action).'Action';
 
+if (!class_exists($action_class)) {
+    $cac = new ClientErrorAction(_('Unknown action'), 404);
+    $cac->showPage();
+} else {
     $action_obj = new $action_class();
 
+    // XXX: find somewhere for this little block to live
+
     if ($config['db']['mirror'] && $action_obj->isReadOnly()) {
         if (is_array($config['db']['mirror'])) {
             // "load balancing", ha ha
@@ -66,9 +68,24 @@ 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($cex->getMessage(), $cex->getCode());
+        $cac->showPage();
+    } catch (ServerException $sex) { // snort snort guffaw
+        $sac = new ServerErrorAction($sex->getMessage(), $sex->getCode());
+        $sac->showPage();
+    } catch (Exception $ex) {
+        $sac = new ServerErrorAction($ex->getMessage());
+        $sac->showPage();
     }
-} else {
-    common_user_error(_('Unknown action'));
-}
\ No newline at end of file
+}
+
+// XXX: cleanup exit() calls or add an exit handler so
+// this always gets called
+
+Event::handle('CleanupPlugin');