Files
ABSDEV/Modules/Sites/Services/SiteManager.php
T
2026-07-24 11:47:08 +01:00

21 lines
1.0 KiB
PHP

<?php
namespace Modules\Sites\Services;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Modules\Sites\Models\Site;
final class SiteManager
{
private ?Site $current = null;
public function current(): ?Site { return $this->current; }
public function setCurrent(?Site $site): void { $this->current = $site; if ($site) { app()->instance(Site::class, $site); } }
public function all(): Collection { return Site::query()->active()->orderByDesc('is_default')->orderBy('name')->get(); }
public function resolve(Request $request): ?Site
{
$host = strtolower(preg_replace('/:\d+$/', '', $request->getHost()));
$site = Site::query()->with(['domains','settings'])->whereHas('domains', fn ($q) => $q->where('domain', $host)->where('is_active', true))->first();
if (! $site && config('sites.fallback_to_default')) { $site = Site::query()->with(['domains','settings'])->active()->where('is_default', true)->first(); }
$this->setCurrent($site);
return $site;
}
}