/** * Handles the creation of a new thread or reply. * * @param \App\Http\Requests\PostRequest $request * @param Board $board * @param Post|null $thread * @return Response (redirects to the thread view) */ public function putThread(PostRequest $request, Board $board, Post $thread = null) { // Create the post. $post = new Post($request->all()); $post->submitTo($board, $thread); // Log staff posts. if ($post->capcode_id) { $this->log('log.post.capcode', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "capcode" => $post->capcode->getCapcodeName(), "role" => $post->capcode->role]); } $input = $request->only('updatesOnly', 'updateHtml', 'updatedSince'); if ($request->wantsJson()) { $updatedSince = Carbon::createFromTimestamp($request->input('updatedSince', Carbon::now()->subMinutes(4)->timestamp)); $includeHTML = isset($input['updateHtml']); $posts = Post::getUpdates($updatedSince, $board, $thread, $includeHTML); $post->setAppendHTML($includeHTML); $posts->push($post); $posts->sortBy('board_id'); return $posts; } // Redirect to the new post or thread. if ($post->reply_to_board_id) { return redirect("{$board->board_uri}/thread/{$post->reply_to_board_id}#{$post->board_id}"); } else { return redirect("{$board->board_uri}/thread/{$post->board_id}#{$post->board_id}"); } }