File manager - Edit - /var/www/html/portal/app/Models/Admin/Theme.php
Back
<?php namespace App\Models\Admin; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Str; use Laravel\Sanctum\HasApiTokens; use DateTimeInterface; class Theme extends Model { use HasApiTokens; use HasFactory; use Notifiable; protected $connection = 'mysql'; public $incrementing = false; protected $keyType = 'string'; protected $table = 'temas'; const CREATED_AT = 'created_at'; const UPDATED_AT = 'updated_at'; /** * Logo padrão do sistema quando nenhuma logo personalizada é definida. */ public const DEFAULT_LOGO = 'pmar/assets/img/logo-pmar.png'; /** * Slug do tema Modo Noturno do sistema. */ public const DARK_MODE_SLUG = 'modo-noturno'; /** * Logo padrão para modo de acessibilidade (modo escuro). */ public const DEFAULT_ACCESSIBILITY_LOGO = 'pmar/assets/img/logo-angra-branco.svg'; /** * @var array<int, string> */ protected $fillable = [ 'id', 'created_at', 'updated_at', 'nome', 'slug', 'is_default', 'is_active_public', 'is_active_admin', 'is_dark_mode', 'colors', 'default_colors', 'logo', 'accessibility_logo', ]; /** * Accessor para 'name' que retorna 'nome' (compatibilidade) */ public function getNameAttribute() { return $this->attributes['nome'] ?? null; } /** * Mutator para 'name' que atualiza 'nome' (compatibilidade) */ public function setNameAttribute($value) { $this->attributes['nome'] = $value; } /** * Retorna a logo do tema ou a logo padrão caso não haja uma personalizada. * * @return string */ public function getLogoUrlAttribute(): string { if (!empty($this->attributes['logo'])) { return asset($this->attributes['logo']); } return asset(self::DEFAULT_LOGO); } /** * Verifica se o tema possui uma logo personalizada. * * @return bool */ public function hasCustomLogo(): bool { return !empty($this->attributes['logo']); } /** * Retorna a logo de acessibilidade do tema ou a logo padrão de acessibilidade. * Se não houver logo de acessibilidade personalizada, usa a logo normal do tema. * Se não houver logo normal, usa a logo padrão de acessibilidade. * * @return string */ public function getAccessibilityLogoUrlAttribute(): string { // Se tem logo de acessibilidade personalizada, usa ela if (!empty($this->attributes['accessibility_logo'])) { return asset($this->attributes['accessibility_logo']); } // Se tem logo normal personalizada, usa ela if (!empty($this->attributes['logo'])) { return asset($this->attributes['logo']); } // Caso contrário, usa a logo padrão de acessibilidade (branca para modo escuro) return asset(self::DEFAULT_ACCESSIBILITY_LOGO); } /** * Verifica se o tema possui uma logo de acessibilidade personalizada. * * @return bool */ public function hasCustomAccessibilityLogo(): bool { return !empty($this->attributes['accessibility_logo']); } /** * @var array<string, string> */ protected $casts = [ 'is_default' => 'boolean', 'is_active_public' => 'boolean', 'is_active_admin' => 'boolean', 'is_dark_mode' => 'boolean', 'colors' => 'array', 'default_colors' => 'array', ]; /** * Verifica se este é o tema de modo noturno do sistema. * * @return bool */ public function isDarkModeTheme(): bool { return $this->is_dark_mode === true || $this->slug === self::DARK_MODE_SLUG; } /** * Retorna o tema de modo noturno do sistema. * * @return Theme|null */ public static function getDarkModeTheme(): ?Theme { return static::where('is_dark_mode', true) ->orWhere('slug', self::DARK_MODE_SLUG) ->first(); } public static function boot(): void { parent::boot(); static::creating(function (self $model): void { if (empty($model->id)) { $model->id = Str::uuid()->toString(); } }); } protected function serializeDate(DateTimeInterface $date): string { return $date->format('Y-m-d H:i:s'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings