X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FError.php;h=864996b057e667031036f87912afcbfcf45f2f1d;hb=a5949c8f3d98f16d8739e82a7aaa1742b724dba9;hp=a36bb5ce7dad41a6e8139c2144d19df55ece5b4c;hpb=f9a004f39214024279a03032092aef661620a7e0;p=civicrm-core.git diff --git a/CRM/Core/Error.php b/CRM/Core/Error.php index a36bb5ce7d..864996b057 100644 --- a/CRM/Core/Error.php +++ b/CRM/Core/Error.php @@ -184,6 +184,19 @@ class CRM_Core_Error extends PEAR_ErrorStack { } } + // Use the custom fatalErrorHandler if defined + if ($config->fatalErrorHandler && function_exists($config->fatalErrorHandler)) { + $name = $config->fatalErrorHandler; + $vars = [ + 'pearError' => $pearError, + ]; + $ret = $name($vars); + if ($ret) { + // the call has been successfully handled so we just exit + self::abend(CRM_Core_Error::FATAL_ERROR); + } + } + $template->assign_by_ref('error', $error); $errorDetails = CRM_Core_Error::debug('', $error, FALSE); $template->assign_by_ref('errorDetails', $errorDetails); @@ -204,7 +217,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { exit; } $runOnce = TRUE; - self::abend(1); + self::abend(CRM_Core_Error::FATAL_ERROR); } /** @@ -559,6 +572,18 @@ class CRM_Core_Error extends PEAR_ErrorStack { } $file_log->close(); + // Use the custom fatalErrorHandler if defined + if (in_array($priority, [PEAR_LOG_EMERG, PEAR_LOG_ALERT, PEAR_LOG_CRIT, PEAR_LOG_ERR])) { + if ($config->fatalErrorHandler && function_exists($config->fatalErrorHandler)) { + $name = $config->fatalErrorHandler; + $vars = [ + 'debugLogMessage' => $message, + 'priority' => $priority, + ]; + $name($vars); + } + } + if (!isset(\Civi::$statics[__CLASS__]['userFrameworkLogging'])) { // Set it to FALSE first & then try to set it. This is to prevent a loop as calling // $config->userFrameworkLogging can trigger DB queries & under log mode this @@ -608,7 +633,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { * * @param string $prefix * - * @return Log + * @return Log_file */ public static function createDebugLogger($prefix = '') { self::generateLogFileName($prefix);