X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FError.php;h=251633afd02e6a81897ec0f5865014a72efb8c1b;hb=2c85a284a6b071b3d6b118d62f604e5cae917e94;hp=d7734e0abcc85c268b5547a10c491767d11f1da2;hpb=d93fd090608138bb49962eb6442b89ac7096f7a9;p=civicrm-core.git diff --git a/CRM/Core/Error.php b/CRM/Core/Error.php index d7734e0abc..251633afd0 100644 --- a/CRM/Core/Error.php +++ b/CRM/Core/Error.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 4.3 | + | CiviCRM version 4.4 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2013 | +--------------------------------------------------------------------+ @@ -106,7 +106,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { $this->setDefaultCallback(array($this, 'handlePES')); } - function getMessages(&$error, $separator = '
') { + static public function getMessages(&$error, $separator = '
') { if (is_a($error, 'CRM_Core_Error')) { $errors = $error->getErrors(); $message = array(); @@ -204,7 +204,11 @@ class CRM_Core_Error extends PEAR_ErrorStack { echo "Sorry. A non-recoverable error has occurred. The error trace below might help to resolve the issue

"; CRM_Core_Error::debug(NULL, $error); } - + static $runOnce = FALSE; + if ($runOnce) { + exit; + } + $runOnce = TRUE; self::abend(1); } @@ -224,7 +228,9 @@ class CRM_Core_Error extends PEAR_ErrorStack { $error['user_info'] = $pearError->getUserInfo(); $error['to_string'] = $pearError->toString(); - CRM_Core_Error::debug('Initialization Error', $error); + // ensure that debug does not check permissions since we are in bootstrap + // mode and need to print a decent message to help the user + CRM_Core_Error::debug('Initialization Error', $error, TRUE, TRUE, FALSE); // always log the backtrace to a file self::backtrace('backTrace', TRUE); @@ -315,7 +321,13 @@ class CRM_Core_Error extends PEAR_ErrorStack { CRM_Core_Error::debug_var('Fatal Error Details', $vars); CRM_Core_Error::backtrace('backTrace', TRUE); $content = $template->fetch($config->fatalErrorTemplate); - if ($config->userFramework == 'Joomla' && class_exists('JError')) { + // JErrorPage exists only in 3.x and not 2.x + // CRM-13714 + if ($config->userFramework == 'Joomla' && class_exists('JErrorPage')) { + $error = new Exception($content); + JErrorPage::render($error); + } + else if ($config->userFramework == 'Joomla' && class_exists('JError')) { JError::raiseError('CiviCRM-001', $content); } else { @@ -406,12 +418,15 @@ class CRM_Core_Error extends PEAR_ErrorStack { * @param mixed reference to variables that we need a trace of * @param bool should we log or return the output * @param bool whether to generate a HTML-escaped output + * @param bool should we check permissions before displaying output + * useful when we die during initialization and permissioning + * subsystem is not initialized - CRM-13765 * * @return string the generated output * @access public * @static */ - static function debug($name, $variable = NULL, $log = TRUE, $html = TRUE) { + static function debug($name, $variable = NULL, $log = TRUE, $html = TRUE, $checkPermission = TRUE) { $error = self::singleton(); if ($variable === NULL) { @@ -434,7 +449,10 @@ class CRM_Core_Error extends PEAR_ErrorStack { } $out = "{$prefix}$out\n"; } - if ($log && CRM_Core_Permission::check('view debug output')) { + if ( + $log && + (!$checkPermission || CRM_Core_Permission::check('view debug output')) + ) { echo $out; }