1
0
Files
breadcrumb-the-shire/core/Service/Settings/ThemeConfigGateway.php
fs 0e86925464 refactor: rename lib/ to core/ for clearer core-module separation
Rename the top-level lib/ directory to core/ so the project root
immediately communicates which code is core platform and which lives
in modules/. PHP namespaces (MintyPHP\*) are unchanged — only the
Composer PSR-4 path mapping moves from lib/ to core/.

Module-internal lib/ directories (modules/*/lib/) are untouched.

Updated across the full stack:
- composer.json PSR-4 mapping
- bootstrap entry points (web/index.php, bin/*, tests/bootstrap.php)
- tooling configs (phpstan.neon, phpunit.xml, php-cs-fixer)
- 26 architecture contract tests
- enforcement-policy, guard-catalog, quality-gates
- all documentation (CLAUDE.md, README, 25 docs/, .agents/skills/)
- bin/qa-extended.sh search paths
- .claude/settings.local.json permission paths

Workflow: .agents/runs/CORE-LIB-RENAME-001/ (Analyst → Planner →
Executor → Code Review (4 findings fixed) → Security Review →
Acceptance Test → Finalizer)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 23:20:42 +02:00

47 lines
1.2 KiB
PHP

<?php
namespace MintyPHP\Service\Settings;
class ThemeConfigGateway
{
private const DEFAULT_THEMES = [
'light' => 'Light',
'dark' => 'Dark',
];
private ?array $themes = null;
public function all(): array
{
if ($this->themes !== null) {
return $this->themes;
}
$file = dirname(__DIR__, 3) . '/config/themes.php';
if (!is_file($file)) {
$this->themes = self::DEFAULT_THEMES;
return $this->themes;
}
$loaded = include $file;
if (!is_array($loaded)) {
$this->themes = self::DEFAULT_THEMES;
return $this->themes;
}
$clean = [];
foreach ($loaded as $key => $label) {
$themeKey = strtolower(trim((string) $key));
$themeLabel = trim((string) $label);
if ($themeKey === '' || $themeLabel === '') {
continue;
}
$clean[$themeKey] = $themeLabel;
}
// Fall back to defaults if the file returns an empty or invalid list — system must always have themes.
$this->themes = $clean ?: self::DEFAULT_THEMES;
return $this->themes;
}
}