Files
ABSDEV/Modules/Core/Services/LaravelModuleRegistry.php
T
2026-07-24 14:59:44 +01:00

39 lines
1.2 KiB
PHP

<?php
namespace Modules\Core\Services;
use Modules\Core\Contracts\ModuleRegistry;
final class LaravelModuleRegistry implements ModuleRegistry
{
public function all(): array
{
$statuses = json_decode((string) @file_get_contents(base_path('modules_statuses.json')), true) ?: [];
$modules = [];
foreach (glob(base_path('Modules/*/module.json')) ?: [] as $manifest) {
$data = json_decode((string) file_get_contents($manifest), true) ?: [];
$name = (string) ($data['name'] ?? basename(dirname($manifest)));
$modules[] = [
'name' => $name,
'alias' => (string) ($data['alias'] ?? strtolower($name)),
'version' => (string) ($data['version'] ?? '0.0.0'),
'enabled' => (bool) ($statuses[$name] ?? false),
];
}
usort($modules, fn (array $a, array $b): int => $a['name'] <=> $b['name']);
return $modules;
}
public function enabled(string $name): bool
{
foreach ($this->all() as $module) {
if (strcasecmp($module['name'], $name) === 0) {
return $module['enabled'];
}
}
return false;
}
}