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

Размер файла: 1.92Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Rule;
  9. use App\Models\User;
  10. use Illuminate\Http\Request;
  11.  
  12. class RuleController extends AdminController
  13. {
  14. /**
  15. * Конструктор
  16. */
  17. public function __construct()
  18. {
  19. parent::__construct();
  20.  
  21. if (! isAdmin(User::ADMIN)) {
  22. abort(403, __('errors.forbidden'));
  23. }
  24. }
  25.  
  26. /**
  27. * Главная страница
  28. *
  29. * @return string
  30. */
  31. public function index(): string
  32. {
  33. $rules = Rule::query()->first();
  34.  
  35. $replace = [
  36. '%SITENAME%' => setting('title'),
  37. ];
  38.  
  39. if ($rules) {
  40. $rules->text = str_replace(array_keys($replace), $replace, $rules->text);
  41. }
  42.  
  43. return view('admin/rules/index', compact('rules'));
  44. }
  45.  
  46. /**
  47. * Редактирование правил
  48. *
  49. * @param Request $request
  50. * @param Validator $validator
  51. *
  52. * @return string
  53. */
  54. public function edit(Request $request, Validator $validator): string
  55. {
  56. $rules = Rule::query()->firstOrNew([]);
  57.  
  58. if ($request->isMethod('post')) {
  59. $msg = $request->input('msg');
  60.  
  61. $validator
  62. ->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  63. ->notEmpty($msg, ['msg' => __('admin.rules.rules_empty')]);
  64.  
  65. if ($validator->isValid()) {
  66. $rules->fill([
  67. 'text' => $msg,
  68. 'created_at' => SITETIME,
  69. ])->save();
  70.  
  71. setFlash('success', __('admin.rules.rules_success_saved'));
  72. redirect('/admin/rules');
  73. } else {
  74. setInput($request->all());
  75. setFlash('danger', $validator->getErrors());
  76. }
  77. }
  78.  
  79. return view('admin/rules/edit', compact('rules'));
  80. }
  81. }