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

Размер файла: 3.06Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Antimat;
  9. use App\Models\User;
  10. use Exception;
  11. use Illuminate\Http\Request;
  12.  
  13. class AntimatController extends AdminController
  14. {
  15. /**
  16. * Конструктор
  17. */
  18. public function __construct()
  19. {
  20. parent::__construct();
  21.  
  22. if (! isAdmin(User::MODER)) {
  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. if ($request->isMethod('post')) {
  38. $word = utfLower($request->input('word'));
  39.  
  40. $validator
  41. ->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  42. ->notEmpty($word, __('admin.antimat.not_enter_word'));
  43.  
  44. $duplicate = Antimat::query()->where('string', $word)->first();
  45. $validator->empty($duplicate, __('admin.antimat.word_listed'));
  46.  
  47. if ($validator->isValid()) {
  48. Antimat::query()->create([
  49. 'string' => $word
  50. ]);
  51.  
  52. setFlash('success', __('main.record_added_success'));
  53. redirect('/admin/antimat');
  54. } else {
  55. setInput($request->all());
  56. setFlash('danger', $validator->getErrors());
  57. }
  58. }
  59.  
  60. $words = Antimat::query()->get();
  61.  
  62. return view('admin/antimat/index', compact('words'));
  63. }
  64.  
  65. /**
  66. * Удаление слова из списка
  67. *
  68. * @param Request $request
  69. * @param Validator $validator
  70. *
  71. * @return void
  72. * @throws Exception
  73. */
  74. public function delete(Request $request, Validator $validator): void
  75. {
  76. $id = int($request->input('id'));
  77.  
  78. $validator->equal($request->input('token'), $_SESSION['token'], __('validator.token'));
  79.  
  80. $word = Antimat::query()->find($id);
  81. $validator->notEmpty($word, __('main.record_not_found'));
  82.  
  83. if ($validator->isValid()) {
  84. $word->delete();
  85.  
  86. setFlash('success', __('main.record_deleted_success'));
  87. } else {
  88. setFlash('danger', $validator->getErrors());
  89. }
  90.  
  91. redirect('/admin/antimat');
  92. }
  93.  
  94. /**
  95. * Очистка списка слов
  96. *
  97. * @param Request $request
  98. * @param Validator $validator
  99. *
  100. * @return void
  101. */
  102. public function clear(Request $request, Validator $validator): void
  103. {
  104. $validator
  105. ->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  106. ->true(isAdmin(User::BOSS), __('main.page_only_owner'));
  107.  
  108. if ($validator->isValid()) {
  109. Antimat::query()->truncate();
  110.  
  111. setFlash('success', __('main.records_cleared_success'));
  112. } else {
  113. setFlash('danger', $validator->getErrors());
  114. }
  115.  
  116. redirect('/admin/antimat');
  117. }
  118. }