From 3b8898e8426ccc4ec68a8f32eb5a78fd513272f8 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Wed, 15 Jan 2020 13:40:32 -0800 Subject: [PATCH] CRM_Core_ClassLoader - Fix loading with alternate packages path --- CRM/Core/ClassLoader.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/CRM/Core/ClassLoader.php b/CRM/Core/ClassLoader.php index 9af4ce3238..34b770fd7e 100644 --- a/CRM/Core/ClassLoader.php +++ b/CRM/Core/ClassLoader.php @@ -124,7 +124,13 @@ class CRM_Core_ClassLoader { $this->initHtmlPurifier($prepend); $this->_registered = TRUE; - $packages_path = implode(DIRECTORY_SEPARATOR, [$civicrm_base_path, 'packages']); + // The ClassLoader runs before the classes are available. Approximate Civi::paths()->get('[civicrm.packages]'). + if (isset($GLOBALS['civicrm_paths']['civicrm.packages']['path'])) { + $packages_path = rtrim($GLOBALS['civicrm_paths']['civicrm.packages']['path'], DIRECTORY_SEPARATOR); + } + else { + $packages_path = implode(DIRECTORY_SEPARATOR, [$civicrm_base_path, 'packages']); + } $include_paths = [ '.', $civicrm_base_path, @@ -177,7 +183,12 @@ class CRM_Core_ClassLoader { // we do this to prevent a autoloader errors with joomla / 3rd party packages // Use absolute path, since we don't know the content of include_path yet. // CRM-11304 - $file = dirname(__FILE__) . '/../../packages/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php'; + if (isset($GLOBALS['civicrm_paths']['civicrm.packages']['path'])) { + $file = rtrim($GLOBALS['civicrm_paths']['civicrm.packages']['path'], DIRECTORY_SEPARATOR) . '/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php'; + } + else { + $file = dirname(__FILE__) . '/../../packages/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php'; + } if (file_exists($file)) { return $file; } -- 2.25.1