App\Http\Controllers\Forum\TopicsController::watch PHP Method

watch() public method

public watch ( $id )
    public function watch($id)
    {
        $topic = Topic::findOrFail($id);
        $state = get_bool(Request::input('watch'));
        $privName = 'ForumTopicWatch' . ($state ? 'Add' : 'Remove');
        $type = 'watch';
        priv_check($privName, $topic)->ensureCan();
        TopicWatch::toggle($topic, Auth::user(), $state);
        switch (Request::input('page')) {
            case 'manage':
                $topics = Topic::watchedByUser(Auth::user())->get();
                $topicReadStatus = TopicTrack::readStatus(Auth::user(), $topics);
                // there's currently only destroy action from watch index
                return js_view('forum.topic_watches.destroy', compact('topic', 'topics', 'topicReadStatus'));
            default:
                return js_view('forum.topics.replace_button', compact('topic', 'type', 'state'));
        }
    }