get(); //returns all Pending Torrents $postponed = Torrent::postponed()->get(); $rejected = Torrent::rejected()->get(); $modder = Torrent::where('status', '=', '0')->count(); //DB::table('torrents')->where('status', '=', '0')->count(); return view('Staff.torrent.moderation', compact(['current', 'pending', 'postponed', 'rejected', 'modder'])); } /** * Torrent Moderation -> approve * * @param $slug Slug of the torrent * @param $id Id of the torrent */ public function approve($slug, $id) { Torrent::approve($id); return redirect()->route('moderation')->with(Toastr::success('Torrent Approved', 'Yay!', ['options'])); } /** * Torrent Moderation -> postpone * * @param $request Request containing torrent's id, slug and rejection message */ public function postpone(Request $request) { $v = Validator::make($request->all(), [ 'id' => "required|exists:torrents", 'slug' => "required|exists:torrents", 'message' => "required|alpha_num" ]); if ($v) { $user = Auth::user(); $torrent = Torrent::postponed()->find($request->id)->get(); $torrent->markPostponed(); PrivateMessage::create(['sender' => $user->id, 'receiver' => $torrent->user_id, 'subject' => "Your upload has been postponed by {$user->username}", 'message' => "Greating user, \n\n Your upload {$torrent->username} has been postponed. Please see below the message from the staff member. \n\n".$message]); return Redirect::route('moderation')->with(Toastr::success('Torrent Postpones', 'Postponed', ['options'])); } else { $errors = ""; foreach ($v->errors()->all() as $error) { $errors .= $error . "\n"; } \Log::notice("Rejection of torrent failed due to: \n\n".$errors); return Redirect::route('moderation')->with(Toastr::error('Unable to Reject torrent', 'Reject', ['options'])); } } /** * Torrent Moderation -> reject * * @param $request Request containing torrent's id, slug and rejection message */ public function reject(Request $request) { $v = Validator::make($request->all(), [ 'id' => "required|exists:torrents", 'slug' => "required|exists:torrents", 'message' => "required|alpha_num" ]); if ($v) { $user = Auth::user(); $torrent = Torrent::rejected()->find($request->id)->get(); $torrent->markPostponed(); PrivateMessage::create(['sender' => $user->id, 'receiver' => $torrent->user_id, 'subject' => "Your upload has been rejected by {$user->username}", 'message' => "Greating user, \n\n Your upload {$torrent->username} has been rejected. Please see below the message from the staff member. \n\n".$request->message]); return Redirect::route('moderation')->with(Toastr::success('Torrent Rejected', 'Reject', ['options'])); } else { $errors = ""; foreach ($v->errors()->all() as $error) { $errors .= $error . "\n"; } \Log::notice("Rejection of torrent failed due to: \n\n".$errors); return Redirect::route('moderation')->with(Toastr::error('Unable to Reject torrent', 'Reject', ['options'])); } } /** * Resets the filled and approved attributes on a given request * @method resetRequest * */ public function resetRequest($id) { $user = Auth::user(); // reset code here if ($user->group->is_modo) { $request = Requests::findOrFail($id); $request->filled_by = null; $request->filled_when = null; $request->filled_hash = null; $request->approved_by = null; $request->approved_when = null; $request->save(); return redirect()->route('request', ['id' => $id])->with(Toastr::success("The request has been reset!", 'Yay!', ['options'])); } else { return redirect()->route('request', ['id' => $id])->with(Toastr::error("You don't have access to this operation!", 'Whoops!', ['options'])); } return redirect()->route('requests')->with(Toastr::error("Unable to find request!", 'Whoops!', ['options'])); } }