MMO\edms\events · 1 symbol · generated 27 Oct 2026
class
Attach
Attach.php:26A client attaches a file to an entity of the application (an upload's `attachment`), or looks at the files attached
to it: edms cannot know who may, the application answers, for an $action:
- [`Access::CREATE`](https://mmoframework.fr/en/documentation/mmo.edms/php/helpers/Access.md#access-create) attach a file to it. Nobody answering lets it; a listener answering false refuses it (a 403).class MMO\edms\events\Attach extends MMO\core\events\Signal
Answering true also lets the client put the file in a global tag (`_TAGS/...`) that no scope gives it: on a
record, a global tag is one of its rubrics ([`FileManager::canLabel`](https://mmoframework.fr/en/documentation/mmo.edms/php/FileManager.md#filemanager-canlabel));
- [`Access::SHOW`](https://mmoframework.fr/en/documentation/mmo.edms/php/helpers/Access.md#access-show) see the files attached to it that carry a global tag, which no scope gives it ([`FileManager::can`](https://mmoframework.fr/en/documentation/mmo.edms/php/FileManager.md#filemanager-can)). Only a listener answering true lets it.
A scope set on the file or on the label always wins over the answer.
Attach::AddListener(function (Attach $event): void {
if (($event->entity instanceof Invoice) && (!$event->entity->isEditableBy($event->client))) {$event->setReturn(false);}
});
//whoever sees a record sees the documents of its rubrics, and adds some
Attach::AddListener(fn (Attach $event) => $event->setReturn(canSee($event->client, $event->entity)));
Collect every listener for this class, including those registered on its parent classes (so a subclass event is also caught by listeners of its parent event), sorted by ascending $order (ties keep …
Change the order of an already-registered listener, whether added directly via AddListener or indirectly via ConnectListeners (which also stores its [$obj, $methodName] callables here).