|
@@ -2,12 +2,25 @@
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
+use Auth;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
|
|
+use App\{Avatar, Profile, Report, Status, User};
|
|
|
|
|
|
class ReportController extends Controller
|
|
class ReportController extends Controller
|
|
{
|
|
{
|
|
|
|
+ protected $profile;
|
|
|
|
+
|
|
|
|
+ public function __construct()
|
|
|
|
+ {
|
|
|
|
+ $this->middleware('auth');
|
|
|
|
+ }
|
|
|
|
+
|
|
public function showForm(Request $request)
|
|
public function showForm(Request $request)
|
|
{
|
|
{
|
|
|
|
+ $this->validate($request, [
|
|
|
|
+ 'type' => 'required|alpha_dash',
|
|
|
|
+ 'id' => 'required|integer|min:1'
|
|
|
|
+ ]);
|
|
return view('report.form');
|
|
return view('report.form');
|
|
}
|
|
}
|
|
|
|
|
|
@@ -35,4 +48,92 @@ class ReportController extends Controller
|
|
{
|
|
{
|
|
return view('report.spam.profile');
|
|
return view('report.spam.profile');
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public function sensitiveCommentForm(Request $request)
|
|
|
|
+ {
|
|
|
|
+ return view('report.sensitive.comment');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function sensitivePostForm(Request $request)
|
|
|
|
+ {
|
|
|
|
+ return view('report.sensitive.post');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function sensitiveProfileForm(Request $request)
|
|
|
|
+ {
|
|
|
|
+ return view('report.sensitive.profile');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function abusiveCommentForm(Request $request)
|
|
|
|
+ {
|
|
|
|
+ return view('report.abusive.comment');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function abusivePostForm(Request $request)
|
|
|
|
+ {
|
|
|
|
+ return view('report.abusive.post');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function abusiveProfileForm(Request $request)
|
|
|
|
+ {
|
|
|
|
+ return view('report.abusive.profile');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function formStore(Request $request)
|
|
|
|
+ {
|
|
|
|
+ $this->validate($request, [
|
|
|
|
+ 'report' => 'required|alpha_dash',
|
|
|
|
+ 'type' => 'required|alpha_dash',
|
|
|
|
+ 'id' => 'required|integer|min:1',
|
|
|
|
+ 'msg' => 'nullable|string|max:150'
|
|
|
|
+ ]);
|
|
|
|
+
|
|
|
|
+ $profile = Auth::user()->profile;
|
|
|
|
+ $reportType = $request->input('report');
|
|
|
|
+ $object_id = $request->input('id');
|
|
|
|
+ $object_type = $request->input('type');
|
|
|
|
+ $msg = $request->input('msg');
|
|
|
|
+ $object = null;
|
|
|
|
+ $types = ['spam', 'sensitive', 'abusive'];
|
|
|
|
+
|
|
|
|
+ if(!in_array($reportType, $types)) {
|
|
|
|
+ return redirect('/timeline')->with('error', 'Invalid report type');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch ($object_type) {
|
|
|
|
+ case 'post':
|
|
|
|
+ $object = Status::findOrFail($object_id);
|
|
|
|
+ $object_type = 'App\Status';
|
|
|
|
+ $exists = Report::whereUserId(Auth::id())
|
|
|
|
+ ->whereObjectId($object->id)
|
|
|
|
+ ->whereObjectType('App\Status')
|
|
|
|
+ ->count();
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ default:
|
|
|
|
+ return redirect('/timeline')->with('error', 'Invalid report type');
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($exists !== 0) {
|
|
|
|
+ return redirect('/timeline')->with('error', 'You have already reported this!');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($object->profile_id == $profile->id) {
|
|
|
|
+ return redirect('/timeline')->with('error', 'You cannot report your own content!');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $report = new Report;
|
|
|
|
+ $report->profile_id = $profile->id;
|
|
|
|
+ $report->user_id = Auth::id();
|
|
|
|
+ $report->object_id = $object->id;
|
|
|
|
+ $report->object_type = $object_type;
|
|
|
|
+ $report->reported_profile_id = $object->profile_id;
|
|
|
|
+ $report->type = $request->input('report');
|
|
|
|
+ $report->message = $request->input('msg');
|
|
|
|
+ $report->save();
|
|
|
|
+
|
|
|
|
+ return redirect('/timeline')->with('status', 'Report successfully sent!');
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|