---
title: "Úpravy a systémové správy — Messages for Laravel | Roundly"
description: "Upravujte správy a rušte ich odoslanie s typovanými poistkami a zapisujte preložiteľné systémové správy pre ľubovoľný jazyk."
url: https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel/upravy-a-systemove-spravy
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Messages for Laravel](https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel.md)

# Úpravy a systémové správy

Messages::message() vráti handle pre jednu správu:

```php
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. Správa sa považuje za upravenú, len keď sa jej text naozaj zmenil: zmena textu zapíše meta.edited\_at (ISO-8601) a edited\_at v MessageResource číta práve to — nikdy updated\_at, ktorý nastaví aj zrušenie odoslania a obnovenie. Správy upravené pred verziou 1.1.0 túto značku nemajú a edited\_at u nich vráti null.

## 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():

```php
// 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.“ (v slovenčine „Táto správa bola odstránená.“).
- 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.

preview() ich zobrazí v aktuálnom jazyku. Za :participant dosadí kľúč name z uloženej snímky — a ak ho snímka nemá alebo model neimplementuje ParticipatesInMessaging, text „bez mena“ (v angličtine „An unnamed participant“). Rovnako sa zobrazia aj správy uložené verziami 1.0.0–1.0.1.

Vlastné systémové správy zapíšete cez builder. preview() preloží kľúč a skalárne hodnoty z meta použije ako náhrady:

```php
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

Angličtina a slovenčina sú súčasťou balíka. Ak chcete texty preformulovať alebo pridať ďalší jazyk, 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.system.unnamed_participant` | An unnamed participant |
| `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.direct-is-closed` | A direct thread takes no new participants; start a group thread to bring someone in. |
| `messages::messages.participation.direct-takes-two` | A direct thread has one or two participants; start a group thread for more. |
| `messages::messages.participation.participant-missing` | The model behind participant \[:participant\] no longer exists. |
| `messages::messages.participation.thread-missing` | The thread of 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. |

UnauthorizedMessagingAction::for(Model $actor, string $action) aj requiresRole(Model $actor, ParticipantRole $required, string $action) očakávajú v $action kľúč messages::messages.permissions.actions.\* a prečítajú ho v aktuálnom jazyku — bežnú frázu, ktorá kľúčom nie je, použijú tak, ako je. Požadovanú rolu berú z messages::messages.permissions.roles.\* (owner, admin, member), takže celé odmietnutie je v jednom jazyku. Po slovensky znie napríklad takto: \[…\] potrebuje rolu „vlastník“, ak chce odovzdať vlastníctvo.

| Kľúč permissions.actions.\* | Predvolený anglický text |
| --- | --- |
| `join-thread` | join this thread |
| `send-messages` | send messages to this thread |
| `add-participants` / `remove-participants` | add participants / remove participants |
| `remove-participant` | remove this participant |
| `change-roles` | change participant roles |
| `transfer-ownership` | transfer ownership |
| `rename-thread` / `archive-thread` | rename the thread / archive the thread |
| `delete-message` / `edit-message` | delete this message / edit this message |

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/messages-for-laravel.md)
