Files
Atomcms-edit/app/Http/Controllers/User/PreferencesController.php
T

65 lines
2.0 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;
class PreferencesController extends Controller
{
public function edit(): View
{
$user = Auth::user();
$preferences = $user->preferences ?? $this->getDefaultPreferences();
return view('user.settings.preferences', [
'preferences' => $preferences,
]);
}
public function update(Request $request): RedirectResponse
{
$user = Auth::user();
$validated = $request->validate([
'radio_auto_play' => 'sometimes|boolean',
'radio_shouts' => 'sometimes|boolean',
'radio_notifications' => 'sometimes|boolean',
'friend_requests' => 'sometimes|boolean',
'room_invites' => 'sometimes|boolean',
'email_notifications' => 'sometimes|boolean',
'client_open_mode' => 'sometimes|in:same,new_window',
'client_volume' => 'sometimes|integer|min:0|max:100',
'compact_mode' => 'sometimes|boolean',
'hide_online' => 'sometimes|boolean',
'default_page' => 'sometimes|in:me,hotel,community,shop',
]);
$preferences = array_merge($this->getDefaultPreferences(), $validated);
$user->preferences = $preferences;
$user->save();
return redirect()->route('settings.preferences.show')->with('success', __('Preferences updated successfully'));
}
private function getDefaultPreferences(): array
{
return [
'radio_auto_play' => false,
'radio_shouts' => true,
'radio_notifications' => true,
'friend_requests' => true,
'room_invites' => true,
'email_notifications' => false,
'client_open_mode' => 'same',
'client_volume' => 50,
'compact_mode' => false,
'hide_online' => false,
'default_page' => 'me',
];
}
}