/** * Start preview session. * * @param ConnectionInterface $conn * @param MessageHandlerContext $context * @param array $msg * * @return array * * @throws MissingParameterException */ private function start(ConnectionInterface $conn, MessageHandlerContext $context, $msg) { // locale if (!array_key_exists('locale', $msg)) { throw new MissingParameterException('locale'); } $locale = $msg['locale']; $context->set('locale', $locale); // webspace key if (!array_key_exists('webspaceKey', $msg)) { throw new MissingParameterException('webspaceKey'); } $webspaceKey = $msg['webspaceKey']; $context->set('webspaceKey', $webspaceKey); // user id if (!array_key_exists('user', $msg)) { throw new MissingParameterException('user'); } $user = $msg['user']; $context->set('user', $user); // content uuid if (!array_key_exists('content', $msg)) { throw new MissingParameterException('content'); } $contentUuid = $msg['content']; $context->set('content', $contentUuid); // init message vars $template = array_key_exists('template', $msg) ? $msg['template'] : null; $data = array_key_exists('data', $msg) ? $msg['data'] : null; // start preview $this->preview->start($user, $contentUuid, $webspaceKey, $locale, $data, $template); return ['command' => 'start', 'content' => $contentUuid, 'msg' => 'OK']; }
/** * Start preview with given parameters. * * @param MessageHandlerContext $context * @param array $message * * @return array */ private function start(MessageHandlerContext $context, $message) { if ($context->has('previewToken') && $this->preview->exists($context->get('previewToken'))) { $this->preview->stop($context->get('previewToken')); } $token = $this->preview->start($message['class'], $message['id'], $message['user'], $message['webspaceKey'], $message['locale'], $message['data'] ?: []); $response = $this->preview->render($token, $message['webspaceKey'], $message['locale']); $context->set('previewToken', $token); $context->set('locale', $message['locale']); return ['command' => 'start', 'token' => $token, 'response' => $response, 'msg' => 'OK']; }