/** * Remove the specified resource from storage. * * @param int $id * @return \Response */ public function destroy(Request $request, $id) { $user = auth()->check() ? auth()->user() : null; if (is_null($user)) { return new JsonResponse(['error' => 'not_logged_in']); } if (!$request->has('reason') || trim($request->get('reason')) == '') { return new JsonResponse(['error' => 'invalid_request']); } $reason = trim($request->get('reason')); if ($user->can('delete_video')) { $warnings = []; $vid = Video::find($id); if (!$vid) { return new JsonResponse(['error' => 'video_not_found']); } foreach ($vid->comments as $comment) { $comment->delete(); // delete associated comments } $vid->faved()->detach(); if (!\File::move(public_path() . '/b/' . $vid->file, storage_path() . '/deleted/' . $vid->file)) { $warnings[] = 'Could not move file'; } $vid->delete(); $receiver = $vid->user; if ($user->id != $receiver->id) { Message::send(1, $receiver->id, 'A moderator deleted your video', view('messages.moderation.videodelete', ['video' => $vid, 'reason' => $reason, 'videoinfo' => ['artist' => $vid->interpret, 'songtitle' => $vid->songtitle, 'video_source' => $vid->imgsource, 'category' => $vid->category->name]])); } $log = new ModeratorLog(); $log->user()->associate($user); $log->type = 'delete'; $log->target_type = 'video'; $log->target_id = $id; $log->reason = $reason; $log->save(); return new JsonResponse(['error' => 'null', 'warnings' => $warnings]); } return new JsonResponse(['error' => 'insufficient_permissions']); }
public function ban(Request $request, $username) { if (!($request->has('reason') && $request->has('duration'))) { return redirect()->back()->with('error', 'Invalid Request'); } if (trim($reason = $request->get('reason')) == '') { return redirect()->back()->with('error', 'You need to specify a ban reason'); } $user = auth()->check() ? auth()->user() : null; if (is_null($user)) { return redirect()->back()->with('error', 'Not logged in'); } if (!$user->can('edit_user')) { return redirect()->back()->with('error', 'Insufficient permissions'); } $perm = false; if (($duration = $request->get('duration')) == '-1') { $duration = Carbon::create(0, 0, 0, 0, 0, 0); $perm = true; } else { preg_match('/^(\\d+[yYaA])?\\s*(\\d+M)?\\s*(\\d+[wW])?\\s*(\\d+[dD])?\\s*(\\d+[Hh])?\\s*(\\d+[m])?\\s*(\\d+[sS])?$/m', $duration, $duration); array_shift($duration); $duration = array_map(function ($elem) { return intval(mb_substr($elem, 0, -1)); }, $duration); $duration = Carbon::now()->addYears($duration[0] ?? 0)->addMonths($duration[1] ?? 0)->addWeeks($duration[2] ?? 0)->addDays($duration[3] ?? 0)->addHours($duration[4] ?? 0)->addMinutes($duration[5] ?? 0)->addSeconds($duration[6] ?? 0); } $userToBan = User::whereUsername($username)->first(); if (is_null($user)) { return redirect()->back()->with('error', 'User not found'); } $userToBan->disabled = 1; $userToBan->banreason = $reason; $userToBan->banend = $duration; $userToBan->save(); $log = new ModeratorLog(); $log->user()->associate($user); $log->type = 'ban'; $log->target_type = 'user'; $log->target_id = $userToBan->id; $log->save(); if ($perm) { return redirect()->back()->with('success', 'User ' . $userToBan->username . ' has been permanently banned'); } else { return redirect()->back()->with('success', 'User ' . $userToBan->username . ' has been banned until ' . $userToBan->banend->format('d.m.Y H:i:s') . ' UTC'); } }
public function restore(Request $request, $id) { if (!$request->has('reason')) { return 'invalid_request'; } $reason = trim($request->get('reason')); if ($reason == '') { return 'invalid_request'; } $user = auth()->check() ? auth()->user() : null; if (is_null($user)) { return 'not_logged_in'; } if (!$user->can('delete_comment')) { return 'insufficient_permissions'; } $comment = Comment::withTrashed()->whereId($id)->first(); if (is_null($comment)) { return 'comment_not_found'; } if (!$comment->trashed()) { return 'comment_not_deleted'; } $receiver = $comment->user; $video = $comment->video; $comment->restore(); if ($user->id != $receiver->id) { Message::send(1, $receiver->id, 'A moderator restored your comment', view('messages.moderation.commentrestore', ['video' => $video, 'comment' => $comment, 'reason' => $reason])); } $log = new ModeratorLog(); $log->user()->associate($user); $log->type = 'restore'; $log->target_type = 'comment'; $log->target_id = $id; $log->reason = $reason; $log->save(); return 'success'; }
public function restoreComment($id) { $user = auth()->check() ? auth()->user() : null; if (is_null($user)) { return redirect()->back()->with('error', 'Not logged in'); } if ($user->can('delete_comment')) { Comment::withTrashed()->whereId($id)->restore(); $log = new ModeratorLog(); $log->user()->associate($user); $log->type = 'restore'; $log->target_type = 'comment'; $log->target_id = $id; $log->save(); return redirect()->back()->with('success', 'Comment restored'); } return redirect()->back()->with('error', 'Insufficient permissions'); }