73 lines
2.3 KiB
PHP
73 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\GuestbookEntry;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Contracts\View\View;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Illuminate\Validation\ValidationException;
|
|
use UAParser\Parser;
|
|
|
|
class GuestbookController extends Controller {
|
|
public function show(): View {
|
|
$entries = GuestbookEntry::get();
|
|
$parser = Parser::create();
|
|
|
|
return view('guestbook')
|
|
->with('entries', $entries)
|
|
->with('parser', $parser);
|
|
}
|
|
|
|
/**
|
|
* Creates a new guestbook entry
|
|
*
|
|
* @param Request $request
|
|
* @return RedirectResponse
|
|
* @throws ValidationException
|
|
*/
|
|
public function addEntry(Request $request): RedirectResponse {
|
|
$newEntry = GuestbookEntry::create($request);
|
|
$response = Http::withBasicAuth(config('services.mailjet.key'), config('services.mailjet.secret'))->post('https://api.mailjet.com/v3.1/send', [
|
|
'Messages' => [
|
|
[
|
|
'From' => [
|
|
'Email' => 'wah@wah.moe',
|
|
'Name' => 'wah dot moe'
|
|
],
|
|
'To' => [
|
|
[
|
|
'Email' => 'roscoe@wah.moe',
|
|
'Name' => 'Roscoe D. Wah'
|
|
]
|
|
],
|
|
'Subject' => 'New Guestbook Entry!',
|
|
'HtmlPart' => '
|
|
<style> td { padding: 5px } </style>
|
|
<table border="1">
|
|
<tr><td><b>Name:</b></td><td>'.htmlentities($newEntry->name).'</td></tr>
|
|
<tr><td><b>IP:</b></td><td>'.$newEntry->ip.'</td></tr>
|
|
<tr><td><b>Agent:</b></td><td>'.htmlentities($newEntry->agent).'</td></tr>
|
|
<tr><td><b>Message:</b></td><td>'.htmlentities($newEntry->message).'</td></tr>
|
|
</table>'
|
|
]
|
|
]
|
|
]);
|
|
return back()->with('success', 'Entry submitted successfully!');
|
|
}
|
|
|
|
public function destroy($id): RedirectResponse {
|
|
$entry = GuestbookEntry::findOrFail($id);
|
|
$entry->delete();
|
|
return redirect()->route('guestbook');
|
|
}
|
|
|
|
public function flag($id): RedirectResponse {
|
|
$entry = GuestbookEntry::where("id", $id)->get()->first;
|
|
$entry->update([
|
|
"flagged" => !$entry->flagged,
|
|
]);
|
|
return redirect()->route('guestbook');
|
|
}
|
|
}
|