/** * @param int $forumId * @param CreateRequest $createRequest * * @return $this|bool|\Illuminate\Http\RedirectResponse */ public function postCreate($forumId, CreateRequest $createRequest) { // Forum permissions are checked in "CreateRequest" if (!$this->guard->check()) { $captcha = $this->checkCaptcha(); if ($captcha !== true) { return $captcha; } } $poll = null; if ($createRequest->input('add-poll')) { $pollCreateRequest = app()->make('MyBB\\Core\\Http\\Requests\\Poll\\CreateRequest'); $poll = ['question' => $pollCreateRequest->input('question'), 'num_options' => count($pollCreateRequest->options()), 'options' => $pollCreateRequest->options(), 'is_closed' => false, 'is_multiple' => (bool) $pollCreateRequest->input('is_multiple'), 'is_public' => (bool) $pollCreateRequest->input('is_public'), 'end_at' => null, 'max_options' => (int) $pollCreateRequest->input('maxoptions')]; if ($pollCreateRequest->input('endAt')) { $poll['end_at'] = new \DateTime($pollCreateRequest->input('endAt')); } } $topic = $this->topicRepository->create(['title' => $createRequest->input('title'), 'forum_id' => $createRequest->input('forum_id'), 'first_post_id' => 0, 'last_post_id' => 0, 'views' => 0, 'num_posts' => 0, 'content' => $createRequest->input('content'), 'username' => $createRequest->input('username')]); if ($topic) { if ($poll) { $poll['topic_id'] = $topic->id; $this->pollRepository->create($poll); $this->topicRepository->setHasPoll($topic, true); } return redirect()->route('topics.show', ['slug' => $topic->slug, 'id' => $topic->id]); } return redirect()->route('topic.create', ['forumId' => $forumId])->withInput()->withErrors(['content' => trans('errors.error_creating_topic')]); }
/** * @param string $slug * @param int $id * @param CreateRequest $createRequest * * @return \Illuminate\Http\RedirectResponse */ public function postCreate($slug, $id, CreateRequest $createRequest) { $topic = $this->topicRepository->find($id); if (!$topic) { throw new TopicNotFoundException(); } $this->breadcrumbs->setCurrentRoute('polls.create', $topic); $poll = ['topic_id' => $id, 'question' => $createRequest->input('question'), 'num_options' => count($createRequest->options()), 'options' => $createRequest->options(), 'is_closed' => false, 'is_multiple' => (bool) $createRequest->input('is_multiple'), 'is_public' => (bool) $createRequest->input('is_public'), 'end_at' => null, 'max_options' => (int) $createRequest->input('maxoptions')]; if ($createRequest->input('endAt')) { $poll['end_at'] = new \DateTime($createRequest->input('endAt')); } $poll = $this->pollRepository->create($poll); if ($poll) { $this->topicRepository->setHasPoll($topic, true); return redirect()->route('topics.show', ['slug' => $topic->slug, 'id' => $topic->id]); } return redirect()->route('polls.create')->withInput()->withErrors(['error' => trans('error.error_creating_poll')]); }