style updates
This commit is contained in:
@@ -1,19 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Sites\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
final class Site extends Model
|
||||
{
|
||||
protected $fillable = ['name','key','status','theme','default_locale','timezone','is_default'];
|
||||
protected function casts(): array { return ['is_default' => 'boolean']; }
|
||||
public function domains(): HasMany { return $this->hasMany(SiteDomain::class); }
|
||||
public function settings(): HasMany { return $this->hasMany(SiteSetting::class); }
|
||||
public function assignments(): HasMany { return $this->hasMany(SiteContent::class); }
|
||||
public function scopeActive(Builder $query): Builder { return $query->where('status', 'active'); }
|
||||
protected $fillable = ['name', 'key', 'status', 'theme', 'default_locale', 'timezone', 'is_default'];
|
||||
|
||||
protected function casts(): array
|
||||
{
|
||||
return ['is_default' => 'boolean'];
|
||||
}
|
||||
|
||||
public function domains(): HasMany
|
||||
{
|
||||
return $this->hasMany(SiteDomain::class);
|
||||
}
|
||||
|
||||
public function settings(): HasMany
|
||||
{
|
||||
return $this->hasMany(SiteSetting::class);
|
||||
}
|
||||
|
||||
public function assignments(): HasMany
|
||||
{
|
||||
return $this->hasMany(SiteContent::class);
|
||||
}
|
||||
|
||||
public function scopeActive(Builder $query): Builder
|
||||
{
|
||||
return $query->where('status', 'active');
|
||||
}
|
||||
|
||||
public function setting(string $key, mixed $default = null): mixed
|
||||
{
|
||||
$setting = $this->relationLoaded('settings') ? $this->settings->firstWhere('key', $key) : $this->settings()->where('key', $key)->first();
|
||||
|
||||
return $setting?->typedValue() ?? $default;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Sites\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
|
||||
final class SiteContent extends Model
|
||||
{
|
||||
protected $table = 'site_content';
|
||||
protected $fillable = ['site_id','content_type','content_id','is_primary'];
|
||||
protected function casts(): array { return ['is_primary'=>'boolean']; }
|
||||
public function site(): BelongsTo { return $this->belongsTo(Site::class); }
|
||||
public function content(): MorphTo { return $this->morphTo(__FUNCTION__, 'content_type', 'content_id'); }
|
||||
|
||||
protected $fillable = ['site_id', 'content_type', 'content_id', 'is_primary'];
|
||||
|
||||
protected function casts(): array
|
||||
{
|
||||
return ['is_primary' => 'boolean'];
|
||||
}
|
||||
|
||||
public function site(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Site::class);
|
||||
}
|
||||
|
||||
public function content(): MorphTo
|
||||
{
|
||||
return $this->morphTo(__FUNCTION__, 'content_type', 'content_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Sites\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
final class SiteDomain extends Model
|
||||
{
|
||||
protected $fillable = ['site_id','domain','is_primary','redirect_to_primary','force_https','is_active'];
|
||||
protected function casts(): array { return ['is_primary'=>'boolean','redirect_to_primary'=>'boolean','force_https'=>'boolean','is_active'=>'boolean']; }
|
||||
public function site(): BelongsTo { return $this->belongsTo(Site::class); }
|
||||
protected $fillable = ['site_id', 'domain', 'is_primary', 'redirect_to_primary', 'force_https', 'is_active'];
|
||||
|
||||
protected function casts(): array
|
||||
{
|
||||
return ['is_primary' => 'boolean', 'redirect_to_primary' => 'boolean', 'force_https' => 'boolean', 'is_active' => 'boolean'];
|
||||
}
|
||||
|
||||
public function site(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Site::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Sites\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
final class SiteSetting extends Model
|
||||
{
|
||||
protected $fillable = ['site_id','group','key','value','type'];
|
||||
public function site(): BelongsTo { return $this->belongsTo(Site::class); }
|
||||
protected $fillable = ['site_id', 'group', 'key', 'value', 'type'];
|
||||
|
||||
public function site(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Site::class);
|
||||
}
|
||||
|
||||
public function typedValue(): mixed
|
||||
{
|
||||
return match ($this->type) {
|
||||
|
||||
Reference in New Issue
Block a user