diff --git a/common/autoload.php b/common/autoload.php index 86f878710..7a68e9e64 100644 --- a/common/autoload.php +++ b/common/autoload.php @@ -138,14 +138,17 @@ spl_autoload_register(function($class_name) } elseif (isset($GLOBALS['RX_NAMESPACES']) && preg_match($GLOBALS['RX_NAMESPACES']['regexp'], $class_name, $matches)) { - $plugin_path = $GLOBALS['RX_NAMESPACES'][strtr($matches[1], '/', '\\')] ?? ''; - $dir = RX_BASEDIR . $plugin_path . '/' . strtolower($matches[2]); - $filename1 = $dir . $matches[3] . '.php'; - $filename2 = $dir . strtolower($matches[3]) . '.php'; - if ($matches[1] !== 'Framework' && !empty($matches[3])) + $plugin_path = $GLOBALS['RX_NAMESPACES']['mapping'][strtr($matches[1], '/', '\\')] ?? ''; + if ($plugin_path) { - $lang_plugin = array_last(explode('/', $plugin_path)); - $lang_path = RX_BASEDIR . $plugin_path . '/lang'; + $dir = RX_BASEDIR . $plugin_path . '/' . strtolower($matches[2]); + $filename1 = $dir . $matches[3] . '.php'; + $filename2 = $dir . strtolower($matches[3]) . '.php'; + if ($matches[1] !== 'Framework' && !empty($matches[3])) + { + $lang_plugin = array_last(explode('/', $plugin_path)); + $lang_path = RX_BASEDIR . $plugin_path . '/lang'; + } } } diff --git a/common/defaults/config.php b/common/defaults/config.php index b3803dfbb..0ad0b0b7b 100644 --- a/common/defaults/config.php +++ b/common/defaults/config.php @@ -135,8 +135,10 @@ return array( 'tablets' => false, 'viewport' => 'width=device-width, initial-scale=1.0, user-scalable=yes', ), - 'namespaces' => [], - 'prefixes' => [], + 'namespaces' => [ + 'mapping' => [], + 'regexp' => '', + ], 'use_rewrite' => true, 'use_sso' => false, 'other' => array(), diff --git a/common/framework/Config.php b/common/framework/Config.php index 68ee36920..03c1e7be2 100644 --- a/common/framework/Config.php +++ b/common/framework/Config.php @@ -42,16 +42,11 @@ class Config } } - if (!empty(self::$_config['namespaces'])) + if (isset(self::$_config['namespaces']) && !empty(self::$_config['namespaces']['regexp'])) { $GLOBALS['RX_NAMESPACES'] = self::$_config['namespaces']; } - if (!empty(self::$_config['prefixes'])) - { - $GLOBALS['RX_PREFIXES'] = self::$_config['prefixes']; - } - return self::$_config; } diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index ea5c4b502..8280ec6eb 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -1463,20 +1463,20 @@ class ModuleController extends Module continue; } - if (!isset($namespaces[$name])) + if (!isset($namespaces['mapping'][$name])) { - $namespaces[$name] = 'modules/' . $module_name; + $namespaces['mapping'][$name] = 'modules/' . $module_name; $changed = true; } } // Remove namespaces that are no longer defined by this module. - foreach ($namespaces as $name => $path) + foreach ($namespaces['mapping'] ?? [] as $name => $path) { $attached_module = preg_replace('!^modules/!', '', $path); if ($attached_module === $module_name && !in_array($name, $module_action_info->namespaces ?? [])) { - unset($namespaces[$name]); + unset($namespaces['mapping'][$name]); $changed = true; } } @@ -1484,7 +1484,7 @@ class ModuleController extends Module // Generate a regular expression for routing. $regexp = []; unset($namespaces['regexp']); - foreach ($namespaces as $name => $path) + foreach ($namespaces['mapping'] ?? [] as $name => $path) { $regexp[] = preg_quote(strtr($name, '\\', '/'), '!'); } diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 0211c0141..f3e207783 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -1738,12 +1738,12 @@ class ModuleModel extends Module $namespaces = config('namespaces') ?? []; foreach ($module_action_info->namespaces ?? [] as $name) { - if(!isset($namespaces[$name])) + if(!isset($namespaces['mapping'][$name])) { $info->need_update = true; } } - foreach ($namespaces as $name => $path) + foreach ($namespaces['mapping'] ?? [] as $name => $path) { $attached_module = preg_replace('!^modules/!', '', $path); if ($attached_module === $module_name && !in_array($name, $module_action_info->namespaces ?? []))