Flarum\Api\Controller\UpdateDiscussionController::data PHP Method

data() protected method

protected data ( Psr\Http\Message\ServerRequestInterface $request, Document $document )
$request Psr\Http\Message\ServerRequestInterface
$document Tobscure\JsonApi\Document
    protected function data(ServerRequestInterface $request, Document $document)
    {
        $actor = $request->getAttribute('actor');
        $discussionId = array_get($request->getQueryParams(), 'id');
        $data = array_get($request->getParsedBody(), 'data', []);
        $discussion = $this->bus->dispatch(new EditDiscussion($discussionId, $actor, $data));
        // TODO: Refactor the ReadDiscussion (state) command into EditDiscussion?
        // That's what extensions will do anyway.
        if ($readNumber = array_get($data, 'attributes.readNumber')) {
            $state = $this->bus->dispatch(new ReadDiscussion($discussionId, $actor, $readNumber));
            $discussion = $state->discussion;
        }
        if ($posts = $discussion->getModifiedPosts()) {
            $posts = (new Collection($posts))->load('discussion', 'user');
            $discussionPosts = $discussion->postsVisibleTo($actor)->orderBy('time')->lists('id')->all();
            foreach ($discussionPosts as &$id) {
                foreach ($posts as $post) {
                    if ($id == $post->id) {
                        $id = $post;
                    }
                }
            }
            $discussion->setRelation('posts', $discussionPosts);
            $this->include = array_merge($this->include, ['posts', 'posts.discussion', 'posts.user']);
        }
        return $discussion;
    }
UpdateDiscussionController