--- /dev/null
+<?php
+
+class CRM_Core_LegacyErrorHandler {
+ static function handledException($e) {
+ if ($e instanceof CRM_Core_Exception) {
+ $params = $e->getErrorData();
+ $message = $e->getMessage();
+ $session = CRM_Core_Session::singleton();
+ $session->setStatus(
+ $message,
+ CRM_Utils_Array::value('message_title', $params),
+ CRM_Utils_Array::value('message_type', $params, 'error')
+ );
+
+ // @todo remove this code - legacy redirect path is an interim measure for moving redirects out of BAO
+ // to somewhere slightly more acceptable. they should not be part of the exception class & should
+ // be managed @ the form level - if you find a form that is triggering this piece of code
+ // you should log a ticket for it to be removed with details about the form you were on.
+ if (!empty($params['legacy_redirect_path'])) {
+ if (CRM_Utils_System::isDevelopment()) {
+ // here we could set a message telling devs to log it per above
+ }
+ CRM_Utils_System::redirect($params['legacy_redirect_path'], $params['legacy_redirect_query']);
+ }
+ }
+ }
+}
* @param CRM_Core_Exception Exception $exception
*/
static function unhandledException($exception) {
- self::singleton()->invoke(1, $exception, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_unhandled_exception');
+ self::singleton()->invoke(1, $exception, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject,'civicrm_unhandled_exception');
+ // == 4.5+ ==
+ $event = new \Civi\Core\Event\UnhandledExceptionEvent(self::$_nullObject, $exception);
+ \Civi\Core\Container::singleton()->get('dispatcher')->dispatch("unhandled_exception", $event);
}
/**
$dispatcher->addListener('DAO::post-insert', array('\CRM_Core_BAO_RecurringEntity', 'triggerInsert'));
$dispatcher->addListener('DAO::post-update', array('\CRM_Core_BAO_RecurringEntity', 'triggerUpdate'));
$dispatcher->addListener('DAO::post-delete', array('\CRM_Core_BAO_RecurringEntity', 'triggerDelete'));
+ $dispatcher->addListener('hook_civicrm_unhandled_exception', array('CRM_Core_LegacyErrorHandler', 'handleException');
return $dispatcher;
}