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

store() public method

public store ( Illuminate\Http\Request $request )
$request Illuminate\Http\Request
    public function store(HttpRequest $request)
    {
        $forum = Forum::findOrFail($request->get('forum_id'));
        priv_check('ForumTopicStore', $forum)->ensureCan();
        $this->validate($request, ['title' => 'required', 'body' => 'required']);
        if (get_bool($request->get('with_poll'))) {
            $pollParams = get_params($request, 'forum_topic_poll', ['length_days:int', 'max_options:int', 'options:string_split', 'title', 'vote_change:bool']);
            $poll = (new TopicPoll())->fill($pollParams);
            if (!$poll->isValid()) {
                return error_popup(implode(' ', $poll->validationErrors()->allMessages()));
            }
        }
        $params = ['title' => $request->get('title'), 'user' => Auth::user(), 'body' => $request->get('body'), 'cover' => TopicCover::findForUse(presence($request->input('cover_id')), Auth::user())];
        $topic = Topic::createNew($forum, $params, $poll ?? null);
        if ($topic->topic_id !== null) {
            Event::fire(new TopicWasCreated($topic, $topic->posts->last(), Auth::user()));
            return ujs_redirect(route('forum.topics.show', $topic));
        } else {
            abort(422);
        }
    }