Exemple #1
0
 /**
  * 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']);
 }
Exemple #2
0
 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');
     }
 }
Exemple #3
0
 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');
 }