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

Размер файла: 4.69Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Guestbook;
  9. use App\Models\User;
  10. use Illuminate\Http\Request;
  11.  
  12. class GuestbookController extends AdminController
  13. {
  14. /**
  15. * Главная страница
  16. */
  17. public function index()
  18. {
  19. $posts = Guestbook::query()
  20. ->orderByDesc('created_at')
  21. ->with('user', 'editUser')
  22. ->paginate(setting('bookpost'));
  23.  
  24. return view('admin/guestbook/index', compact('posts'));
  25. }
  26.  
  27. /**
  28. * Редактирование сообщения
  29. *
  30. * @param int $id
  31. * @param Request $request
  32. * @param Validator $validator
  33. *
  34. * @return string
  35. */
  36. public function edit(int $id, Request $request, Validator $validator): string
  37. {
  38. $page = int($request->input('page'));
  39. $post = Guestbook::with('user')->find($id);
  40.  
  41. if (! $post) {
  42. abort(404, __('main.message_not_found'));
  43. }
  44.  
  45. if ($request->isMethod('post')) {
  46. $msg = $request->input('msg');
  47.  
  48. $validator->equal($request->input('token'), $_SESSION['token'], ['msg' => __('validator.token')])
  49. ->length($msg, 5, setting('guesttextlength'), ['msg' => __('validator.text')]);
  50.  
  51. if ($validator->isValid()) {
  52. $msg = antimat($msg);
  53.  
  54. $post->update([
  55. 'text' => $msg,
  56. 'edit_user_id' => getUser('id'),
  57. 'updated_at' => SITETIME,
  58. ]);
  59.  
  60. setFlash('success', __('main.message_edited_success'));
  61. redirect('/admin/guestbook?page=' . $page);
  62. } else {
  63. setInput($request->all());
  64. setFlash('danger', $validator->getErrors());
  65. }
  66. }
  67.  
  68. return view('admin/guestbook/edit', compact('post', 'page'));
  69. }
  70.  
  71. /**
  72. * Ответ на сообщение
  73. *
  74. * @param int $id
  75. * @param Request $request
  76. * @param Validator $validator
  77. *
  78. * @return string
  79. */
  80. public function reply(int $id, Request $request, Validator $validator): string
  81. {
  82. $page = int($request->input('page'));
  83. $post = Guestbook::with('user')->find($id);
  84.  
  85. if (! $post) {
  86. abort(404, __('main.message_not_found'));
  87. }
  88.  
  89. if ($request->isMethod('post')) {
  90. $reply = $request->input('reply');
  91.  
  92. $validator->equal($request->input('token'), $_SESSION['token'], ['msg' => __('validator.token')])
  93. ->length($reply, 5, setting('guesttextlength'), ['msg' => __('validator.text')]);
  94.  
  95. if ($validator->isValid()) {
  96. $post->update([
  97. 'reply' => $reply,
  98. ]);
  99.  
  100. setFlash('success', __('guestbook.answer_success_added'));
  101. redirect('/admin/guestbook?page=' . $page);
  102. } else {
  103. setInput($request->all());
  104. setFlash('danger', $validator->getErrors());
  105. }
  106. }
  107.  
  108. return view('admin/guestbook/reply', compact('post', 'page'));
  109. }
  110.  
  111. /**
  112. * Удаление сообщений
  113. *
  114. * @param Request $request
  115. * @param Validator $validator
  116. *
  117. * @return void
  118. */
  119. public function delete(Request $request, Validator $validator): void
  120. {
  121. $page = int($request->input('page', 1));
  122. $del = intar($request->input('del'));
  123.  
  124. $validator->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  125. ->true($del, __('validator.deletion'));
  126.  
  127. if ($validator->isValid()) {
  128. Guestbook::query()->whereIn('id', $del)->delete();
  129.  
  130. clearCache('statGuestbook');
  131. setFlash('success', __('main.messages_deleted_success'));
  132. } else {
  133. setFlash('danger', $validator->getErrors());
  134. }
  135.  
  136. redirect('/admin/guestbook?page=' . $page);
  137. }
  138.  
  139. /**
  140. * Очистка сообщений
  141. *
  142. * @param Request $request
  143. * @param Validator $validator
  144. *
  145. * @return void
  146. */
  147. public function clear(Request $request, Validator $validator): void
  148. {
  149. $validator
  150. ->equal($request->input('token'), $_SESSION['token'], __('validator.token'))
  151. ->true(isAdmin(User::BOSS), __('main.page_only_owner'));
  152.  
  153. if ($validator->isValid()) {
  154. Guestbook::query()->truncate();
  155. clearCache('statGuestbook');
  156.  
  157. setFlash('success', __('guestbook.messages_success_cleared'));
  158. } else {
  159. setFlash('danger', $validator->getErrors());
  160. }
  161.  
  162. redirect('/admin/guestbook');
  163. }
  164. }