AdminReportController.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use Illuminate\Http\Request;
  4. use Carbon\Carbon;
  5. use App\{Comment, Like, Media, Profile, Report, Status, User};
  6. use App\Http\Controllers\Controller;
  7. trait AdminReportController
  8. {
  9. public function updateReport(Request $request, $id)
  10. {
  11. $this->validate($request, [
  12. 'action' => 'required|string'
  13. ]);
  14. $action = $request->input('action');
  15. $actions = [
  16. 'ignore',
  17. 'cw',
  18. 'unlist',
  19. 'delete',
  20. 'shadowban',
  21. 'ban'
  22. ];
  23. if(!in_array($action, $actions)) {
  24. return abort(403);
  25. }
  26. $report = Report::findOrFail($id);
  27. $this->handleReportAction($report, $action);
  28. return response()->json(['msg'=> 'Success']);
  29. }
  30. public function handleReportAction(Report $report, $action)
  31. {
  32. $item = $report->reported();
  33. $report->admin_seen = Carbon::now();
  34. switch ($action) {
  35. case 'ignore':
  36. $report->not_interested = true;
  37. break;
  38. case 'cw':
  39. $item->is_nsfw = true;
  40. $item->save();
  41. $report->nsfw = true;
  42. break;
  43. case 'unlist':
  44. $item->visibility = 'unlisted';
  45. $item->save();
  46. break;
  47. case 'delete':
  48. // Todo: fire delete job
  49. $report->admin_seen = null;
  50. break;
  51. case 'shadowban':
  52. // Todo: fire delete job
  53. $report->admin_seen = null;
  54. break;
  55. case 'ban':
  56. // Todo: fire delete job
  57. $report->admin_seen = null;
  58. break;
  59. default:
  60. $report->admin_seen = null;
  61. break;
  62. }
  63. $report->save();
  64. return $this;
  65. }
  66. }