X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=index.php;h=1d0aabb8bb375ea0592ba138e2b3a0ca72a9e5c7;hb=cb3d8636680320efb998ac303fe55e775ae75b97;hp=3534739bface4334914d14a07dbb700363d3f974;hpb=0dbdcf2936a00282114f1368ead2f5edebc6ae61;p=quix0rs-gnu-social.git diff --git a/index.php b/index.php index 3534739bfa..1d0aabb8bb 100644 --- a/index.php +++ b/index.php @@ -41,29 +41,37 @@ $_startTime = microtime(true); $_perfCounters = array(); define('INSTALLDIR', dirname(__FILE__)); -define('STATUSNET', true); -define('LACONICA', true); // compatibility +define('GNUSOCIAL', true); +define('STATUSNET', true); // compatibility $user = null; $action = null; function getPath($req) { + $p = null; + if ((common_config('site', 'fancy') || !array_key_exists('PATH_INFO', $_SERVER)) && array_key_exists('p', $req) ) { - return $req['p']; + $p = $req['p']; } else if (array_key_exists('PATH_INFO', $_SERVER)) { $path = $_SERVER['PATH_INFO']; $script = $_SERVER['SCRIPT_NAME']; if (substr($path, 0, mb_strlen($script)) == $script) { - return substr($path, mb_strlen($script)); + $p = substr($path, mb_strlen($script) + 1); } else { - return $path; + $p = $path; } } else { - return null; + $p = null; } + + // Trim all initial '/' + + $p = ltrim($p, '/'); + + return $p; } /** @@ -116,16 +124,14 @@ function handleError($error) common_config('site', 'name'), common_config('site', 'email') ); + + $dac = new DBErrorAction($msg, 500); + $dac->showPage(); } else { - // TRANS: Error message. - $msg = _('An important error occured, probably related to email setup. '. - 'Check logfiles for more info.' - ); + $sac = new ServerErrorAction($error->getMessage(), 500, $error); + $sac->showPage(); } - $dac = new DBErrorAction($msg, 500); - $dac->showPage(); - } catch (Exception $e) { // TRANS: Error message. echo _('An error occurred.'); @@ -195,29 +201,9 @@ function setupRW() return; } -function checkMirror($action_obj, $args) -{ - global $config; - - if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) { - if (is_array(common_config('db', 'mirror'))) { - // "load balancing", ha ha - $arr = common_config('db', 'mirror'); - $k = array_rand($arr); - $mirror = $arr[$k]; - } else { - $mirror = common_config('db', 'mirror'); - } - - // everyone else uses the mirror - - $config['db']['database'] = $mirror; - } -} - function isLoginAction($action) { - static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp', 'opensearch', 'rsd', 'hostmeta'); + static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp', 'opensearch', 'rsd'); $login = null; @@ -256,8 +242,6 @@ function main() } global $user, $action; - Snapshot::check(); - if (!_have_config()) { $msg = sprintf( // TRANS: Error message displayed when there is no StatusNet configuration file. @@ -302,18 +286,16 @@ function main() // If the request is HTTP and it should be HTTPS... if ($site_ssl != 'never' && !StatusNet::isHTTPS() && common_is_sensitive($args['action'])) { common_redirect(common_local_url($args['action'], $args)); - return; } $args = array_merge($args, $_REQUEST); Event::handle('ArgsInitialize', array(&$args)); - $action = $args['action']; + $action = basename($args['action']); if (!$action || !preg_match('/^[a-zA-Z0-9_-]*$/', $action)) { common_redirect(common_local_url('public')); - return; } // If the site is private, and they're not on one of the "public" @@ -340,7 +322,6 @@ function main() common_set_returnto(common_local_url($action, $rargs)); common_redirect(common_local_url('login')); - return; } $action_class = ucfirst($action).'Action'; @@ -350,14 +331,8 @@ function main() $cac = new ClientErrorAction(_('Unknown action'), 404); $cac->showPage(); } else { - $action_obj = new $action_class(); - - checkMirror($action_obj, $args); - try { - if ($action_obj->prepare($args)) { - $action_obj->handle($args); - } + call_user_func("$action_class::run", $args); } catch (ClientException $cex) { $cac = new ClientErrorAction($cex->getMessage(), $cex->getCode()); $cac->showPage();