coolify/app/Models/InstanceSettings.php

65 lines
1.5 KiB
PHP
Raw Normal View History

2023-03-28 15:47:37 +02:00
<?php
namespace App\Models;
2023-06-06 17:50:13 +02:00
use App\Notifications\Channels\SendsEmail;
use Illuminate\Database\Eloquent\Casts\Attribute;
2023-03-28 15:47:37 +02:00
use Illuminate\Database\Eloquent\Model;
2023-06-06 17:50:13 +02:00
use Illuminate\Notifications\Notifiable;
use Spatie\Url\Url;
2023-03-28 15:47:37 +02:00
2023-06-06 17:50:13 +02:00
class InstanceSettings extends Model implements SendsEmail
2023-03-28 15:47:37 +02:00
{
use Notifiable;
2023-07-14 11:27:08 +02:00
protected $guarded = [];
2024-06-10 22:43:34 +02:00
2023-06-06 17:50:13 +02:00
protected $casts = [
2023-07-14 12:09:56 +02:00
'resale_license' => 'encrypted',
'smtp_password' => 'encrypted',
2024-07-01 16:26:50 +02:00
'allowed_ip_ranges' => 'array',
'is_auto_update_enabled' => 'boolean',
'auto_update_frequency' => 'string',
'update_check_frequency' => 'string',
2023-06-06 17:50:13 +02:00
];
public function fqdn(): Attribute
{
return Attribute::make(
set: function ($value) {
if ($value) {
$url = Url::fromString($value);
$host = $url->getHost();
2024-06-10 22:43:34 +02:00
return $url->getScheme().'://'.$host;
}
}
);
}
2024-06-10 22:43:34 +02:00
public static function get()
{
return InstanceSettings::findOrFail(0);
}
2023-07-28 10:55:26 +02:00
public function getRecepients($notification)
2023-06-06 17:50:13 +02:00
{
$recipients = data_get($notification, 'emails', null);
2023-06-06 17:50:13 +02:00
if (is_null($recipients) || $recipients === '') {
return [];
}
2024-06-10 22:43:34 +02:00
2023-06-06 17:50:13 +02:00
return explode(',', $recipients);
}
2024-06-22 10:41:15 +02:00
public function getTitleDisplayName(): string
{
$instanceName = $this->instance_name;
if (! $instanceName) {
return '';
}
return "[{$instanceName}]";
}
}