Files
nexusphp/app/Models/UserMeta.php

56 lines
1.5 KiB
PHP
Raw Normal View History

2022-08-10 17:38:05 +08:00
<?php
namespace App\Models;
2025-10-12 03:48:04 +07:00
use App\Models\Traits\NexusActivityLogTrait;
2022-08-10 17:38:05 +08:00
class UserMeta extends NexusModel
{
2025-10-12 03:48:04 +07:00
use NexusActivityLogTrait;
2022-08-10 17:38:05 +08:00
protected $fillable = ['uid', 'meta_key', 'meta_value', 'status', 'deadline'];
public $timestamps = true;
const STATUS_NORMAL = 0;
const META_KEY_PERSONALIZED_USERNAME = 'PERSONALIZED_USERNAME';
const META_KEY_CHANGE_USERNAME = 'CHANGE_USERNAME';
protected $appends = ['meta_key_text'];
2022-08-11 13:48:26 +08:00
protected $casts = [
'deadline' => 'datetime',
];
2022-08-11 17:12:36 +08:00
public static array $metaKeys = [
self::META_KEY_PERSONALIZED_USERNAME => ['text' => 'PERSONALIZED_USERNAME', 'multiple' => false],
self::META_KEY_CHANGE_USERNAME => ['text' => 'CHANGE_USERNAME', 'multiple' => false],
];
public static function listProps()
{
return [
self::META_KEY_PERSONALIZED_USERNAME => nexus_trans('label.user_meta.meta_keys.' . self::META_KEY_PERSONALIZED_USERNAME),
self::META_KEY_CHANGE_USERNAME => nexus_trans('label.user_meta.meta_keys.' . self::META_KEY_CHANGE_USERNAME),
];
}
2022-08-10 17:38:05 +08:00
public function getMetaKeyTextAttribute()
{
return nexus_trans('label.user_meta.meta_keys.' . $this->meta_key) ?? '';
}
2022-08-11 13:48:26 +08:00
public function isValid(): bool
2022-08-10 17:38:05 +08:00
{
2022-08-11 13:48:26 +08:00
return $this->status == self::STATUS_NORMAL && ($this->getRawOriginal('deadline') === null || ($this->deadline && $this->deadline->gte(now())));
2022-08-10 17:38:05 +08:00
}
2023-01-10 17:25:53 +08:00
public function user()
{
return $this->belongsTo(User::class, 'uid');
}
2022-08-10 17:38:05 +08:00
}