feat: improve module management
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -31,9 +31,9 @@ class ModuleManager
|
||||
*
|
||||
* @param bool $installedOnly If true, only return modules that are in the database
|
||||
* @param bool $enabledOnly If true, only return modules that are enabled (implies installedOnly)
|
||||
* @return Module[]
|
||||
* @return ModuleObject[]
|
||||
*/
|
||||
public function list(bool $installedOnly = true, $enabledOnly = true): ModuleCollection
|
||||
public function list(bool| null $installedOnly = null, bool| null $enabledOnly = null): ModuleCollection
|
||||
{
|
||||
$modules = New ModuleCollection();
|
||||
|
||||
@@ -44,12 +44,8 @@ class ModuleManager
|
||||
}
|
||||
|
||||
// load all modules from store
|
||||
$entries = $this->repository->list();
|
||||
$entries = $this->repository->list($installedOnly, $enabledOnly);
|
||||
foreach ($entries as $entry) {
|
||||
if ($enabledOnly && !$entry->getEnabled()) {
|
||||
continue; // Skip disabled modules if filtering for enabled only
|
||||
}
|
||||
// instance module
|
||||
$handle = $entry->getHandle();
|
||||
if (isset($this->moduleInstances[$entry->getHandle()])) {
|
||||
$modules[$handle] = new ModuleObject($this->moduleInstances[$handle], $entry);
|
||||
@@ -60,7 +56,7 @@ class ModuleManager
|
||||
}
|
||||
}
|
||||
// load all modules from filesystem
|
||||
if ($installedOnly === false) {
|
||||
if ($installedOnly !== true) {
|
||||
$discovered = $this->modulesDiscover();
|
||||
foreach ($discovered as $moduleInstance) {
|
||||
$handle = $moduleInstance->handle();
|
||||
@@ -72,6 +68,21 @@ class ModuleManager
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
public function fetch(string $handle): ?ModuleObject
|
||||
{
|
||||
$entry = $this->repository->fetch($handle);
|
||||
if (!$entry) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$moduleInstance = $this->moduleInstance($entry->getHandle(), $entry->getNamespace());
|
||||
if (!$moduleInstance) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new ModuleObject($moduleInstance, $entry);
|
||||
}
|
||||
|
||||
public function install(string $handle): void
|
||||
{
|
||||
@@ -258,7 +269,7 @@ class ModuleManager
|
||||
public function modulesBoot(): void
|
||||
{
|
||||
// Only load modules that are enabled in the database
|
||||
$modules = $this->list();
|
||||
$modules = $this->list(true, true);
|
||||
$this->logger->debug('Booting enabled modules', ['count' => count($modules)]);
|
||||
foreach ($modules as $module) {
|
||||
$handle = $module->handle();
|
||||
|
||||
Reference in New Issue
Block a user