Просмотр файла app/Http/Controllers/Admin/SettingController.php

Размер файла: 2.75Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Setting;
  9. use Illuminate\Http\RedirectResponse;
  10. use Illuminate\Http\Request;
  11. use Illuminate\View\View;
  12.  
  13. class SettingController extends AdminController
  14. {
  15. /**
  16. * Главная страница
  17. *
  18. * @param Request $request
  19. * @param Validator $validator
  20. *
  21. * @return View|RedirectResponse
  22. */
  23. public function index(Request $request, Validator $validator)
  24. {
  25. $act = $request->input('act', 'mains');
  26.  
  27. if (! in_array($act, Setting::getActions(), true)) {
  28. abort(404, __('settings.page_invalid'));
  29. }
  30.  
  31. if ($request->isMethod('post')) {
  32. $sets = $request->input('sets');
  33. $mods = $request->input('mods');
  34. $opt = $request->input('opt');
  35.  
  36. $validator->equal($request->input('_token'), csrf_token(), ['msg' => __('validator.token')])
  37. ->notEmpty($sets, ['sets' => __('settings.settings_empty')]);
  38.  
  39. foreach ($sets as $name => $value) {
  40. if (empty($opt[$name]) || ! empty($value)) {
  41. $validator->length($sets[$name], 1, 255, ['sets[' . $name . ']' => __('settings.field_required', ['field' => $name])]);
  42. }
  43. }
  44.  
  45. if ($validator->isValid()) {
  46. foreach ($sets as $name => $value) {
  47. if (isset($mods[$name])) {
  48. $value *= $mods[$name];
  49. }
  50.  
  51. Setting::query()->where('name', $name)->update(['value' => $value]);
  52. }
  53.  
  54. clearCache('settings');
  55. setFlash('success', __('settings.settings_success_saved'));
  56.  
  57. return redirect('admin/settings?act=' . $act);
  58. }
  59.  
  60. setInput($request->all());
  61. setFlash('danger', $validator->getErrors());
  62. }
  63.  
  64. $counters = [
  65. __('main.disable'),
  66. __('settings.hosts_hosts_all'),
  67. __('settings.hits_hits_all'),
  68. __('settings.hits_hosts'),
  69. __('settings.hits_all_hosts_all'),
  70. __('settings.graphical'),
  71. ];
  72.  
  73. $statsite = [
  74. __('settings.site_open'),
  75. __('settings.site_closed_guest'),
  76. __('settings.site_closed_all'),
  77. ];
  78.  
  79. $protects = [
  80. 'graphical' => __('settings.graphical'),
  81. 'animated' => __('settings.animated'),
  82. 'recaptcha_v2' => 'Recaptcha v2',
  83. 'recaptcha_v3' => 'Recaptcha v3',
  84. ];
  85.  
  86. $settings = Setting::query()->pluck('value', 'name')->all();
  87.  
  88. return view('admin/settings/index', compact('settings', 'act', 'counters', 'statsite', 'protects'));
  89. }
  90. }