X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=index.php;h=9501e2275da6d610b9263bcb5a9e911e721d64de;hb=693fecc44a70e25d5ef0ca784a462aadb487ef1e;hp=65f251bcce6144db63bf3e6870fbda4d311da0fb;hpb=c1e96cbdefa66e66815c421378b9452d7c8d5548;p=quix0rs-gnu-social.git diff --git a/index.php b/index.php index 65f251bcce..9501e2275d 100644 --- a/index.php +++ b/index.php @@ -19,16 +19,20 @@ * @category StatusNet * @package StatusNet * @author Brenda Wallace + * @author Brion Vibber * @author Christopher Vollick * @author CiaranG * @author Craig Andrews * @author Evan Prodromou * @author Gina Haeussge + * @author James Walker * @author Jeffery To * @author Mike Cochrane * @author Robin Millette * @author Sarven Capadisli * @author Tom Adams + * @author Zach Copley + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * * @license GNU Affero General Public License http://www.gnu.org/licenses/ */ @@ -37,6 +41,8 @@ define('INSTALLDIR', dirname(__FILE__)); define('STATUSNET', true); define('LACONICA', true); // compatibility +require_once INSTALLDIR . '/lib/common.php'; + $user = null; $action = null; @@ -66,69 +72,52 @@ function getPath($req) */ function handleError($error) { - try { - - if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) { - return; - } + if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) { + return; + } - $logmsg = "PEAR error: " . $error->getMessage(); - if ($error instanceof PEAR_Exception && common_config('site', 'logdebug')) { - $logmsg .= " : ". $error->toText(); - } - // DB queries often end up with a lot of newlines; merge to a single line - // for easier grepability... - $logmsg = str_replace("\n", " ", $logmsg); - common_log(LOG_ERR, $logmsg); - - // @fixme backtrace output should be consistent with exception handling - if (common_config('site', 'logdebug')) { - $bt = $error->getTrace(); - foreach ($bt as $n => $line) { - common_log(LOG_ERR, formatBacktraceLine($n, $line)); - } - } - if ($error instanceof DB_DataObject_Error - || $error instanceof DB_Error - || ($error instanceof PEAR_Exception && $error->getCode() == -24) - ) { - //If we run into a DB error, assume we can't connect to the DB at all - //so set the current user to null, so we don't try to access the DB - //while rendering the error page. - global $_cur; - $_cur = null; - - $msg = sprintf( - _( - 'The database for %s isn\'t responding correctly, '. - 'so the site won\'t work properly. '. - 'The site admins probably know about the problem, '. - 'but you can contact them at %s to make sure. '. - 'Otherwise, wait a few minutes and try again.' - ), - common_config('site', 'name'), - common_config('site', 'email') - ); - } else { - $msg = _( - 'An important error occured, probably related to email setup. '. - 'Check logfiles for more info..' - ); + $logmsg = "PEAR error: " . $error->getMessage(); + if (common_config('site', 'logdebug')) { + $logmsg .= " : ". $error->getDebugInfo(); + } + // DB queries often end up with a lot of newlines; merge to a single line + // for easier grepability... + $logmsg = str_replace("\n", " ", $logmsg); + common_log(LOG_ERR, $logmsg); + + // @fixme backtrace output should be consistent with exception handling + if (common_config('site', 'logdebug')) { + $bt = $error->getBacktrace(); + foreach ($bt as $n => $line) { + common_log(LOG_ERR, formatBacktraceLine($n, $line)); } - - $dac = new DBErrorAction($msg, 500); - $dac->showPage(); - - } catch (Exception $e) { - echo _('An error occurred.'); } + if ($error instanceof DB_DataObject_Error + || $error instanceof DB_Error + ) { + $msg = sprintf( + _( + 'The database for %s isn\'t responding correctly, '. + 'so the site won\'t work properly. '. + 'The site admins probably know about the problem, '. + 'but you can contact them at %s to make sure. '. + 'Otherwise, wait a few minutes and try again.' + ), + common_config('site', 'name'), + common_config('site', 'email') + ); + } else { + $msg = _( + 'An important error occured, probably related to email setup. '. + 'Check logfiles for more info..' + ); + } + + $dac = new DBErrorAction($msg, 500); + $dac->showPage(); exit(-1); } -set_exception_handler('handleError'); - -require_once INSTALLDIR . '/lib/common.php'; - /** * Format a backtrace line for debug output roughly like debug_print_backtrace() does. * Exceptions already have this built in, but PEAR error objects just give us the array. @@ -200,7 +189,7 @@ function checkMirror($action_obj, $args) function isLoginAction($action) { - static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp'); + static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp', 'opensearch', 'rsd'); $login = null; @@ -221,12 +210,12 @@ function main() if ($_lighty_url['path'] != '/index.php' && $_lighty_url['path'] != '/') { $_lighty_path = preg_replace('/^'.preg_quote(common_config('site', 'path')).'\//', '', substr($_lighty_url['path'], 1)); $_SERVER['QUERY_STRING'] = 'p='.$_lighty_path; - if ($_lighty_url['query']) { + if (isset($_lighty_url['query']) && $_lighty_url['query'] != '') { $_SERVER['QUERY_STRING'] .= '&'.$_lighty_url['query']; - } - parse_str($_lighty_url['query'], $_lighty_query); - foreach ($_lighty_query as $key => $val) { - $_GET[$key] = $_REQUEST[$key] = $val; + parse_str($_lighty_url['query'], $_lighty_query); + foreach ($_lighty_query as $key => $val) { + $_GET[$key] = $_REQUEST[$key] = $val; + } } $_GET['p'] = $_REQUEST['p'] = $_lighty_path; } @@ -253,6 +242,10 @@ function main() return; } + // For database errors + + PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handleError'); + // Make sure RW database is setup setupRW(); @@ -335,10 +328,10 @@ function main() $cac = new ClientErrorAction($cex->getMessage(), $cex->getCode()); $cac->showPage(); } catch (ServerException $sex) { // snort snort guffaw - $sac = new ServerErrorAction($sex->getMessage(), $sex->getCode()); + $sac = new ServerErrorAction($sex->getMessage(), $sex->getCode(), $sex); $sac->showPage(); } catch (Exception $ex) { - $sac = new ServerErrorAction($ex->getMessage()); + $sac = new ServerErrorAction($ex->getMessage(), 500, $ex); $sac->showPage(); } }