Language.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Classes\Settings;
  3. use App\Models\Settings;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\Cache;
  6. use Illuminate\Support\Facades\Session;
  7. use Illuminate\Support\Facades\Validator;
  8. class Language
  9. {
  10. public function __construct()
  11. {
  12. }
  13. public function updateSettings(Request $request)
  14. {
  15. $validator = Validator::make($request->all(), [
  16. 'autotranslate' => 'string',
  17. 'canClientChangeLanguage' => 'string',
  18. 'defaultLanguage' => 'required|string',
  19. 'languages' => 'required|array',
  20. 'languages.*' => 'required|string',
  21. 'datatable-language' => 'required|string',
  22. ]);
  23. if ($validator->fails()) {
  24. return redirect(route('admin.settings.index').'#language')->with('error', __('Language settings have not been updated!'))->withErrors($validator);
  25. }
  26. $values = [
  27. //SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form)
  28. 'SETTINGS::LOCALE:DEFAULT' => 'defaultLanguage',
  29. 'SETTINGS::LOCALE:DYNAMIC' => 'autotranslate',
  30. 'SETTINGS::LOCALE:CLIENTS_CAN_CHANGE' => 'canClientChangeLanguage',
  31. 'SETTINGS::LOCALE:AVAILABLE' => 'languages',
  32. 'SETTINGS::LOCALE:DATATABLES' => 'datatable-language',
  33. ];
  34. foreach ($values as $key => $value) {
  35. $param = $request->get($value);
  36. if (is_array($param)) {
  37. $param = implode(',', $param);
  38. }
  39. Settings::where('key', $key)->updateOrCreate(['key' => $key], ['value' => $param]);
  40. Cache::forget('setting'.':'.$key);
  41. Session::remove('locale');
  42. }
  43. return redirect(route('admin.settings.index').'#language')->with('success', __('Language settings updated!'));
  44. }
  45. }