From d00986b439ddf444bbb4c950fceaa374d5774063 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 21 Jun 2022 02:12:23 -0700 Subject: [PATCH] WorkflowMessage - Switch to `ClassScanner` (was: bespoke `include_path` search) --- Civi/WorkflowMessage/WorkflowMessage.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Civi/WorkflowMessage/WorkflowMessage.php b/Civi/WorkflowMessage/WorkflowMessage.php index 7ecf283bdb..8d9296b67e 100644 --- a/Civi/WorkflowMessage/WorkflowMessage.php +++ b/Civi/WorkflowMessage/WorkflowMessage.php @@ -13,6 +13,7 @@ namespace Civi\WorkflowMessage; use Civi\Api4\Utils\ReflectionUtils; +use Civi\Core\ClassScanner; use Civi\WorkflowMessage\Exception\WorkflowMessageException; /** @@ -146,18 +147,9 @@ class WorkflowMessage { $map = $cache->get($cacheKey); if ($map === NULL) { $map = []; - $map['generic'] = GenericWorkflowMessage::class; - $baseDirs = explode(PATH_SEPARATOR, get_include_path()); - foreach ($baseDirs as $baseDir) { - $baseDir = \CRM_Utils_File::addTrailingSlash($baseDir); - $glob = (array) glob($baseDir . 'CRM/*/WorkflowMessage/*.php'); - $glob = preg_grep('/\.ex\.php$/', $glob, PREG_GREP_INVERT); - foreach ($glob as $file) { - $class = strtr(preg_replace('/\.php$/', '', \CRM_Utils_File::relativize($file, $baseDir)), ['/' => '_', '\\' => '_']); - if (class_exists($class) && (new \ReflectionClass($class))->implementsInterface(WorkflowMessageInterface::class)) { - $map[$class::WORKFLOW] = $class; - } - } + foreach (ClassScanner::get(['interface' => WorkflowMessageInterface::class]) as $wfClass) { + $wfName = ($wfClass === GenericWorkflowMessage::class) ? 'generic' : $wfClass::WORKFLOW; + $map[$wfName] = $wfClass; } $cache->set($cacheKey, $map); } -- 2.25.1