validate($request); $user = $this->getUser($request); $posting = Posting::findOneBySQL( "posting_id = :posting_id AND user_id = :user_id", [ 'posting_id' => $args['posting_id'], 'user_id' => $user->user_id ] ); if (!$posting) { throw new RecordNotFoundException(); } if ($posting->discussion->closed_at) { throw new AuthorizationFailedException(); } $posting->content = Markup::purifyHtml(Markup::markAsHtml(self::arrayGet($json, 'data.attributes.content'))); $posting->anonymous = (self::arrayGet($json, 'data.attributes.anonymous') && \Config::get()->FORUM_ANONYMOUS_POSTINGS); $posting->store(); return $this->getCreatedResponse($posting); } protected function validateResourceDocument($json, $data) { $required_keys = [ 'data.attributes.content' => 'Missing `data.attributes.content`', 'data.attributes.anonymous' => 'Missing `data.attributes.anonymous`', ]; foreach ($required_keys as $key => $error_message) { if (!self::arrayHas($json, $key)) { return $error_message; } } return null; } }