/** * Handles the creation of a new thread or reply. * * @param \App\Http\Requests\PostRequest $request * @param Board $board * @param Post|null $thread * @return Response (redirects to the thread view) */ public function putThread(PostRequest $request, Board $board, Post $thread = null) { // Create the post. $post = new Post($request->all()); $post->submitTo($board, $thread); // Log staff posts. if ($post->capcode_id) { $this->log('log.post.capcode', $post, ["board_id" => $post->board_id, "board_uri" => $post->board_uri, "capcode" => $post->capcode->getCapcodeName(), "role" => $post->capcode->role]); } $input = $request->only('updatesOnly', 'updateHtml', 'updatedSince'); if ($request->wantsJson()) { $updatedSince = Carbon::createFromTimestamp($request->input('updatedSince', Carbon::now()->subMinutes(4)->timestamp)); $includeHTML = isset($input['updateHtml']); $posts = Post::getUpdates($updatedSince, $board, $thread, $includeHTML); $post->setAppendHTML($includeHTML); $posts->push($post); $posts->sortBy('board_id'); return $posts; } // Redirect to the new post or thread. if ($post->reply_to_board_id) { return redirect("{$board->board_uri}/thread/{$post->reply_to_board_id}#{$post->board_id}"); } else { return redirect("{$board->board_uri}/thread/{$post->board_id}#{$post->board_id}"); } }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Requests\PostRequest $request, $id) { $post = Posts::where('id', $id)->firstOrFail(); if (!empty($request->file('image')) && $request->file('image')->isValid()) { $destinationPath = public_path() . "/images/"; // upload path $extension = $request->file('image')->getClientOriginalExtension(); // getting image extension $fileName = $post->url . '.' . $extension; // renameing image $request->file('image')->move($destinationPath, $fileName); // uploading file to given path $post->image = $fileName; } $post->fill($request->only(['title', 'post'])); $post->save(); Posts::findOrFail($id)->tags()->detach(); $tags = []; foreach ($this->getTags($request->input('tags')) as $tag) { if (!empty($tag)) { $isFind = Tags::where('name', $tag)->get()->count(); if ($isFind == 0) { $tags[] = new Tags(['name' => $tag]); } else { $tags[] = Tags::where('name', $tag)->first(); } } } $post->tags()->saveMany($tags); return back(); }