summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--index.php13
-rw-r--r--lib/common.php3
2 files changed, 9 insertions, 7 deletions
diff --git a/index.php b/index.php
index 0a79b9731..e62d9469a 100644
--- 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,19 +47,16 @@ if (!$user && common_config('site', 'private') &&
common_redirect(common_local_url('login'));
}
-$actionfile = INSTALLDIR."/actions/$action.php";
+$action_class = ucfirst($action).'Action';
-if (!file_exists($actionfile)) {
+if (!class_exists($action_class)) {
$cac = new ClientErrorAction(_('Unknown action'), 404);
$cac->showPage();
} else {
-
- include_once $actionfile;
-
- $action_class = ucfirst($action).'Action';
-
$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
diff --git a/lib/common.php b/lib/common.php
index 041459cf3..7bfd14c42 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -211,6 +211,9 @@ function __autoload($class)
require_once(INSTALLDIR.'/classes/' . $class . '.php');
} else if (file_exists(INSTALLDIR.'/lib/' . strtolower($class) . '.php')) {
require_once(INSTALLDIR.'/lib/' . strtolower($class) . '.php');
+ } else if (mb_substr($class, -6) == 'Action' &&
+ file_exists(INSTALLDIR.'/actions/' . strtolower(mb_substr($class, 0, -6)) . '.php')) {
+ require_once(INSTALLDIR.'/actions/' . strtolower(mb_substr($class, 0, -6)) . '.php');
}
}