예제 #1
0
 /**
  * Renders a thread.
  *
  * @var \App\Http\Requests\Request $request
  * @var Board $board
  * @var integer|null $thread
  * @return Response
  */
 public function getThread(Request $request, Board $board, $thread = null)
 {
     if (is_null($thread)) {
         return redirect($board->board_uri);
     }
     // Pull the thread.
     $thread = $board->getThread($thread);
     if (!$thread) {
         return abort(404);
     }
     if ($thread->reply_to) {
         return redirect("{$board->board_uri}/thread/{$thread->op->board_id}");
     }
     return $this->view(static::VIEW_THREAD, ['board' => $board, 'posts' => [$thread], 'reply_to' => $thread->board_id]);
 }
예제 #2
0
 /**
  * Returns a thread and its replies to the client. 
  *
  * @var Board $board
  * @var integer|null $thread
  * @return Response
  */
 public function getThread(Request $request, Board $board, $thread)
 {
     if (is_null($thread)) {
         return abort(404);
     }
     $input = $request->only('updatesOnly', 'updatedSince');
     if (isset($input['updatesOnly'])) {
         $updatedSince = Carbon::createFromTimestamp($request->input('updatedSince', 0));
         return Post::where('posts.board_uri', $board->board_uri)->withEverything()->where(function ($query) use($thread) {
             $query->where('posts.reply_to_board_id', $thread);
             $query->orWhere('posts.board_id', $thread);
         })->where(function ($query) use($updatedSince) {
             $query->where('posts.updated_at', '>=', $updatedSince);
             $query->orWhere('posts.deleted_at', '>=', $updatedSince);
         })->withTrashed()->orderBy('posts.created_at', 'asc')->get();
     } else {
         // Pull the thread.
         $thread = $board->getThread($thread);
         if (!$thread) {
             return abort(404);
         }
     }
     return $thread;
 }