/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.3 |
+ | CiviCRM version 4.4 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2013 |
+--------------------------------------------------------------------+
$this->setDefaultCallback(array($this, 'handlePES'));
}
- function getMessages(&$error, $separator = '<br />') {
+ static public function getMessages(&$error, $separator = '<br />') {
if (is_a($error, 'CRM_Core_Error')) {
$errors = $error->getErrors();
$message = array();
echo "Sorry. A non-recoverable error has occurred. The error trace below might help to resolve the issue<p>";
CRM_Core_Error::debug(NULL, $error);
}
-
+ static $runOnce = FALSE;
+ if ($runOnce) {
+ exit;
+ }
+ $runOnce = TRUE;
self::abend(1);
}
$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);
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 {
* @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) {
}
$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;
}