pixelfed/app/Http/Controllers/ContactController.php

67 wiersze
2.0 KiB
PHP

2019-06-06 04:31:25 +00:00
<?php
namespace App\Http\Controllers;
2019-06-07 03:13:52 +00:00
use App\Contact;
2019-06-19 00:49:24 +00:00
use App\Jobs\ContactPipeline\ContactPipeline;
use App\Rules\MaxMultiLine;
2025-12-20 07:39:10 +00:00
use Auth;
use Illuminate\Http\Request;
2019-06-06 04:31:25 +00:00
class ContactController extends Controller
{
2025-12-20 07:39:10 +00:00
public function show(Request $request)
{
abort_if(! config('instance.email') && ! config('instance.contact.enabled'), 404);
2019-06-06 04:31:25 +00:00
2025-12-20 07:39:10 +00:00
return view('site.contact');
}
2019-06-06 04:31:25 +00:00
2025-12-20 07:39:10 +00:00
public function store(Request $request)
{
abort_if(! config('instance.contact.enabled'), 404);
abort_if(! Auth::check(), 403);
$this->validate($request, [
'message' => ['required', 'string', 'min:5', new MaxMultiLine('500')],
'request_response' => 'string|max:3',
]);
2019-06-07 03:13:52 +00:00
2025-12-20 07:39:10 +00:00
$message = $request->input('message');
$request_response = $request->input('request_response') == 'on' ? true : false;
$user = Auth::user();
2019-06-07 03:13:52 +00:00
2025-12-20 07:39:10 +00:00
$max = config('instance.contact.max_per_day');
$contact = Contact::whereUserId($user->id)
->whereDate('created_at', '>', now()->subDays($max))
->count();
2019-06-07 03:13:52 +00:00
2025-12-20 07:39:10 +00:00
if ($contact >= $max) {
return redirect()->back()->with('error', 'You have recently sent a message. Please try again later.');
}
2019-06-07 03:13:52 +00:00
2025-12-20 07:39:10 +00:00
$contact = new Contact;
$contact->user_id = $user->id;
$contact->response_requested = $request_response;
$contact->message = $message;
$contact->response = '';
$contact->save();
2019-06-19 00:49:24 +00:00
2025-12-20 07:39:10 +00:00
ContactPipeline::dispatch($contact);
return redirect()->back()->with('status', 'Success - Your message has been sent to admins.');
}
2024-10-10 08:03:20 +00:00
public function showAdminResponse(Request $request, $id)
{
2025-12-20 07:39:10 +00:00
abort_if(! $request->user(), 404);
2024-10-10 08:03:20 +00:00
$uid = $request->user()->id;
$contact = Contact::whereUserId($uid)
->whereNotNull('response')
->whereNotNull('responded_at')
->findOrFail($id);
2025-12-20 07:39:10 +00:00
2024-10-10 08:03:20 +00:00
return view('site.contact.admin-response', compact('contact'));
}
2019-06-06 04:31:25 +00:00
}