NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Messages for Laravel

Ú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_renamedThe conversation was renamed to :name.
messages::messages.preview.deletedThis message was deleted.
messages::messages.reply.cross-threadA 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-transferOwnership changes hands only through transferOwnership().
messages::messages.participation.owner-must-transferThe 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-rolesA direct thread has no roles to change.
messages::messages.participation.participant-missingThe model behind participant [:participant] no longer exists.
messages::messages.participation.interface-requiredMissing 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-threadMessage [:message] belongs to another thread.
messages::messages.scope.participant-in-another-threadParticipant [: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 kryptomien

Odoslaní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.