X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FError.php;h=251633afd02e6a81897ec0f5865014a72efb8c1b;hb=2c85a284a6b071b3d6b118d62f604e5cae917e94;hp=b32da1445f42aae4912377af7ab1145b07ba6e23;hpb=28c8781b81cf9ae0c37a67b9fb4b4986fa733c24;p=civicrm-core.git diff --git a/CRM/Core/Error.php b/CRM/Core/Error.php index b32da1445f..251633afd0 100644 --- a/CRM/Core/Error.php +++ b/CRM/Core/Error.php @@ -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(); @@ -228,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); @@ -319,16 +321,14 @@ 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') { - // JErrorPage exists only in 3.1.x - // a bit ugly hack, but want this in for 4.4.1 - // CRM-13714 - if (class_exists('JError') && !class_exists('JErrorPage')) { - JError::raiseError('CiviCRM-001', $content); - } - else { - echo CRM_Utils_System::theme($content); - } + // 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 { echo CRM_Utils_System::theme($content); @@ -418,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) { @@ -446,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; }