protected function handleRequest(Request $request) { $tid = \Route::input('id'); // Fetch some info about the topic $topic = Topic::with('forum.perms')->findOrFail($tid); $this->data['topic'] = $topic; $this->data['action'] = trans('fluxbb::post.post_a_reply'); }
protected function handleRequest(Request $request) { $tid = \Route::input('id'); // Fetch some info about the topic $topic = Topic::findOrFail($tid); // Make sure post authors and their groups are all loaded $topic->posts->load('author.group'); $this->data['topic'] = $topic; }
protected function run() { $tid = $this->get('id'); $topic = Topic::findOrFail($tid); $user = User::current(); if (!$topic->subscribers->contains($user)) { $topic->subscribers()->attach($user); $this->raise(new UserSubscribed($topic, $user)); } }
public function get_topic($tid, $page = 1) { // Fetch some info about the topic $topic = Topic::with(array('forum', 'forum.perms'))->where('id', '=', $tid)->whereNull('moved_to')->first(); if ($topic === NULL) { return \Event::first('404'); } $disp_posts = $this->user()->dispPosts(); $num_pages = ceil(($topic->num_replies + 1) / $disp_posts); $page = $page <= 1 || $page > $num_pages ? 1 : intval($page); $start_from = $disp_posts * ($page - 1); // TODO: Use paginate? // Fetch post data // TODO: Can we enforce the INNER JOIN here somehow? $posts = Post::with(array('poster', 'poster.group'))->where('topic_id', '=', $tid)->orderBy('id')->skip($start_from)->take($disp_posts)->get(); // TODO: Or do I need to fetch the IDs here first, since those big results will otherwise have to be filtered after fetching by LIMIT / OFFSET? return \View::make('fluxbb::viewtopic')->with('topic', $topic)->with('posts', $posts)->with('start_from', $start_from); }
public function put_topic($fid) { $forum = Forum::with(array('perms'))->where('id', '=', $fid)->first(); if ($forum === NULL) { return \Event::first('404'); } // TODO: Flood protection $rules = array('req_subject' => 'required|max:70', 'req_message' => 'required'); // TODO: More validation if (\Auth::isGuest()) { if (Config::enabled('p_force_guest_email') || \Input::get('email') != '') { $rules['req_email'] = 'required|email'; } // TODO: banned email } $validation = $this->make_validator(Input::all(), $rules); if ($validation->fails()) { return \Redirect::to_action('fluxbb::posting@topic', array($fid))->with_input()->with_errors($validation); } $topic_data = array('poster' => User::current()->username, 'subject' => \Input::get('req_subject'), 'posted' => \Request::time(), 'last_post' => \Request::time(), 'last_poster' => User::current()->username, 'sticky' => \Input::get('stick_topic') ? '1' : '0', 'forum_id' => $fid); if (\Auth::isGuest()) { $topic_data['poster'] = $topic_data['last_poster'] = \Input::get('req_username'); } // Create the topic $topic = Topic::create($topic_data); // To subscribe or not to subscribe $topic->subscribe(\Input::get('subscribe')); $post_data = array('poster' => User::current()->username, 'poster_id' => User::current()->id, 'poster_ip' => \Request::ip(), 'message' => \Input::get('req_message'), 'hide_smilies' => \Input::get('hide_smilies') ? '1' : '0', 'posted' => \Request::time(), 'topic_id' => $topic->id); if (\Auth::isGuest()) { $post_data['poster'] = \Input::get('req_username'); $post_data['poster_email'] = Config::enabled('p_force_guest_email') ? \Input::get('req_email') : \Input::get('email'); } // Create the post ("topic post") $post = Post::create($post_data); // Update the topic with last_post_id $topic->last_post_id = $topic->first_post_id = $post->id; $topic->save(); // Update forum (maybe $forum->update_forum() ?) $forum->num_posts += 1; $forum->num_topics += 1; $forum->last_post = $topic->last_post; $forum->last_post_id = $topic->last_post_id; $forum->last_poster = $topic->last_poster; $forum->save(); // TODO: update_search_index(); // If the posting user is logged in, increment his/her post count $user = User::current(); if (\Auth::isAuthed()) { $user->num_posts += 1; $user->last_post = \Request::time(); $user->save(); // TODO: Promote this user to a new group if enabled } else { $user->online()->update(array('last_post' => \Request::time())); } return \Redirect::to_action('fluxbb::topic', array($topic->id))->with('message', trans('fluxbb::topic.topic_added')); }
protected function handleRequest(Request $request) { $tid = \Route::input('id'); $this->topic = Topic::with('forum.perms')->findOrFail($tid); $this->message = $request->input('req_message'); }