battle with structure
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
<?php
|
||||
|
||||
use App\Modules\EmptyModule;
|
||||
use App\Modules\ModuleContract;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* Application locales
|
||||
*
|
||||
@@ -9,3 +15,64 @@ function appLocales(): array
|
||||
{
|
||||
return config()->array('app.locales');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get module
|
||||
*/
|
||||
function module(string $moduleName): ModuleContract
|
||||
{
|
||||
$moduleClass = 'App\\Modules\\'.$moduleName.'\\'.$moduleName.'Module';
|
||||
|
||||
return class_exists($moduleClass) ? (new $moduleClass) : emptyModule();
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty module
|
||||
*/
|
||||
function emptyModule(): ModuleContract
|
||||
{
|
||||
return new EmptyModule;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modules directory path
|
||||
*/
|
||||
function modules_path(string $path = ''): string
|
||||
{
|
||||
return app_path('Modules/'.$path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Modules
|
||||
*
|
||||
* @return Collection<array-key, string>
|
||||
*/
|
||||
function modules(bool $withDisabled = false): Collection
|
||||
{
|
||||
/** @var array<int, string> */
|
||||
$modulesDir = File::directories(modules_path());
|
||||
$modules = collect();
|
||||
|
||||
foreach ($modulesDir as $modulePath) {
|
||||
$moduleName = Str::afterLast($modulePath, '/');
|
||||
|
||||
$moduleOptions = [
|
||||
'path' => $modulePath,
|
||||
'name' => $moduleName.'Module',
|
||||
'enabled' => module($moduleName)->isEnabled(),
|
||||
];
|
||||
|
||||
$modules->push($moduleOptions);
|
||||
|
||||
// Include all
|
||||
if ($withDisabled) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($moduleOptions['enabled']) {
|
||||
$modules->push($moduleOptions);
|
||||
}
|
||||
}
|
||||
|
||||
return $modules;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user