<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.6 |
+ | CiviCRM version 4.7 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
*
* @package CRM
* @copyright CiviCRM LLC (c) 2004-2015
- * $Id$
- *
*/
require_once 'PEAR/ErrorStack.php';
*/
class CRM_Exception extends PEAR_Exception {
/**
- * Redefine the exception so message isn't optional
+ * Redefine the exception so message isn't optional.
+ *
* Supported signatures:
* - PEAR_Exception(string $message);
* - PEAR_Exception(string $message, int $code);
* which currently use PEAR::raiseError to notify of error messages.
*
* @param object $pearError PEAR_Error
- *
- * @return void
*/
public static function handle($pearError) {
* The email address to notify of this situation.
*
* @throws Exception
- *
- * @return void
*/
public static function fatal($message = NULL, $code = NULL, $email = NULL) {
$vars = array(
- 'message' => $message,
+ 'message' => htmlspecialchars($message),
'code' => $code,
);
if (php_sapi_name() == "cli") {
print ("Sorry. A non-recoverable error has occurred.\n$message \n$code\n$email\n\n");
- debug_print_backtrace();
+ // Fix for CRM-16899
+ echo static::formatBacktrace(debug_backtrace());
die("\n");
// FIXME: Why doesn't this call abend()?
// Difference: abend() will cleanup transaction and (via civiExit) store session state
$out['backtrace'] = self::parseBacktrace(debug_backtrace());
$message .= '<p><em>See console for backtrace</em></p>';
}
- CRM_Core_Session::setStatus($message, ts('Sorry an Error Occured'), 'error');
+ CRM_Core_Session::setStatus($message, ts('Sorry an error occurred'), 'error');
CRM_Core_Transaction::forceRollbackIfEnabled();
CRM_Core_Page_AJAX::returnJsonResponse($out);
}
$template = CRM_Core_Smarty::singleton();
$template->assign($vars);
-
- $config->userSystem->outputError($template->fetch($config->fatalErrorTemplate));
+ $config->userSystem->outputError($template->fetch('CRM/common/fatal.tpl'));
self::abend(CRM_Core_Error::FATAL_ERROR);
}
* something that follows a cleaner separation of concerns.
*
* @param Exception $exception
- *
- * @return void
*/
public static function handleUnhandledException($exception) {
try {
// print to screen
$template = CRM_Core_Smarty::singleton();
$template->assign($vars);
- $content = $template->fetch($config->fatalErrorTemplate);
+ $content = $template->fetch('CRM/common/fatal.tpl');
if ($config->backtrace) {
$content = self::formatHtmlException($exception) . $content;
}
$file_log = self::createDebugLogger($comp);
$file_log->log("$message\n");
- $str = "<p/><code>$message</code>";
+
+ $str = '<p/><code>' . htmlspecialchars($message) . '</code>';
if ($out && CRM_Core_Permission::check('view debug output')) {
echo $str;
}
*
* @param null $redirect
* @param string $title
- * @return void
*/
public static function statusBounce($status, $redirect = NULL, $title = NULL) {
$session = CRM_Core_Session::singleton();