ReportController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Auth;
  4. use Illuminate\Http\Request;
  5. use App\{Avatar, Profile, Report, Status, User};
  6. class ReportController extends Controller
  7. {
  8. protected $profile;
  9. public function __construct()
  10. {
  11. $this->middleware('auth');
  12. }
  13. public function showForm(Request $request)
  14. {
  15. $this->validate($request, [
  16. 'type' => 'required|alpha_dash',
  17. 'id' => 'required|integer|min:1'
  18. ]);
  19. return view('report.form');
  20. }
  21. public function notInterestedForm(Request $request)
  22. {
  23. return view('report.not-interested');
  24. }
  25. public function spamForm(Request $request)
  26. {
  27. return view('report.spam');
  28. }
  29. public function spamCommentForm(Request $request)
  30. {
  31. return view('report.spam.comment');
  32. }
  33. public function spamPostForm(Request $request)
  34. {
  35. return view('report.spam.post');
  36. }
  37. public function spamProfileForm(Request $request)
  38. {
  39. return view('report.spam.profile');
  40. }
  41. public function sensitiveCommentForm(Request $request)
  42. {
  43. return view('report.sensitive.comment');
  44. }
  45. public function sensitivePostForm(Request $request)
  46. {
  47. return view('report.sensitive.post');
  48. }
  49. public function sensitiveProfileForm(Request $request)
  50. {
  51. return view('report.sensitive.profile');
  52. }
  53. public function abusiveCommentForm(Request $request)
  54. {
  55. return view('report.abusive.comment');
  56. }
  57. public function abusivePostForm(Request $request)
  58. {
  59. return view('report.abusive.post');
  60. }
  61. public function abusiveProfileForm(Request $request)
  62. {
  63. return view('report.abusive.profile');
  64. }
  65. public function formStore(Request $request)
  66. {
  67. $this->validate($request, [
  68. 'report' => 'required|alpha_dash',
  69. 'type' => 'required|alpha_dash',
  70. 'id' => 'required|integer|min:1',
  71. 'msg' => 'nullable|string|max:150'
  72. ]);
  73. $profile = Auth::user()->profile;
  74. $reportType = $request->input('report');
  75. $object_id = $request->input('id');
  76. $object_type = $request->input('type');
  77. $msg = $request->input('msg');
  78. $object = null;
  79. $types = ['spam', 'sensitive', 'abusive'];
  80. if(!in_array($reportType, $types)) {
  81. return redirect('/timeline')->with('error', 'Invalid report type');
  82. }
  83. switch ($object_type) {
  84. case 'post':
  85. $object = Status::findOrFail($object_id);
  86. $object_type = 'App\Status';
  87. $exists = Report::whereUserId(Auth::id())
  88. ->whereObjectId($object->id)
  89. ->whereObjectType('App\Status')
  90. ->count();
  91. break;
  92. default:
  93. return redirect('/timeline')->with('error', 'Invalid report type');
  94. break;
  95. }
  96. if($exists !== 0) {
  97. return redirect('/timeline')->with('error', 'You have already reported this!');
  98. }
  99. if($object->profile_id == $profile->id) {
  100. return redirect('/timeline')->with('error', 'You cannot report your own content!');
  101. }
  102. $report = new Report;
  103. $report->profile_id = $profile->id;
  104. $report->user_id = Auth::id();
  105. $report->object_id = $object->id;
  106. $report->object_type = $object_type;
  107. $report->reported_profile_id = $object->profile_id;
  108. $report->type = $request->input('report');
  109. $report->message = $request->input('msg');
  110. $report->save();
  111. return redirect('/timeline')->with('status', 'Report successfully sent!');
  112. }
  113. }