Konfigurácia
Balík funguje bez akejkoľvek konfigurácie. Publikovaný config/messages.php (blok broadcasting opisuje sekcia Broadcasting):
return [
'models' => [
'message' => RoundlyConsulting\Messages\Models\Message::class,
'thread' => RoundlyConsulting\Messages\Models\Thread::class,
'participant' => RoundlyConsulting\Messages\Models\Participant::class,
],
'key_type' => env('MESSAGES_KEY_TYPE', 'bigint'),
'primary_key_type' => env('MESSAGES_PRIMARY_KEY_TYPE', 'bigint'),
'publicity' => [
'public-by-default' => env('THREADS_PUBLIC', false),
'everyone-can-join' => env('THREADS_EVERYONE_CAN_JOIN', false),
],
'media' => [
'attachments_bucket' => 'attachments',
'disk' => env('MESSAGES_MEDIA_DISK', null),
'private_disk' => env('MESSAGES_MEDIA_PRIVATE_DISK', 'local'),
'visibility' => env('MESSAGES_MEDIA_VISIBILITY', 'private'),
'accepted_mime_types' => [],
'max_file_size' => null,
'responsive_widths' => null,
'warm_on_send' => true,
'temporary_url_lifetime' => null,
'cleanup_on_force_delete' => true,
],
'system-messages' => [
'enabled' => env('MESSAGES_SYSTEM_MESSAGES', false),
],
'permissions' => [
'enabled' => env('MESSAGES_PERMISSIONS', true),
],
'notifications' => [
'enabled' => env('MESSAGES_NOTIFICATIONS', false),
'notification' => RoundlyConsulting\Messages\Notifications\NewMessageNotification::class,
'channels' => ['database'],
],
'preview' => [
'length' => env('MESSAGES_PREVIEW_LENGTH', 120),
],
'prune' => [
'days' => env('MESSAGES_PRUNE_DAYS', 90),
],
'broadcasting' => [
'enabled' => env('REALTIME_MESSAGES', false),
// channels + event names for threads, participants, typing and messages
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
models.message / .thread / .participant | modely balíka | — | Vymeniteľné modely — nasmerujte ich na vlastnú podtriedu. Trieda, ktorá nie je modelom balíka ani jeho podtriedou, vyhodí InvalidConfigurationException. |
primary_key_type | bigint | MESSAGES_PRIMARY_KEY_TYPE | Typ kľúča vlastných tabuliek balíka a interných cudzích kľúčov (bigint, uuid, ulid — čokoľvek iné vyhodí výnimku). Zafixuje sa pri prvej migrácii. |
key_type | bigint | MESSAGES_KEY_TYPE | Typ kľúča vašich modelov odosielateľov a účastníkov — určuje typ morph stĺpcov sender_id / participant_id a musí zodpovedať ich primárnemu kľúču (bigint, uuid, ulid — čokoľvek iné vyhodí výnimku). Zafixuje sa pri prvej migrácii. |
publicity.public-by-default | false | THREADS_PUBLIC | Nové skupinové vlákna sú verejné, ak volajúci neurčí inak. |
publicity.everyone-can-join | false | THREADS_EVERYONE_CAN_JOIN | Či sa do nového skupinového vlákna môže ktokoľvek pridať sám. |
media.attachments_bucket | attachments | — | Skupina (bucket) media-library, do ktorej sa ukladajú prílohy. Prázdny názov sa považuje za nenastavený (platí predvolený); názov, ktorý nie je reťazcom, vyhodí výnimku. |
media.disk | null | MESSAGES_MEDIA_DISK | Disk pre všetky prílohy bez ohľadu na viditeľnosť; null = podľa viditeľnosti (súkromné → media.private_disk, verejné → predvolený disk media-library). Prázdna hodnota (MESSAGES_MEDIA_DISK=) sa považuje za nenastavenú, takže disk sa zvolí podľa viditeľnosti; názov, ktorý nie je reťazcom, vyhodí výnimku. |
media.private_disk | local | MESSAGES_MEDIA_PRIVATE_DISK | Neverejný disk pre súkromné prílohy a ich varianty, keď je media.disk null — nikdy nie verejne servírovaný disk public. Prázdny názov sa považuje za nenastavený (local); názov, ktorý nie je reťazcom, vyhodí výnimku. |
media.visibility | private | MESSAGES_MEDIA_VISIBILITY | private (len podpísané URL) alebo public; čokoľvek iné vyhodí výnimku. |
media.accepted_mime_types | [] | — | Povolené mime typy, zoznam neprázdnych reťazcov; [] prijme akýkoľvek súbor. |
media.max_file_size | null | — | Max. veľkosť prílohy v bajtoch, aspoň 1; null = predvolená hodnota media-library. |
media.responsive_widths | null | — | Rebrík šírok pre obrázkové prílohy, zoznam kladných celých čísel; null = predvolený rebrík media-library. |
media.warm_on_send | true | — | Pri odoslaní zaradiť do fronty generovanie variantov každej obrázkovej prílohy. |
media.temporary_url_lifetime | null | — | Platnosť podpísaných URL príloh v minútach, aspoň 1; null = predvolená hodnota media-library. |
media.cleanup_on_force_delete | true | — | Pri trvalom zmazaní a prune odstrániť súbory príloh; zrušené správy si ich ponechajú. |
system-messages.enabled | false | MESSAGES_SYSTEM_MESSAGES | Pri pridaní, odchode a premenovaní zapisovať preložiteľné systémové správy. |
permissions.enabled | true | MESSAGES_PERMISSIONS | Vynucovať roly vlastník/administrátor/člen v skupinových vláknach — roly sa zaznamenávajú v každom prípade. |
notifications.enabled | false | MESSAGES_NOTIFICATIONS | Pri každom odoslaní notifikovať ostatných účastníkov vlákna. |
notifications.notification | NewMessageNotification | — | Trieda notifikácie odoslaná príjemcom — podtrieda Notification, ktorá dostane správu v konštruktore; čokoľvek iné vyhodí výnimku. |
notifications.channels | ['database'] | — | Kanály, ktoré používa predvolená notifikácia (neprázdne reťazce). |
preview.length | 120 | MESSAGES_PREVIEW_LENGTH | Max. dĺžka náhľadov a úryvkov citácií, aspoň 1. |
prune.days | 90 | MESSAGES_PRUNE_DAYS | Predvolené obdobie uchovávania pre messages:prune a Messages::prune(), aspoň 1. |
broadcasting.enabled | false | REALTIME_MESSAGES | Vysielať udalosti vlákien, účastníkov, správ a písania. |
broadcasting.* | pozri Broadcasting | — | Názvy kanálov a aliasy udalostí — každý reťazec; prázdna hodnota sa považuje za nenastavenú (platí názov z balíka), hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
Prostredie (env)
Prepínače, ktoré budete meniť najčastejšie, sú riadené cez env, takže konfiguráciu publikujete len zriedka:
MESSAGES_KEY_TYPE=bigint
MESSAGES_PRIMARY_KEY_TYPE=bigint
THREADS_PUBLIC=false
THREADS_EVERYONE_CAN_JOIN=false
MESSAGES_MEDIA_PRIVATE_DISK=local
MESSAGES_MEDIA_VISIBILITY=private
MESSAGES_SYSTEM_MESSAGES=true
MESSAGES_PERMISSIONS=true
MESSAGES_NOTIFICATIONS=true
MESSAGES_PREVIEW_LENGTH=120
MESSAGES_PRUNE_DAYS=90
REALTIME_MESSAGES=truekey_type a primary_key_type nastavte pred publikovaním a spustením migrácií — obe hodnoty sa čítajú počas migrácie.
Logické prepínače
Každý logický (bool) prepínač sa číta ako boolean, takže hodnoty v .env znamenajú presne to, čo hovoria — true, 1, on a yes ho zapnú; false, 0, off a no ho vypnú:
MESSAGES_PERMISSIONS=1 # true / 1 / on / yes — enforce roles
THREADS_PUBLIC=off # false / 0 / off / no — keep new threads privatePrázdna hodnota (THREADS_PUBLIC=) sa považuje za nenastavenú, takže platí predvolená. Čokoľvek iné vyhodí RoundlyConsulting\PackageToolkit\Exceptions\InvalidConfigurationException namiesto toho, aby sa potichu prečítalo ako predvolená hodnota.
Striktné hodnoty
Rovnako striktne sa čítajú aj všetky ostatné nastavenia. Nastavenie bez hodnoty — kľúč chýba, je null alebo je prázdny ako riadok MESSAGES_PRUNE_DAYS= v hostiteľskej aplikácii — použije svoju predvolenú hodnotu; voliteľné nastavenie (media.disk, media.max_file_size, media.temporary_url_lifetime) zostane nenastavené. Celé čísla prijímajú int alebo čistý celočíselný reťazec (každá env hodnota je reťazec): MESSAGES_PRUNE_DAYS=ninety či 12.5 vyhodí výnimku namiesto toho, aby sa z nich stala 0 — čo by pri prune.days znamenalo zmazanie všetkých správ. Názov broadcast kanála či udalosti, bucketu alebo disku musí byť reťazec; media.visibility musí byť private alebo public; trieda notifikácie musí byť podtriedou Notification; model musí byť modelom balíka alebo jeho podtriedou.
Kontrola aktuálnej konfigurácie
php artisan about obsahuje sekciu Messages s nakonfigurovanými modelmi, typom kľúča, verejnosťou vlákien, vynucovaním rolí, systémovými správami, notifikáciami, broadcastingom, dĺžkou náhľadu, obdobím uchovávania a nastaveniami príloh. Zobrazuje len podobu konfigurácie — nikdy obsah správ ani účastníkov. Chybné nastavenie náhľadu, uchovávania, príloh či notifikácií sa zobrazí ako INVALID, príkaz nezlyhá.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.