Modernize: remove unused deps, replace qirolab/laravel-themer with custom ThemeService, drop doctrine/dbal

- Remove whichbrowser/parser, mockery/mockery, fruitcake/laravel-debugbar,
  itsgoingd/clockwork (all unused)
- Replace qirolab/laravel-themer (dev-master) with custom App\Services\ThemeService
  and App\Providers\ThemeServiceProvider
- Drop doctrine/dbal: rewrite all ->change() calls in 8 migrations to raw
  DB::statement('ALTER TABLE ... MODIFY ...') SQL
- RenameColumn() kept intact (works without dbal in Laravel 13)
- Fix 2026_04_04 migration: inverted column-exists logic corrected
- Clear bootstrap cache to remove stale references to removed packages
This commit is contained in:
root
2026-06-20 15:25:49 +02:00
parent 53f88b840a
commit 043854cf3d
14 changed files with 121 additions and 883 deletions
+69
View File
@@ -0,0 +1,69 @@
<?php
namespace App\Services;
use Illuminate\Support\Facades\View;
class ThemeService
{
private const string DEFAULT_THEME = 'atom';
private ?string $activeTheme = null;
private ?string $parentTheme = null;
public function set(string $theme, ?string $parentTheme = null): void
{
$this->clear();
$basePath = config('theme.base_path', base_path('resources/themes'));
if ($parentTheme) {
View::addLocation("{$basePath}/{$parentTheme}/views");
$this->parentTheme = $parentTheme;
}
View::addLocation("{$basePath}/{$theme}/views");
$this->activeTheme = $theme;
$this->registerVendorNamespaces($theme, $basePath);
}
public function active(): ?string
{
return $this->activeTheme;
}
public function parent(): ?string
{
return $this->parentTheme;
}
public function resolve(?string $theme = null): string
{
return $theme ?? $this->activeTheme ?? self::DEFAULT_THEME;
}
public function clear(): void
{
$this->activeTheme = null;
$this->parentTheme = null;
}
private function registerVendorNamespaces(string $theme, string $basePath): void
{
$vendorPath = "{$basePath}/{$theme}/views/vendor";
if (! is_dir($vendorPath)) {
return;
}
$directories = scandir($vendorPath);
foreach ($directories as $namespace) {
if ($namespace !== '.' && $namespace !== '..') {
View::prependNamespace($namespace, "{$vendorPath}/{$namespace}");
}
}
}
}