eventDispatcher = $dispatcher; } /** * @param Environment $environment * @param string $eventName * @param mixed|null $payload * @return ThemeEvent */ public function trigger(Environment $environment, string $eventName, $payload = null): ThemeEvent { /** @var AppVariable $app */ $app = $environment->getGlobals()['app']; /** @var User $user */ $user = $app->getUser(); $themeEvent = new ThemeEvent($user, $payload); if ($this->eventDispatcher->hasListeners($eventName)) { $this->eventDispatcher->dispatch($themeEvent, $eventName); } return $themeEvent; } public function actions(User $user, string $action, array $payload): ThemeEvent { if (!\array_key_exists('actions', $payload)) { $payload['actions'] = []; } $themeEvent = new PageActionsEvent($user, $payload, $action); $eventName = 'actions.' . $action; if ($this->eventDispatcher->hasListeners($eventName)) { $this->eventDispatcher->dispatch($themeEvent, $eventName); } return $themeEvent; } public function getJavascriptTranslations(): array { $event = new ThemeJavascriptTranslationsEvent(); $this->eventDispatcher->dispatch($event); return $event->getTranslations(); } }