From f3ec3f9e77da68f1fbb8bc88ff6a5c172b3dc0ba Mon Sep 17 00:00:00 2001
From: Tim Otten <totten@civicrm.org>
Date: Wed, 8 Jun 2022 21:17:51 -0700
Subject: [PATCH] dev/core#3502 - CiviEventDispatcher - Tune down the warning

---
 Civi/Core/CiviEventDispatcher.php | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/Civi/Core/CiviEventDispatcher.php b/Civi/Core/CiviEventDispatcher.php
index 14f944df2f4e..d4564e5b4c25 100644
--- a/Civi/Core/CiviEventDispatcher.php
+++ b/Civi/Core/CiviEventDispatcher.php
@@ -193,7 +193,12 @@ public function dispatch($eventName, Event $event = NULL) {
           // 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).");