diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index 46cc67ef0..daaa7b05b 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -253,7 +253,7 @@ class e107 'language' => '{e_HANDLER}language_class.php', 'news' => '{e_HANDLER}news_class.php', 'notify' => '{e_HANDLER}notify_class.php', - 'e107\override' => '{e_HANDLER}override_class.php', + 'override' => '{e_HANDLER}override_class.php', 'rater' => '{e_HANDLER}rate_class.php', 'redirection' => '{e_HANDLER}redirection_class.php', 'secure_image' => '{e_HANDLER}secure_img_handler.php', @@ -272,6 +272,15 @@ class e107 'pageHelper' => '{e_PLUGIN}page/includes/pageHelper.php' ); + /** + * List of core classes using the 'e107' namespace. + */ + protected static $_named_handlers = [ + 'override' => true, + + ]; + + /** * Overload core handlers array @@ -994,7 +1003,9 @@ class e107 */ public static function getHandlerPath($class_name, $parse_path = true) { + $ret = isset(self::$_known_handlers[$class_name]) ? self::$_known_handlers[$class_name] : null; + if($parse_path && $ret) { $ret = self::getParser()->replaceConstants($ret); @@ -1040,7 +1051,7 @@ class e107 public static function isHandlerNamespaced($className) { - return isset(self::$_known_handlers['e107\\'.$className]) ? '\\e107\\'.$className : false; + return isset(self::$_named_handlers[$className]) ? '\\e107\\'.$className : false; } /** @@ -1141,6 +1152,11 @@ class e107 } } + if($named = self::isHandlerNamespaced($class_name)) + { + $class_name = $named; + } + if($path && is_string($path) && !class_exists($class_name, false)) { global $_E107; @@ -1158,13 +1174,8 @@ class e107 //e107_require_once() is available without class2.php. - see core_functions.php } - if(class_exists($class_name, false)) { - if($named = self::isHandlerNamespaced($class_name)) - { - $class_name = $named; - } try { @@ -1965,7 +1976,7 @@ class e107 /** * Retrieve override handler singleton object * - * @return override + * @return e107\override */ public static function getOverride() { diff --git a/e107_tests/tests/unit/e107Test.php b/e107_tests/tests/unit/e107Test.php index 973a31b0b..d96d35da9 100644 --- a/e107_tests/tests/unit/e107Test.php +++ b/e107_tests/tests/unit/e107Test.php @@ -294,11 +294,20 @@ class e107Test extends \Codeception\Test\Unit { $e107 = $this->e107; + // test with path. $result = $e107::getSingleton('override', e_HANDLER . 'override_class.php'); + $this->assertNotEmpty($result, 'Override class not loaded'); + $exists = method_exists($result, 'override_check'); $this->assertTrue($exists, 'Failed to load override class singleton'); + + // Test without path. + $result2 = $e107::getOverride(); + $exists2 = method_exists($result2, 'override_check'); + $this->assertTrue($exists2, 'Failed to load override class singleton'); + } /*