Úpravy a systémové správy
Messages::message() vráti handle pre jednu správu:
use RoundlyConsulting\Messages\Facades\Messages;
Messages::message($message)->edit('edited body', by: $alice);
Messages::message($message)->delete(by: $alice); // soft delete ("unsent")Správu smie upraviť len jej autor — ani vlastník či administrátor, a to bez ohľadu na messages.permissions.enabled. Zmazať ju smie autor a v skupinovom vlákne s vynucovanými rolami aj vlastníci a administrátori. V oboch prípadoch musí byť vykonávateľ stále účastníkom vlákna. Pri dôveryhodných serverových volaniach by: vynechajte.
Úprava alebo zmazanie už zmazanej správy vyhodí typovanú RoundlyConsulting\Messages\Exceptions\MessageException. Úprava spustí MessageEdited, zmazanie MessageDeleted.
Obmedzené na vlákno
Ak vlákno aj správa prichádzajú z požiadavky, choďte cez vlákno — správa z iného vlákna vyhodí MessageException::notInThread():
// PATCH /threads/{thread}/messages/{message} — refuses a message of another thread
Messages::thread($thread)->message($message)->edit($request->body, by: $request->user());
Messages::thread($thread)->message($message)->delete(by: $request->user());Čo robí zrušenie odoslania
- Správa sa zmaže mäkko (soft delete) — riadok zostáva až do trvalého zmazania alebo prune.
- Broadcasty a MessageResource skryjú text (null) a preview() vráti „This message was deleted.“
- Ukazovateľ poslednej správy vlákna sa presunie na predchádzajúcu zachovanú správu.
- Súbory príloh zostanú; odstráni ich len trvalé zmazanie alebo prune.
Systémové správy
Systémové správy zapnete cez messages.system-messages.enabled (MESSAGES_SYSTEM_MESSAGES). Ukladajú sa ako správa typu MessageType::System bez odosielateľa, s prekladovým kľúčom ako textom a parametrami v JSON stĺpci meta, takže sa správne zobrazia v ľubovoľnom jazyku. Po zapnutí ich balík zapisuje sám:
- pridanie účastníka — messages::messages.system.participant_joined s poľom participateAs() účastníka v meta.participant;
- odchod účastníka — messages::messages.system.participant_left, rovnaké meta;
- premenovanie vlákna — messages::messages.system.thread_renamed s meta.name.
Vlastné systémové správy zapíšete cez builder. preview() preloží kľúč a skalárne hodnoty z meta použije ako náhrady:
use RoundlyConsulting\Messages\Facades\Messages;
$message = Messages::to($thread)
->asSystem('messages::messages.system.thread_renamed', ['name' => 'Launch'])
->send(); // type System, no sender, body = the translation key, params in meta
$message->preview(); // "The conversation was renamed to Launch."Prekladové kľúče
Ak chcete texty preložiť alebo preformulovať, publikujte ich tagom messages-translations:
| Kľúč | Predvolený anglický text |
|---|---|
messages::messages.system.participant_joined | :participant joined the conversation. |
messages::messages.system.participant_left | :participant left the conversation. |
messages::messages.system.thread_renamed | The conversation was renamed to :name. |
messages::messages.preview.deleted | This message was deleted. |
messages::messages.reply.cross-thread | A reply must target a message in the same thread. |
messages::messages.participation.not-a-participant | [:participant] is not a participant of this thread. |
messages::messages.participation.ownership-by-transfer | Ownership changes hands only through transferOwnership(). |
messages::messages.participation.owner-must-transfer | The owner must transferOwnership() before leaving the thread. |
messages::messages.participation.not-the-owner | [:participant] does not own this thread, so has no ownership to transfer. |
messages::messages.participation.direct-has-no-roles | A direct thread has no roles to change. |
messages::messages.participation.participant-missing | The model behind participant [:participant] no longer exists. |
messages::messages.participation.interface-required | Missing implementation of the :interface interface for class :class. |
messages::messages.permissions.requires-role | [:actor] requires the :role role to :action. |
messages::messages.permissions.unauthorized | [:actor] is not authorized to :action. |
messages::messages.scope.message-in-another-thread | Message [:message] belongs to another thread. |
messages::messages.scope.participant-in-another-thread | Participant [:participant] belongs to another thread. |
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.