diff --git a/wire/core/Modules.php b/wire/core/Modules.php index 6e373142..4b96d6c7 100644 --- a/wire/core/Modules.php +++ b/wire/core/Modules.php @@ -236,6 +236,9 @@ class Modules extends WireArray { */ public function __construct($path) { parent::__construct(); + $this->nameProperty = 'className'; + $this->usesNumericKeys = false; + $this->indexedByName = true; $this->addPath($path); // paths[0] is always core modules path } @@ -978,7 +981,7 @@ class Modules extends WireArray { $currentVersion = $class === 'PHP' ? PHP_VERSION : $this->wire()->config->version; } } else { - $installed = parent::get($class) !== null; + $installed = isset($this->data[$class]); if($installed && $requiredVersion !== null) { $info = $this->info->getModuleInfo($class); $currentVersion = $info['version']; @@ -1366,26 +1369,26 @@ class Modules extends WireArray { if(strpos($module, '.') !== false) { $module = basename(basename($module, '.php'), '.module'); } - - if(array_key_exists($module, $this->moduleIDs)) { + + if(isset($this->data[$module])) { + $className = $module; + } else if(array_key_exists($module, $this->moduleIDs)) { $className = $module; } else if(array_key_exists($module, $this->installableFiles)) { $className = $module; } } - if($className) { - if($withNamespace) { - if($namespace) { - $className = "$namespace\\$className"; - } else { - $className = $this->info->getModuleNamespace($className) . $className; - } + if(!$className) return false; + + if($withNamespace) { + if($namespace) { + $className = "$namespace\\$className"; + } else { + $className = $this->info->getModuleNamespace($className) . $className; } - return $className; - } - - return false; + } + return $className; } /** diff --git a/wire/core/ModulesLoader.php b/wire/core/ModulesLoader.php index f0a3ba6b..58a983fe 100644 --- a/wire/core/ModulesLoader.php +++ b/wire/core/ModulesLoader.php @@ -412,7 +412,7 @@ class ModulesLoader extends ModulesClass { $requires = array(); $name = $moduleName; $moduleName = $this->loadModule($path, $pathname, $requires, $installed); - if(!$config->paths->get($name)) $modulesFiles->setConfigPaths($name, dirname($basePath . $pathname)); + if(!$config->paths->__isset($name)) $modulesFiles->setConfigPaths($name, dirname($basePath . $pathname)); if(!$moduleName) continue; if(count($requires)) {