add message template

This commit is contained in:
xiaomlove
2025-06-19 13:13:26 +07:00
parent 75c1eb0664
commit a0ff441f03
85 changed files with 479 additions and 7 deletions
+5 -2
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use App\Enums\ModelEventEnum;
use Nexus\Database\NexusDB;
class Message extends NexusModel
@@ -26,10 +27,12 @@ class Message extends NexusModel
return $this->belongsTo(User::class, 'receiver');
}
public static function add(array $data): bool
public static function add(array $data): self
{
clear_inbox_count_cache($data["receiver"]);
return self::query()->insert($data);
$message = self::query()->create($data);
fire_event(ModelEventEnum::MESSAGE_CREATED, $message);
return $message;
}
}
+48
View File
@@ -0,0 +1,48 @@
<?php
namespace App\Models;
use App\Enums\MessageTemplateNameEnum;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class MessageTemplate extends NexusModel
{
protected $fillable = ['name', 'content', 'language_id'];
public $timestamps = true;
protected $casts = [
'name' => MessageTemplateNameEnum::class,
];
public static function listAllNames(): array
{
$result = [];
foreach (MessageTemplateNameEnum::cases() as $messageTemplate) {
$result[$messageTemplate->value] = $messageTemplate->label();
}
return $result;
}
public function language(): BelongsTo
{
return $this->belongsTo(Language::class);
}
public static function forRegisterWelcome($languageId, array $placeholders): null|string
{
$result = self::query()->where("language_id", $languageId)
->where('name', MessageTemplateNameEnum::REGISTER_WELCOME->value)
->first();
return self::format($result, $placeholders);
}
private static function format(self|null $template, array $placeholders): null|string
{
if ($template && $template->content) {
$search = array_map(function ($value) {return ":$value";}, array_keys($placeholders));
return str_replace($search, array_values($placeholders), $template->content);
}
return null;
}
}
+6 -1
View File
@@ -69,8 +69,13 @@ class PluginStore extends Model
public function hasNewVersion(): bool
{
return $this->installed_version
$result = $this->installed_version
&& version_compare($this->version, $this->installed_version, '>');
do_log(sprintf(
"%s, installed_version: %s, version: %s, hasNew: %s",
$this->plugin_id, $this->installed_version, $this->version, $result
));
return $result;
}
public static function getInfo(string $id)
+1 -1
View File
@@ -299,7 +299,7 @@ class User extends Authenticatable implements FilamentUser, HasName
$log .= ", locale from cookie: $locale";
}
if (!$locale) {
$lang = $this->language->site_lang_folder;
$lang = $this->language?->site_lang_folder ?? null;
$locale = Locale::$languageMaps[$lang] ?? $lang;
$log .= ", [NO_DATA_FROM_COOKIE], lang from database: $lang, locale: $locale";
}