/** * @param EditPost $command * @return \Flarum\Core\Posts\Post * @throws \Flarum\Core\Exceptions\PermissionDeniedException */ public function handle(EditPost $command) { $actor = $command->actor; $data = $command->data; $post = $this->posts->findOrFail($command->postId, $actor); if ($post instanceof CommentPost) { $attributes = array_get($data, 'attributes', []); if (isset($attributes['content'])) { $post->assertCan($actor, 'edit'); $post->revise($attributes['content'], $actor); } if (isset($attributes['isHidden'])) { $post->assertCan($actor, 'edit'); if ($attributes['isHidden']) { $post->hide($actor); } else { $post->restore(); } } } event(new PostWillBeSaved($post, $actor, $data)); $post->save(); $this->dispatchEventsFor($post); return $post; }
/** * @param DeletePost $command * @return \Flarum\Core\Posts\Post */ public function handle(DeletePost $command) { $actor = $command->actor; $post = $this->posts->findOrFail($command->postId, $actor); $post->assertCan($actor, 'delete'); event(new PostWillBeDeleted($post, $actor, $command->data)); $post->delete(); $this->dispatchEventsFor($post); return $post; }
/** * Get a single post, ready to be serialized and assigned to the JsonApi * response. * * @param JsonApiRequest $request * @param Document $document * @return \Flarum\Core\Posts\Post */ protected function data(JsonApiRequest $request, Document $document) { return $this->posts->findOrFail($request->get('id'), $request->actor); }