rewrite modular logic :D

This commit is contained in:
2024-11-05 21:04:56 +05:00
parent db69904f38
commit eb43d4ad86
5 changed files with 230 additions and 90 deletions

View File

@@ -1,16 +1,14 @@
<?php
use App\Modules\BaseModule;
use App\Modules\EmptyModule;
use App\Modules\Module;
use App\Modules\ModuleContract;
use App\Modules\ModuleRepository;
use App\Modules\TurkmenNumberFormatter\Repositories\TurkmenNumberFormatter;
use Illuminate\Contracts\Cache\Repository as CacheRepository;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
/**
* Application locales
@@ -23,28 +21,11 @@ function appLocales(): array
}
/**
* Get module
* Return modular repo
*/
function module(string $moduleName): ModuleContract
function modular(): ModuleRepository
{
$moduleClass = 'App\\Modules\\'.$moduleName.'\\'.$moduleName.'Module';
if (class_exists($moduleClass)) {
/** @var ModuleContract $module */
$module = new $moduleClass;
return $module;
}
return emptyModule();
}
/**
* Empty module
*/
function emptyModule(): ModuleContract
{
return new EmptyModule;
return app(ModuleRepository::class);
}
/**
@@ -52,7 +33,15 @@ function emptyModule(): ModuleContract
*/
function modules_path(string $path = ''): string
{
return app_path('Modules/'.$path);
return modular()->path().'/'.$path;
}
/**
* Get module
*/
function module(string $moduleName): ModuleContract
{
return modular()->module($moduleName);
}
/**
@@ -62,41 +51,15 @@ function modules_path(string $path = ''): string
*/
function modules(bool $withDisabled = false): Collection
{
if (temp_cache()->has('modules')) {
/** @var Collection<array-key, BaseModule> $modules */
$modules = temp_cache('modules');
return $withDisabled ? modular()->allModules() : modular()->modules();
}
return $modules;
}
/** @var array<int, string> */
$modulesDir = File::directories(modules_path());
$modules = collect();
foreach ($modulesDir as $modulePath) {
$moduleName = Str::afterLast($modulePath, '/');
$module = new BaseModule(
path: $modulePath,
name: $moduleName,
enabled: module($moduleName)->isEnabled()
);
// Include all
if ($withDisabled) {
$modules->push($module);
continue;
}
if ($module->enabled) {
$modules->push($module);
}
}
temp_cache()->put('modules', $modules);
return $modules;
/**
* Empty module
*/
function emptyModule(): ModuleContract
{
return modular()->emptyModule();
}
/**