41 lines
867 B
PHP
41 lines
867 B
PHP
<?php
|
|
|
|
namespace App\Services\Documents;
|
|
|
|
use App\Models\DocumentSetting;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
class DocumentSettings
|
|
{
|
|
private const CACHE_KEY = 'document_settings_singleton_v1';
|
|
|
|
public function get(): DocumentSetting
|
|
{
|
|
return Cache::remember(self::CACHE_KEY, 300, fn () => DocumentSetting::instance());
|
|
}
|
|
|
|
public function refresh(): DocumentSetting
|
|
{
|
|
Cache::forget(self::CACHE_KEY);
|
|
|
|
return $this->get();
|
|
}
|
|
|
|
public function fresh(): DocumentSetting
|
|
{
|
|
return $this->refresh();
|
|
}
|
|
|
|
/**
|
|
* Convenience accessor for custom defaults.
|
|
*
|
|
* @return array<string,mixed>
|
|
*/
|
|
public function customDefaults(): array
|
|
{
|
|
$settings = $this->get();
|
|
|
|
return is_array($settings->custom_defaults ?? null) ? $settings->custom_defaults : [];
|
|
}
|
|
}
|