dev/core#3502 - CiviEventDispatcher - Tune down the warning
authorTim Otten <totten@civicrm.org>
Thu, 9 Jun 2022 04:17:51 +0000 (21:17 -0700)
committerTim Otten <totten@civicrm.org>
Tue, 14 Jun 2022 06:14:34 +0000 (23:14 -0700)
Civi/Core/CiviEventDispatcher.php

index 14f944df2f4ecea4e5a0a4588e43435a11c04035..d4564e5b4c2504cdc7cd46be0e2188af3e5af0f0 100644 (file)
@@ -193,7 +193,12 @@ class CiviEventDispatcher extends EventDispatcher {
           // This condition indicates a structural problem and merits a consistent failure-mode.
           // If you believe some special case merits an exemption, then you could add it to `$bootDispatchPolicy`.
 
-          throw new \RuntimeException("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.");
+          // An `Exception` would be ideal for preventing new bugs, but it can be too noisy for systems with pre-existing bugs.
+          // throw new \RuntimeException("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.");
+          // Complain to web-user and sysadmin. Log a backtrace. We're pre-boot, so don't use high-level services.
+          error_log("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.\n" . \CRM_Core_Error::formatBacktrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), FALSE));
+          trigger_error("The event \"$eventName\" attempted to fire before CiviCRM was fully loaded. Skipping.", E_USER_WARNING);
+          return $event;
 
         default:
           throw new \RuntimeException("The dispatch policy for \"$eventName\" is unrecognized ($mode).");