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

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